1.7 KiB
1.7 KiB
Implementation Plan
Checklist
- Capture a parity baseline before product-code edits.
- Add
blender/osmassets/fountain.pywith the current fountain assembly logic. - Import the module in
blender/generate_scene.py. - Remove inline
add_fountain()fromgenerate_scene.py. - Replace the call site with
fountain.assemble(...). - Run Python validation:
python3 -m py_compile blender/osmassets/fountain.pypython3 -m py_compile blender/generate_scene.pypython3 -m unittest blender/tests/test_pure.py
- Capture parity after the refactor.
- Compare before/after parity snapshots and inspect any non-ignored diff.
- Update
.trellis/specordocs/changelog.mdonly if the work reveals a durable new constraint or user-visible change. - Commit, archive the task, and record the journal entry.
Validation Commands
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.
mathusage may move with the function; remove the import fromgenerate_scene.pyonly if no remaining code uses it.- Parity is mandatory because this is a pure refactor of bpy-layer scene generation.