Skip to content

Commit 9a4533f

Browse files
Goosterhofclaude
andcommitted
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>
1 parent e9ef319 commit 9a4533f

1 file changed

Lines changed: 13 additions & 6 deletions

File tree

CLAUDE.md

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ SemVer per ADR-0021:
8080

8181
> Distilled operational rules from cross-project Architecture Decision Records.
8282
> Canonical full ADRs at [adrs.script.nl](https://adrs.script.nl). This section is owned by the war room — do not edit directly.
83-
> Last synced: 2026-05-08
83+
> Last synced: 2026-06-15
8484
8585
### Applicable
8686

@@ -89,17 +89,24 @@ SemVer per ADR-0021:
8989

9090
### Non-applicable (the rules ship, the package does not consume them)
9191

92-
- ADR-0001 (Audit Logging) — package distributes `LogRule` + `EnforceAuditSnapshotOnRetryRule`; does not itself maintain audit logs.
92+
> Each bullet's rule→doctrine mapping is authoritative per the rule class's docblock "Doctrine source" line (ADR-0021 §Doctrine source in docblock).
93+
94+
- ADR-0001 (Audit Logging) — package distributes `LogRule` + `LogBuilderTruncateRule` (both §Append-only) + `EnforceAuditSnapshotOnRetryRule` (§Snapshot-on-Retry Safety); does not itself maintain audit logs.
9395
- 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.
9799
- ADR-0014 (Domain-Driven Frontend) — no frontend.
98100
- ADR-0016 (Config Attribute Injection) — no Laravel container surface.
99101
- 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.)
101103
- ADR-0020 (Input/Result DTO Split) — no DTOs.
102104
- 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.
103110

104111
### War-room internal ADRs
105112

0 commit comments

Comments
 (0)