Dependencies:
#1115 [E5-F1] ──┐
├──► #THIS [E5-F4]
#1117 [E5-F3] ──┘
Summary
Generate implementation issues for feature E5-F4: Builder, Factory, and Exports.
Create CondensationLatentHeatBuilder following the established builder pattern, register the new strategy in CondensationFactory, and update all namespace exports so the new condensation strategy is accessible through the particula.dynamics public API.
Feature Plan
Document: adw-docs/dev-plans/features/E5-F4-builder-factory-exports.md
Parent Epic: E5: Non-Isothermal Condensation with Latent Heat (adw-docs/dev-plans/epics/E5-non-isothermal-condensation.md)
Phases to Generate
| Phase |
Description |
Size |
| E5-F4-P1 |
Create CondensationLatentHeatBuilder with tests |
S (~60 LOC) |
| E5-F4-P2 |
Register in factory and update exports with tests |
S (~40 LOC) |
Dependencies
ADW Instructions
When processing this issue:
- Read the feature plan document:
adw-docs/dev-plans/features/E5-F4-builder-factory-exports.md
- Read the parent epic for context:
adw-docs/dev-plans/epics/E5-non-isothermal-condensation.md
- For each phase in the Phase Checklist (E5-F4-P1 through E5-F4-P2), create an implementation issue with:
- Full technical details from the feature plan
- Specific file paths from the feature plan's scope section
- Test file paths (co-located in module
tests/ directories)
- Co-located testing: tests ship with implementation in every phase
- Coverage target: 80-85% per phase
- Set dependency chain: E5-F4-P1 → E5-F4-P2
- Label all phases with
agent, blocked, type:complete, model:default
Files to Create/Modify
- Create:
particula/dynamics/condensation/condensation_builder/condensation_latent_heat_builder.py — builder class
- Modify:
particula/dynamics/condensation/condensation_builder/__init__.py — export new builder
- Modify:
particula/dynamics/condensation/condensation_factories.py (currently 49 lines) — add "latent_heat" type mapping
- Modify:
particula/dynamics/condensation/__init__.py (currently 22 lines) — export CondensationLatentHeat and CondensationLatentHeatBuilder
- Modify:
particula/dynamics/__init__.py (currently 169 lines) — re-export new symbols
- Create or Modify:
particula/dynamics/condensation/tests/condensation_builder_test.py — builder tests
- Modify:
particula/dynamics/condensation/tests/condensation_factories_test.py (currently 117 lines) — factory tests
Testing Strategy
Unit Tests
| Test File |
Phase |
Coverage Target |
particula/dynamics/condensation/tests/condensation_builder_test.py |
P1 |
Builder class |
particula/dynamics/condensation/tests/condensation_factories_test.py |
P2 |
Factory + exports |
Key Test Cases
- Builder with strategy: Pass
LatentHeatStrategy object, verify it propagates to built CondensationLatentHeat
- Builder with constant: Pass
latent_heat=2.5e6, verify ConstantLatentHeat wrapper is created
- Builder missing params: Omit required param, expect
ValueError
- Factory creation:
factory.get_strategy("latent_heat", params) returns CondensationLatentHeat
- Factory invalid type:
factory.get_strategy("bad_type", {}) raises error
- Import smoke tests:
from particula.dynamics import CondensationLatentHeat, CondensationLatentHeatBuilder
Dependencies:
#1115 [E5-F1] ──┐
├──► #THIS [E5-F4]
#1117 [E5-F3] ──┘
Summary
Generate implementation issues for feature E5-F4: Builder, Factory, and Exports.
Create
CondensationLatentHeatBuilderfollowing the established builder pattern, register the new strategy inCondensationFactory, and update all namespace exports so the new condensation strategy is accessible through theparticula.dynamicspublic API.Feature Plan
Document:
adw-docs/dev-plans/features/E5-F4-builder-factory-exports.mdParent Epic: E5: Non-Isothermal Condensation with Latent Heat (
adw-docs/dev-plans/epics/E5-non-isothermal-condensation.md)Phases to Generate
CondensationLatentHeatBuilderwith testsDependencies
BuilderABCfromparticula.abc_builder,BuilderMolarMassMixinfromparticula.builder_mixin,BuilderDiffusionCoefficientMixin/BuilderAccommodationCoefficientMixin/BuilderUpdateGasesMixinfromcondensation_builder_mixin.py(94 lines),CondensationIsothermalBuilder(60 lines) as pattern templateADW Instructions
When processing this issue:
adw-docs/dev-plans/features/E5-F4-builder-factory-exports.mdadw-docs/dev-plans/epics/E5-non-isothermal-condensation.mdtests/directories)agent,blocked,type:complete,model:defaultFiles to Create/Modify
particula/dynamics/condensation/condensation_builder/condensation_latent_heat_builder.py— builder classparticula/dynamics/condensation/condensation_builder/__init__.py— export new builderparticula/dynamics/condensation/condensation_factories.py(currently 49 lines) — add"latent_heat"type mappingparticula/dynamics/condensation/__init__.py(currently 22 lines) — exportCondensationLatentHeatandCondensationLatentHeatBuilderparticula/dynamics/__init__.py(currently 169 lines) — re-export new symbolsparticula/dynamics/condensation/tests/condensation_builder_test.py— builder testsparticula/dynamics/condensation/tests/condensation_factories_test.py(currently 117 lines) — factory testsTesting Strategy
Unit Tests
particula/dynamics/condensation/tests/condensation_builder_test.pyparticula/dynamics/condensation/tests/condensation_factories_test.pyKey Test Cases
LatentHeatStrategyobject, verify it propagates to builtCondensationLatentHeatlatent_heat=2.5e6, verifyConstantLatentHeatwrapper is createdValueErrorfactory.get_strategy("latent_heat", params)returnsCondensationLatentHeatfactory.get_strategy("bad_type", {})raises errorfrom particula.dynamics import CondensationLatentHeat, CondensationLatentHeatBuilder