Parent
#201
Context
Domain algorithms are deep; modules are monoliths:
| File |
~LOC |
Clusters |
movement.rs |
1797 |
params, plan_aod_movement, duals/pack, geometry R1–R3, banks, legality |
compaction.rs |
1124 |
deps/ASAP, merge classes, geometry verify, force_merge |
zoned.rs |
1049 |
ZoneSpec/arch, cost, schedule_zoned, placer modes |
Helpers like layer_has_entangle / geometry predicates are copy-pasted across files. Goal is navigability and locality, not algorithm rewrites.
What to build
Split by interface without changing planner behavior:
- geometry / R1–R3 checkers (shared)
- conflict / bank packing
- placer search vs cost evaluation
- compaction merge policy vs verify
Share layer predicates. Keep public entrypoints (plan_aod_movement, schedule_zoned, compact_schedule) stable.
Acceptance criteria
Blocked by
Prefer landing ZoneKind (#212) first if zone types move. Not blocked on #211 unless files are rewritten there.
Related
#201, #212, ADR-0008
Parent
#201
Context
Domain algorithms are deep; modules are monoliths:
movement.rscompaction.rszoned.rsHelpers like
layer_has_entangle/ geometry predicates are copy-pasted across files. Goal is navigability and locality, not algorithm rewrites.What to build
Split by interface without changing planner behavior:
Share layer predicates. Keep public entrypoints (
plan_aod_movement,schedule_zoned,compact_schedule) stable.Acceptance criteria
Blocked by
Prefer landing ZoneKind (#212) first if zone types move. Not blocked on #211 unless files are rewritten there.
Related
#201, #212, ADR-0008