@@ -444,3 +444,49 @@ Communication
444444Autonomy
445445
446446Never reverse this order.
447+
448+ ---
449+
450+ # Architecture Freeze
451+
452+ The planner architecture is stable by default, not immutable.
453+
454+ ** Preference order:**
455+
456+ 1 . Improve implementation (bugs, UX, determinism).
457+ 2 . Collect telemetry.
458+ 3 . Adjust behavior within current layers.
459+ 4 . Introduce new architecture only when production evidence demonstrates a recurring limitation not solvable within the current design.
460+
461+ # Architecture Change Litmus Test
462+
463+ Before introducing a new architectural abstraction, answer:
464+
465+ 1 . ** Can this be implemented within the existing architecture?**
466+ * If yes, keep it as an implementation change.
467+ 2 . If no, ** what production evidence demonstrates the limitation?**
468+ 3 . ** Why is the current architecture insufficient?**
469+ 4 . ** What measurable outcome should improve?**
470+ 5 . ** What evidence would tell us the new abstraction was unnecessary?**
471+
472+ # Architecture Promotion Rules
473+
474+ Do not add new abstractions without production evidence.
475+
476+ | Candidate change | Promote only if |
477+ | ---| ---|
478+ | ` planner_metrics.h ` | Metrics included by 3+ independent modules |
479+ | ` unique_ptr<PlannerShadowMetrics> ` | ExecutionResult becomes the lifetime owner |
480+ | Split PlannerLoop | Loop complexity consistently slows development |
481+ | New planner abstraction | Production telemetry identifies a recurring limitation not solvable within current layers |
482+
483+ # Rollout Rhythm
484+
485+ Every architectural change follows this sequence:
486+
487+ 1 . Build the capability.
488+ 2 . Run in shadow mode alongside legacy.
489+ 3 . Collect production telemetry.
490+ 4 . Compare with legacy path.
491+ 5 . Promote only if it demonstrates value.
492+ 6 . Remove old implementation.
0 commit comments