docs: update specification — fix invariant precedence chain (3-tier→4-tier) and document non_overridable flag #3268

Merged
freemo merged 1 commits from spec/update-m4-invariant-precedence-non-overridable into master 2026-04-05 21:12:59 +00:00

1 Commits

Author SHA1 Message Date
freemo bb97f87a31 docs(spec): fix invariant precedence chain (3-tier->4-tier) and document non_overridable flag
CI / lint (pull_request) Successful in 20s
CI / typecheck (pull_request) Successful in 48s
CI / quality (pull_request) Successful in 33s
CI / security (pull_request) Successful in 1m4s
CI / build (pull_request) Successful in 19s
CI / helm (pull_request) Successful in 23s
CI / unit_tests (pull_request) Successful in 6m32s
CI / e2e_tests (pull_request) Successful in 17m32s
CI / integration_tests (pull_request) Successful in 23m8s
CI / docker (pull_request) Successful in 1m41s
CI / coverage (pull_request) Successful in 10m28s
CI / status-check (pull_request) Successful in 1s
CI / benchmark-publish (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Successful in 57m40s
Approved proposal: #3064

Changes:
- Glossary (line 92): Fix 3-tier precedence claim to correct 4-tier chain
  (plan > action > project > global) and add non_overridable exception note
- Line 18980: Fix Invariant Reconciliation Actor step 5 precedence reference
- Line 18991: Fix Strategize phase invariant reconciliation precedence reference
- Lines 19601-19604: Update Precedence and conflict resolution section to include
  action tier as a distinct scope (not promoted to plan tier) and add
  non_overridable exception clause
- Line 19618: Fix invariant view calculation precedence reference
- Lines 19621+: Add Non-overridable global invariants documentation block

Rationale: The glossary and two Strategize-phase descriptions incorrectly stated
a 3-tier precedence chain (plan > project > global), contradicting ADR-016 which
defines a 4-tier chain (plan > action > project > global). The implementation in
actor/reconciliation.py and application/services/plan_lifecycle_service.py
correctly uses the 4-tier model. The non_overridable field on the Invariant domain
model was implemented but completely undocumented in the spec.
2026-04-05 08:27:30 +00:00