Refactor fountain assembly module
This commit is contained in:
40
.trellis/tasks/08-03-extract-fountain-module/implement.md
Normal file
40
.trellis/tasks/08-03-extract-fountain-module/implement.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# Implementation Plan
|
||||
|
||||
## Checklist
|
||||
|
||||
1. Capture a parity baseline before product-code edits.
|
||||
2. Add `blender/osmassets/fountain.py` with the current fountain assembly logic.
|
||||
3. Import the module in `blender/generate_scene.py`.
|
||||
4. Remove inline `add_fountain()` from `generate_scene.py`.
|
||||
5. Replace the call site with `fountain.assemble(...)`.
|
||||
6. Run Python validation:
|
||||
- `python3 -m py_compile blender/osmassets/fountain.py`
|
||||
- `python3 -m py_compile blender/generate_scene.py`
|
||||
- `python3 -m unittest blender/tests/test_pure.py`
|
||||
7. Capture parity after the refactor.
|
||||
8. Compare before/after parity snapshots and inspect any non-ignored diff.
|
||||
9. Update `.trellis/spec` or `docs/changelog.md` only if the work reveals a
|
||||
durable new constraint or user-visible change.
|
||||
10. Commit, archive the task, and record the journal entry.
|
||||
|
||||
## Validation Commands
|
||||
|
||||
```bash
|
||||
node scripts/parity.js capture fountain-module-before --stages blender,cesium
|
||||
python3 -m py_compile blender/osmassets/fountain.py
|
||||
python3 -m py_compile blender/generate_scene.py
|
||||
python3 -m unittest blender/tests/test_pure.py
|
||||
node scripts/parity.js capture fountain-module-after --stages blender,cesium
|
||||
node scripts/parity.js compare fountain-module-before fountain-module-after
|
||||
```
|
||||
|
||||
## Risk Points
|
||||
|
||||
- `link_object_to_collection()` must be used the same way as before so object
|
||||
collection membership stays unchanged.
|
||||
- The basin custom property must remain on the basin object only.
|
||||
- Droplet order and names must stay stable.
|
||||
- `math` usage may move with the function; remove the import from
|
||||
`generate_scene.py` only if no remaining code uses it.
|
||||
- Parity is mandatory because this is a pure refactor of bpy-layer scene
|
||||
generation.
|
||||
Reference in New Issue
Block a user