You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: resync ADR projections to shipped rule set (WR-0036/F-ADJ-01)
The `## War Room ADR Projections` section was last synced 2026-05-08 and
mis-described what the package distributes. Reconciled every projection
bullet against the 11 rules shipping on `main`, mapping each by its
docblock "Doctrine source" line per ADR-0021.
- ADR-0009: rule released in v0.3.0 (was stale `Phase 2, [Unreleased]`).
- ADR-0011: add `ForbidEloquentMutationInControllersRule` (PR #28).
- ADR-0012: was "no HTTP surface" — now ships `EnforceFormRequestToDtoRule` (PR #33).
- ADR-0019: add `ForbidEloquentMutationInControllersRule`; retire stale
`EnforceExplicitHydrationRule` Phase-2 candidate note.
- ADR-0029: ADDED — ships `EnforceAuditTransactionScopeRule` (PR #27).
- ADR-0001: add `LogBuilderTruncateRule` to the §Append-only bullet.
- New subsection for war-room Architectural-Principle rules with no
published ADR: `ForbidAbortHelperRule` + `EnforceCurrentUserAttributeRule`
(PR #26, Principle #9).
- Bump Last synced to 2026-06-15.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- ADR-0002 (Cascade Deletion) — no application surface.
94
-
- ADR-0009 (Unified ResourceData Pattern) — package distributes `EnforceResourceDataValidatorOptInRule` (Phase 2, `[Unreleased]`); does not itself ship API resources.
95
-
- ADR-0011 (Action Class Architecture) — package distributes `EnforceActionTransactionsRule` + `ForbidDatabaseManagerInActionsRule`; itself has no Actions.
96
-
- ADR-0012 (FormRequest → DTO) — no HTTP surface.
96
+
- ADR-0009 (Unified ResourceData Pattern) — package distributes `EnforceResourceDataValidatorOptInRule` (§EAGER_LOAD validator opt-in, shipped in v0.3.0); does not itself ship API resources.
97
+
- ADR-0011 (Action Class Architecture) — package distributes `EnforceActionTransactionsRule` + `ForbidDatabaseManagerInActionsRule`, and `ForbidEloquentMutationInControllersRule` (ADR-0011 + ADR-0019, `[Unreleased]`); itself has no Actions.
98
+
- ADR-0012 (FormRequest → DTO) — package distributes `EnforceFormRequestToDtoRule` (§FormRequest → DTO Flow, `[Unreleased]`); itself has no HTTP surface.
97
99
- ADR-0014 (Domain-Driven Frontend) — no frontend.
98
100
- ADR-0016 (Config Attribute Injection) — no Laravel container surface.
99
101
- ADR-0017 (Page Integration Tests) — no pages.
100
-
- ADR-0019 (Explicit Model Hydration) — no models. Phase 2 candidate `EnforceExplicitHydrationRule`will distribute this rule.
102
+
- ADR-0019 (Explicit Model Hydration) — package distributes `ForbidEloquentMutationInControllersRule` (ADR-0011 + ADR-0019, `[Unreleased]`) covering the controller mutation surface; itself has no models. (The earlier Phase-2 `EnforceExplicitHydrationRule`candidate has been subsumed by the controller-mutation rule for the controller surface; a broader application-wide hydration rule remains a future candidate.)
101
103
- ADR-0020 (Input/Result DTO Split) — no DTOs.
102
104
- ADR-0024 (Automated External Provisioning) — no provisioning surface.
105
+
- ADR-0029 (Audit Row Durability Contract) — package distributes `EnforceAuditTransactionScopeRule` (§Decision rule 3 — flags non-transactional state mutations inside `transaction(...)` closures in `App\Actions\*`, `[Unreleased]`); itself maintains no audit rows.
106
+
107
+
### War-room Architectural Principle rules (no published ADR)
108
+
109
+
-**Explicit over implicit** — package distributes `ForbidAbortHelperRule` (bans `abort()` / `abort_if()` / `abort_unless()`; shipped) and `EnforceCurrentUserAttributeRule` (flags `Request::user()` / `Auth::user()` / `auth()->user()` in `App\Http\Controllers`, steering to the `#[CurrentUser]` container attribute per Architectural Principle #9; `[Unreleased]`). These enforce war-room §Architectural Principles, not a numbered ADR — their docblock "Doctrine source" line names the principle, not an ADR.
0 commit comments