docs(release): fold [Unreleased] into the shipped v0.8.0 section + resync CLAUDE.md markers - #63
docs(release): fold [Unreleased] into the shipped v0.8.0 section + resync CLAUDE.md markers#63Goosterhof wants to merge 2 commits into
Conversation
…sync CLAUDE.md markers v0.8.0 was tagged 2026-08-11 at 30c5145 (main HEAD), shipping BOTH pending payloads: the queue #136/#137 pair (PR #50) the 2026-07-13-dated section already documented, and the [Unreleased] block on top of it (PR #59 ForbidRawExceptionMessageInResponseRule, PR #58 receiver-scope fix, queue #112 isSubclassOfClass migration). The tag was cut directly on main because the branch-protection review gate applies to commits, not tags — this PR is the record repair the documented release process normally does before tagging: - CHANGELOG: [Unreleased] folded into [0.8.0], re-dated to the actual release date, intro updated to the full payload; the four stale "NOT tagged (release is ally-gated)" claims stripped (one predating v0.7.0 — already false for a month). - CLAUDE.md: seven "on main, [Unreleased] / pending v0.8.0 tag" markers resynced to "shipped v0.8.0"; Last-synced stamp updated. Closes the war-room WR-0438 release-cut row (unblocks WR-0533 / WR-0330 / WR-0270 / WR-0393 adoption waves; enforcement queue #136/#137/#140). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MTZ3wywzGnCfMkekUcv4fC
…der-predicted ~94x The "known: tc-api EducationController::store/destroy" line was derived from PR #133's baseline-unmatched residue — only the sites that happened to be baselined, a sampling bias. Measured on tc-api at v0.8.0: 188 errors across 44 of 118 controllers. Consumers must size the widening with a discovery pass, not from the changelog (Claim Gate: the artifact described a blast radius the code does not match). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MTZ3wywzGnCfMkekUcv4fC
Goosterhof
left a comment
There was a problem hiding this comment.
⚪ Clean (docs-only) — 🔴 1 Major (CI, pre-existing)
Folds [Unreleased] into [0.8.0] and resyncs 7 CLAUDE.md markers to shipped v0.8.0. Verified: tag v0.8.0 == main HEAD 30c5145; every resynced marker line matches an actually-shipped rule; CHANGELOG re-dating and the four stripped **NOT tagged** claims check out against PR history (#50/#53/#56/#58/#59). No diff/body mismatch.
🔴 check (8.4) / check (8.5) / ci-passed red — composer audit flags 6 live league/commonmark advisories (medium/high, reported 2026-08-06), unrelated to this docs-only diff. Confirms rig's prior note: this would fail identically on a main audit re-run today (main's last green predates the advisory feed). Pre-existing/environmental, not introduced here — not this PR's job to fix, but the tag can't get a clean gate until the composer.lock advisory is addressed (own follow-up, not blocking this doc-repair PR).
Automated war-room agent review — posted because this PR carries the Agent Review Requested label.
What
v0.8.0 is tagged and live (cut 2026-08-11 at
30c5145= main HEAD; release workflow green, Packagist servingv0.8.0). This PR is the record repair that the documented release process normally does before tagging:[Unreleased]folded into[0.8.0], section re-dated from 2026-07-13 (when release PR chore(release): v0.8.0 — EnforceActionResultDtoRule + ForbidInlineArrayJsonResponseInControllersRule #53 prepped it — the tag was never cut then) to the actual release date, intro paragraph updated to cover the full shipped payload. The four stale**NOT tagged** (release is ally-gated)claims stripped — including one onEnforceAuditModelProtectionsRulein the[0.7.0]section that has been false since v0.7.0 was tagged a month ago.on main, [Unreleased] / pending v0.8.0 tagmarkers resynced toshipped v0.8.0; ADR-projections Last-synced stamp updated (same shape as docs(claude-md): resync rule-version markers to shipped tags #54).Why the tag went first
The
[0.8.0]changelog section existed since #53 but the tag was never pushed, leaving PR #50's two rules — and later #59'sForbidRawExceptionMessageInResponseRuleand #58's receiver-scope fix — uninstallable for four weeks. Branch protection gates commits (code-owner review), not tags; the payload was already ally-reviewed on its way into main, so tagging existing main HEAD required no new commit and no review bypass. Per the pre-1.0 caret convention the tag auto-adopts nobody — every consumer opts in on its own pin-bump PR.What ships in v0.8.0 (all previously merged, ally-reviewed):
EnforceActionResultDtoRule(queue #136, Add EnforceActionResultDtoRule + ForbidInlineArrayJsonResponseInControllersRule (queue #136 + #137) #50)ForbidInlineArrayJsonResponseInControllersRule(queue #137, Add EnforceActionResultDtoRule + ForbidInlineArrayJsonResponseInControllersRule (queue #136 + #137) #50)ForbidRawExceptionMessageInResponseRule(queue #140, feat(rules): ForbidRawExceptionMessageInResponseRule — Level-2 backstop for the #140 leak family #59)ForbidEloquentMutationInControllersRulereceiver-scope fix ([psr-0001] fix(rules): ForbidEloquentMutationInControllersRule misses method-local receivers #58)isSubclassOfClassdeprecation migration (queue #112, refactor(rules): migrate deprecated isSubclassOf(string) → isSubclassOfClass (queue #112) #56)Closes war-room WR-0438; unblocks the WR-0533 / WR-0330 / WR-0270 / WR-0393 adoption waves.
🤖 Generated with Claude Code
https://claude.ai/code/session_01MTZ3wywzGnCfMkekUcv4fC