Repository navigation
docs(discipline): dispatch-discipline mechanisms + closed-vocabulary debt row - #812
Conversation
…abulary debt row Lands the three-mechanism dispatch discipline from PR #810 §4 as durable artifacts so they take effect before the next ad-hoc dispatch wave (B1-B7 briefs queued post-#810). All three mechanisms compose: per-PR gate is finest grain (every PR), paired-dispatch is brief-authoring grain, velocity tripwire is window grain. INVARIANTS.md §P5 "Dispatch-Discipline Mechanisms" (new bullet under P5 related rules): - (a) Paired-dispatch at brief-authoring time — every Director-dispatched ad-hoc worker brief that introduces a scaffold MUST name the dissolution trigger, the adjacent ROADMAP debt row, and whether the PR contributes to or defers from that row's dissolution. Identity- bridge briefs MUST be authored against the §0 identity-carrier pass program, not as one-offs. - (b) Per-PR gate — no new hand-Rust file in v3/ lands without the PR description naming the file or scaffold it deletes (or explicit deferral with a named row). Lives in PULL_REQUEST_TEMPLATE.md. - (c) Velocity tripwire — cadence pass reports introduction:dissolution ratio; ≥3:1 in a 7-day window puts ad-hoc lane dispatch under Director review until ratio recovers, after manual sweep for dissolution- bearing feature PRs. ROADMAP.md §"Reviewer-noise class — a practice, not a debt": extends the integration-reflection cadence row with velocity-tripwire reporting + calibration caveat (PR-title heuristic undercounts dissolution- bearing feature PRs; manual sweep before tripwire fires) + current 2026-04-18→2026-04-25 baseline (~1.6:1, lower bound). ROADMAP.md §"Post-merge debt (2026-04-25 reflective + exploratory analyses)": adds NOVEL row for the closed-vocabulary consumer-proof follow-up debt from PR #811's meta-review (gpt-5-5-pro@8cf2051f, SHIP_WITH_DEBT verdict). Mechanical claim is enforced by-construction (parser grammar + 5/6-variant Disj + clippy exhaustive matches + no fallback in lower phase); the documenting test converts the implicit proof into a self-witnessing C1-class stop ratchet against future substrate-extension PRs. S scope, single test file. .github/PULL_REQUEST_TEMPLATE.md (new file): the per-PR gate section with form-acceptance instructions ("deletes X" / "shrinks census line Y" / "explicit deferral to lane Z with named row") and identity-bridge escalation pointer to PR #810 §0. No semantic shifts to existing INVARIANTS or ROADMAP entries; all three additions are coordinated extensions of P5 (Progress Is Dissolution). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Review metadata
Docs-only PR adding §P5 dispatch-discipline mechanisms, a PR template, and two ROADMAP rows. Findings: none. The diff is pure prose: extends INVARIANTS.md §P5 with three layered mechanisms (paired-dispatch, per-PR gate, velocity tripwire), adds a PR template wiring (b) into review-time, and lands two ROADMAP rows — one tracked debt entry for the closed-vocabulary structural test (well-formed: documented + bounded + named dissolution trigger of "single integration test asserting variant counts"), and an addendum to the cadence row spelling out the heuristic and calibration caveat. No substrate changes; no code; no fail-closed surface touched. The closed-vocabulary debt row satisfies the tracked-debt criteria from Verdict: APPROVE — docs-only, internally consistent, and the new mechanisms strengthen P5 from principle into reviewable per-event gates without introducing any new authority split. |
|
Review metadata
Findings
Verdict: REQUEST_CHANGES — the mechanism is otherwise coherent, but the template creates a hole in the gate it is meant to enforce. |
Per codex review on PR #812: the original PR template exempted "tests" from the per-PR dissolution gate, but Rust tests under src/v3/compiler/tests/ ARE hand-Rust and ARE part of the SG-0 census (T-PB-B test subset). The exemption let exactly the T-PB-B class bypass the required delete/shrink/defer statement — weakening P5. Two coordinated tightenings: - .github/PULL_REQUEST_TEMPLATE.md: replace blanket "tests" exemption with explicit inclusion of Rust tests under src/v3/compiler/tests/ in the gate. Exempt list narrows to ".dag source, generated Rust, docs, non-Rust test fixtures, or hand-Rust outside src/v3/." - INVARIANTS.md §P5 Dispatch-Discipline Mechanisms (b): mirror the template by adding "Hand-Rust includes Rust tests (src/v3/compiler/tests/**) — these are the T-PB-B test subset of the SG-0 census; the gate applies the same way it applies to T-PB-A non-test files." The rule and the template now state the same scope. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Fixed in Two coordinated tightenings (template + rule now state the same scope):
Auto-merge stays enabled; should pick up after the new fmt/ci/v3 round + codex re-check. |
…813) * docs(discipline): land §4 dispatch-discipline mechanisms + closed-vocabulary debt row Lands the three-mechanism dispatch discipline from PR #810 §4 as durable artifacts so they take effect before the next ad-hoc dispatch wave (B1-B7 briefs queued post-#810). All three mechanisms compose: per-PR gate is finest grain (every PR), paired-dispatch is brief-authoring grain, velocity tripwire is window grain. INVARIANTS.md §P5 "Dispatch-Discipline Mechanisms" (new bullet under P5 related rules): - (a) Paired-dispatch at brief-authoring time — every Director-dispatched ad-hoc worker brief that introduces a scaffold MUST name the dissolution trigger, the adjacent ROADMAP debt row, and whether the PR contributes to or defers from that row's dissolution. Identity- bridge briefs MUST be authored against the §0 identity-carrier pass program, not as one-offs. - (b) Per-PR gate — no new hand-Rust file in v3/ lands without the PR description naming the file or scaffold it deletes (or explicit deferral with a named row). Lives in PULL_REQUEST_TEMPLATE.md. - (c) Velocity tripwire — cadence pass reports introduction:dissolution ratio; ≥3:1 in a 7-day window puts ad-hoc lane dispatch under Director review until ratio recovers, after manual sweep for dissolution- bearing feature PRs. ROADMAP.md §"Reviewer-noise class — a practice, not a debt": extends the integration-reflection cadence row with velocity-tripwire reporting + calibration caveat (PR-title heuristic undercounts dissolution- bearing feature PRs; manual sweep before tripwire fires) + current 2026-04-18→2026-04-25 baseline (~1.6:1, lower bound). ROADMAP.md §"Post-merge debt (2026-04-25 reflective + exploratory analyses)": adds NOVEL row for the closed-vocabulary consumer-proof follow-up debt from PR #811's meta-review (gpt-5-5-pro@8cf2051f, SHIP_WITH_DEBT verdict). Mechanical claim is enforced by-construction (parser grammar + 5/6-variant Disj + clippy exhaustive matches + no fallback in lower phase); the documenting test converts the implicit proof into a self-witnessing C1-class stop ratchet against future substrate-extension PRs. S scope, single test file. .github/PULL_REQUEST_TEMPLATE.md (new file): the per-PR gate section with form-acceptance instructions ("deletes X" / "shrinks census line Y" / "explicit deferral to lane Z with named row") and identity-bridge escalation pointer to PR #810 §0. No semantic shifts to existing INVARIANTS or ROADMAP entries; all three additions are coordinated extensions of P5 (Progress Is Dissolution). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(discipline): close hand-Rust test exemption hole in per-PR gate Per codex review on PR #812: the original PR template exempted "tests" from the per-PR dissolution gate, but Rust tests under src/v3/compiler/tests/ ARE hand-Rust and ARE part of the SG-0 census (T-PB-B test subset). The exemption let exactly the T-PB-B class bypass the required delete/shrink/defer statement — weakening P5. Two coordinated tightenings: - .github/PULL_REQUEST_TEMPLATE.md: replace blanket "tests" exemption with explicit inclusion of Rust tests under src/v3/compiler/tests/ in the gate. Exempt list narrows to ".dag source, generated Rust, docs, non-Rust test fixtures, or hand-Rust outside src/v3/." - INVARIANTS.md §P5 Dispatch-Discipline Mechanisms (b): mirror the template by adding "Hand-Rust includes Rust tests (src/v3/compiler/tests/**) — these are the T-PB-B test subset of the SG-0 census; the gate applies the same way it applies to T-PB-A non-test files." The rule and the template now state the same scope. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Review metadata
1. Story of the diffThis PR turns a prose discipline about avoiding permanent hand-Rust/scaffold accretion into review-time machinery. It adds a repo PR template that asks authors of new or expanded hand-Rust under 2. Invariant categories
N/A — the diff does not alter
Finding — P5 Progress Is Dissolution / API-level enforcement over convention. chatgpt-review-79ecd71e-8f91-41…
Compliant — no Rust implementation is added. The new operational surface is declarative process text with explicit accepted forms — “Deletes,” “Shrinks census line,” or “Defers to lane” — rather than new helper code or hidden state (
Compliant — no compiler behavior changes, so no behavior test is required in this PR. The one missing test is itself the tracked debt:
N/A — I do not see a locked design decision being altered in the diff. The PR references prior thesis/PR claims and records a follow-up ratchet (
Compliant, with the template wording caveat above. The new closed-vocabulary debt row is tracked: it documents the gap, bounds it to one structural test over exactly 5 3. VerdictAPPROVE_WITH_COMMENTS — The PR is directionally sound and the new debt row is properly bounded with a dissolution trigger. I would clarify the PR-template “tests may delete the gate” exemption so it cannot accidentally exempt new hand-authored Rust tests under |
|
Already addressed: the same hand-Rust-test exemption hole was flagged by codex on the same commit #813 makes exactly the two coordinated tightenings gpt-5-5-pro recommends:
#813 is currently waiting on its own CI round + codex re-review, then merges via auto-squash. No additional action on this PR. |
…servation 3 on #827) Claude noted that the doc cited `feedback_standing_managers_need_owned_deliverables` as if it were a repo artifact (backticked file reference), but that file is PM-private session memory living in `~/.claude/projects/-Users-briansrls-gunbc/memory/`, not a public repo file. Future readers (Director, codex, contributors) would look for it in the repo and not find it. Two sites cleaned (Manager structure REVISED banner + Decisions-locked RETRACTED block): drop the parenthetical citation. The empirical signal explanation is preserved verbatim in both places — the citation was redundant scaffolding around content that already explains itself. Claude's other two observations confirmed already in place: (1) velocity-tripwire reporting wired in INVARIANTS.md:265 §P5 mechanism (c) + ROADMAP.md:442 cadence row (landed via PR #812); (2) six forward-referenced manager briefs deliberately deferred to R1→R2 transition window per Transition mechanics step 4 pre-stage. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…et (codex on #827) Codex noted at line 325: stray fragment 'bra prereq.' (artifact from some prior edit/WIP commit) plus duplicated 'Related PRs' bullet. Cleaned both; consolidated Related PRs to a single bullet that also adds #810 (synthesis B-wave + dispatch discipline) and #812 (P5 mechanisms wiring) as new related PRs landed since the original list. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…827) * WIP: gunbc PM * docs(r2-structure): rework — 6 program managers, autonomous dispatch (retracts 1-manager decision) The prior "1 standing manager (Grounding) + Director ad-hoc" decision locked in r2-structure.md was empirically wrong: under that structure, named standing managers (Grounding, Zero-Floor) sat idle while Director became the dispatch bottleneck for every other lane, starving 3 of 4 non-Grounding lanes. User direction 2026-04-26: kill the idle managers and rework R2 to mirror R1's program-manager pattern. Restores R1's success pattern: N managers, each owning a complete program with autonomous brief-authoring + worker-dispatch authority through R2 close. Director's role narrows to cross-program conflict resolution + scope-change escalation. Six R2 standing managers, mutually-exclusive program ownership: 1. Grounding Manager — T-Ground sub-program (Goal 1; the one true critical path: Pilot → Rust → Engine → Tests → Dissolve, with Python/Go fill). 2. Substrate Manager — T-Substrate (4 sub-lanes: cardinality / nominal-opaque / parametric-algebra / ValueBody-list/sum) PLUS the B4 Identity-Carrier Substrate Pass program from #810 synthesis (4 Phase 1 carriers + 8 Phase 2 site dissolutions). The largest single concentration of R2 work; produces carriers consumed by Modeling Manager (3 sub-lanes) + Grounding Manager (Engine sharpened-(b)). 3. Modeling Manager — T-Modeling (Goal 2: int-lit, Secret<T>, Dimensions) plus tokenizer charclass phase-2. Each item dispatches as its T-Substrate dependency lands. 4. Impossible-Bugs Manager — T-ImpossibleBugs (Goal 4: nested-optional flatten, unhandled diagnostic paths, unenumerated effects). Substrate-gap discoveries escalate to Substrate Manager. 5. Pure Bootstrap Manager — T-PB program (PB-A non-test → 0; PB-B tests → 0 via ExecuteCommand .dag TestClaim migration; Tier 2 patch_lower_helpers retirement; mirror dissolutions from #810 Tier 3). Replaces the prior Zero-Floor Manager standing role with active deliverable ownership. 6. R2 Release Manager — Goal 5 (§6a metadata-pick), Goal 6 (R2 demo coordination), B-wave Tier 0/2 dispatch (#810), discipline-framework enforcement (velocity-tripwire reporting), thesis-claim coverage mapping (Open call 1), R2 closure ledger, v2 retirement coordination. Cross-program dependencies handled via R1's `Cross-manager notifications queued` brief pattern (producer signals readiness; consumer acks and dispatches). Steady-state parallel capacity: ~20+ concurrent worker slots across 6 programs, vs. ~9-13 under the prior 1-manager structure where Director was the brief-authoring bottleneck. Locked decisions block: - Prior "Manager count = 1 + Director" decision retracted with empirical reasoning + lesson saved as feedback memory (feedback_standing_managers_need_owned_deliverables). - New decision: "Manager count = 6 standing managers + Director coordinator" locked 2026-04-26. Transition mechanics block: - Step 4 expanded: spin-up of six manager briefs by Director on R2 promotion; existing grounding-manager.md + pure-bootstrap-zero-manager.md migrate content into the new r2-*-manager.md briefs and archive. No semantic shifts to R2 goals (1-6), demo discipline, R1 closure criteria, or v2 retirement framing — those remain as-locked. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(r2-structure): apply codex exploratory observations on #827 Three non-blocking codex observations addressed: (1) Substrate Manager bottleneck risk (T-Substrate + B4 = 8+ slots is intentionally heavy). Added explicit watch-condition + named split trigger: if Substrate becomes the new bottleneck (workers idle waiting >7 days for Substrate-authored briefs), split B4 out as a dedicated standing B4 Identity-Carrier Manager. R2 Release Manager surfaces this signal via velocity-tripwire reporting. (2) Six manager briefs at R2 promotion = authoring burden on Director at the exact transition point. Added pre-staging discipline to Transition mechanics step 4: Director authors brief skeletons during R1 final week; promotion PR fills in scope-final details. Decouples R1→R2 transition from six fresh authoring cycles. (3) "20+ concurrent worker slots" wording risk (reads as committed target). Softened to "Aspirational dispatch ceiling: ~20+ concurrent worker slots ... (capacity, not committed throughput — actual concurrency depends on idle-worker availability and cross-program unblock timing)." No structural changes to manager assignments, lane breakdown, or dependency DAG. Three small wording tightenings. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(r2-structure): resolve PB gate-vs-program ambiguity (codex P2 inline on #827) Codex caught a real contradiction: my new T-PB lane row in R2 included T-PB-A and T-PB-B work, but the doc's R1 closure criteria + Lanes- deliberately-absent block said those gates are R1-owned. Same deliverables looked like both R1 close criteria and R2 program scope — ambiguous release ownership. Real resolution: R1's PB gate predicates are `[ext]` (threshold reads from sg0_census_test.rs at evaluation time, not frozen at 0). R1 closes at the then-current census-baked threshold; full 0-floor is the multi- release dissolution scope owned by Pure Bootstrap Manager in R2 and beyond. This matches the cascade promotion's de facto move (PB promoted to LIVE as a standing program, not a one-time R1 gate). Four coordinated edits make this explicit: 1. Pure Bootstrap Manager section now opens with "Post-R1 work of Pure Bootstrap to Zero program" framing + dedicated R1-vs-R2 split block stating: R1 owns gate close at `[ext]` threshold; R2 owns continued census reduction toward 0. 2. R1 closure criteria block adds new paragraph: "PB gates are `[ext]` — threshold reads from authority, not frozen at 0 in this doc." Cites the codex P2 finding for audit trail. 3. Lanes-deliberately-absent block updated for both PB rows: "Not absent from R2 — gate closes in R1, program work continues in R2." 4. Lane structure T-PB row reworded to "Post-R1 continuation" with explicit gate-vs-program split reference. Plus the "R2 inherits nothing" sentence is corrected to acknowledge post-R1 PB program continuation as legitimate R2 inheritance. No structural changes to the 6-manager assignments, dependency DAG, or other lanes. Resolution is purely the gate-vs-program semantic distinction. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(r2-structure): consolidate demo coordination authority on R2 Release Manager Codex finding 2 on PR #827 (sha bf9a05c): demo coordination authority was split between R2 Release Manager (new section, line 134) and Director (Goals row line 59 + Modeling Manager auth line 102 + lane- table footer line 160 + Demo discipline section line 256). P2 single- authority violation — readers had two release owners for Goal 6. Resolution: consolidate all four sites onto R2 Release Manager. - Goals row (line 59): "Director-coordinated" → "R2 Release Manager- coordinated" with note explaining the rework reassignment. - Modeling Manager authority (line 102): "signals item-close to Director" → "signals item-close to R2 Release Manager." - Lane-table footer (line 160): "Director coordinates surfacing" → "R2 Release Manager coordinates surfacing." - Demo discipline section (line 256): same fix. Codex finding 1 (PB gate-vs-program ambiguity at line 116) was already addressed in 90eb86f — codex was running against the older sha bf9a05c so didn't see the fix. No additional action on finding 1. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * WIP: gunbc PM * docs(r2-structure): apply P5 dispatch-discipline to all manager-authored briefs (codex APPROVE_WITH_COMMENTS on #827) Codex P2 finding on PR #827 sha d2bc1ec: with 6 autonomous dispatch paths from the rework, the P5 paired-dispatch + per-PR gate discipline must apply to all manager-authored briefs uniformly, not just Director's. R2 Release Manager's prior "Discipline framework enforcement" line was scoped only to velocity-tripwire reporting — left the per-brief and per-PR mechanisms under-specified. Two coordinated edits: 1. New paragraph in Manager structure ("Cross-manager dependency discipline" block): "P5 dispatch-discipline applies to all manager- authored briefs." Each standing manager responsible for paired- dispatch (brief-authoring time) + per-PR gate (PR-review time) on their own briefs/PRs. Per-brief and per-PR enforcement at each manager's authoring point, not a central choke. 2. R2 Release Manager's "Discipline framework enforcement" line updated to clarify role: owns the **central reporting** layer of P5 (velocity-tripwire ratio + systemic-violation surfacing through closure ledger). NOT the choke point for per-brief and per-PR enforcement — those happen at each manager's authoring point. Resolves the gap the codex P2 finding identified: P5 was previously de facto only enforced at Director, leaving manager-authored work outside the gate. Now uniform across all 6 managers. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(r2-structure): consolidate all manager lane-close signals on R2 Release Manager (gpt-5-5-pro APPROVE_WITH_COMMENTS on #827) gpt-5-5-pro flagged Impossible-Bugs Manager's "signals class-close to Director" as a P2 single-authority violation: R2 Release Manager owns the closure ledger (line 140), so routing class-close to Director created two close-status authorities and risked the Release Manager's ledger being bypassed. Audit revealed the same ambiguity in Grounding Manager's "reports cross-program signals to Director." Resolution applied uniformly across all five non-Release managers: - Grounding (line 78): "reports cross-program signals to Director" → "signals lane-close to R2 Release Manager (for closure ledger); escalates blockers and scope changes to Director." - Substrate (line 92): added "signals sub-lane / Phase close to R2 Release Manager (for closure ledger); escalates blockers and scope changes to Director." - Modeling (line 104): "signals item-close to R2 Release Manager for R2 demo coordination" → "signals item-close to R2 Release Manager (for closure ledger + demo coordination); escalates blockers and scope changes to Director." - Impossible-Bugs (line 115): "signals class-close to Director" → "signals class-close to R2 Release Manager (for closure ledger); escalates blockers and scope changes to Director." - Pure Bootstrap (line 128): already correctly dual-routed ("reports SG-0 census deltas to Director and to R2 Release Manager"); kept as-is. Pattern is now uniform across all 5 non-Release managers: - lane/sub-lane/item/class close → R2 Release Manager (closure ledger) - blockers + scope changes → Director (cross-program coordination) Single authority per concern: closure-ledger reporting concentrated on R2 Release Manager; Director's role narrows to conflict resolution + scope escalation as the rework intended. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(r2-structure): drop dangling feedback memory citation (claude observation 3 on #827) Claude noted that the doc cited `feedback_standing_managers_need_owned_deliverables` as if it were a repo artifact (backticked file reference), but that file is PM-private session memory living in `~/.claude/projects/-Users-briansrls-gunbc/memory/`, not a public repo file. Future readers (Director, codex, contributors) would look for it in the repo and not find it. Two sites cleaned (Manager structure REVISED banner + Decisions-locked RETRACTED block): drop the parenthetical citation. The empirical signal explanation is preserved verbatim in both places — the citation was redundant scaffolding around content that already explains itself. Claude's other two observations confirmed already in place: (1) velocity-tripwire reporting wired in INVARIANTS.md:265 §P5 mechanism (c) + ROADMAP.md:442 cadence row (landed via PR #812); (2) six forward-referenced manager briefs deliberately deferred to R1→R2 transition window per Transition mechanics step 4 pre-stage. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(r2-structure): defer PB gate semantics to ROADMAP authority (codex BLOCKING on #827 sha a6e26c0) Codex BLOCKING — my prior "R1 closes at then-current sg0_census_test.rs baseline; R2 owns continued census reduction" framing introduced a second authority for PB gate thresholds. ROADMAP.md is the named gate authority and its T-PB-A / T-PB-B lane rows target 0 per docs/design-pure-bootstrap-zero.md LIVE. r2-structure.md was reinterpreting that — P2 single-authority violation; R1 closure semantics depended on which doc a reader followed. Real fix: defer to ROADMAP. Drop the gate-vs-program "split" framing entirely. Narrow R2 Pure Bootstrap Manager scope to post-R1 program work that survives R1 close, not a duplicate of R1's census-reduction lanes. Five coordinated edits: 1. Pure Bootstrap Manager section rewritten: - "R1 vs R2 split" subsection → "R1 vs R2 boundary — defers to ROADMAP gate authority" stating r2-structure does NOT reinterpret gate semantics; ROADMAP single-authority on gate close. - "R2 lanes" subsection → "R2 PB Manager scope = work that survives R1 close" — concretely: mirror dissolutions (Tier 3), Tier 2 patch_lower_helpers retirement (if survives R1), post-R1 emergent dissolutions, kernel_algebra_profile Map-shaped work gated on Substrate Manager. - Explicit "Does NOT own R1 census-reduction work" callout. 2. R1 closure criteria block: prior "PB gates are [ext] — threshold reads from authority" paragraph rewritten to "ROADMAP is single authority on PB gate semantics" — defers to ROADMAP T-PB-A / T-PB-B target=0, doesn't reinterpret. 3. Lanes-deliberately-absent block (both PB rows): removed prior "Not absent from R2 — gate closes in R1, work continues in R2" wording (which was the offending dual-authority claim). Replaced with "Not in R2 — R1 owns census-reduction per ROADMAP single authority on gate semantics. R2 Pure Bootstrap Manager exists for post-R1 PB program work that survives R1 close." 4. Lane structure T-PB row: size XL → M (narrowed scope). Description rewritten to post-R1-only with explicit "Does NOT duplicate R1 T-PB-A / T-PB-B census-reduction work." 5. R2-inherits sentence: corrected to acknowledge post-R1 PB program work as legitimate inheritance (not the census-reduction work itself). 6. Dependency DAG Pure Bootstrap Manager block: stripped the T-PB-A / T-PB-B census-reduction lines; replaced with Tier 3 mirror dissolutions + Tier 2 patch retirement + post-R1 emergent. Header now reads "POST-R1 only (R1 owns census-reduction lanes per ROADMAP)." ROADMAP.md is unchanged — r2-structure.md correctly defers to its existing PB gate authority. No reinterpretation, no second authority. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(r2-structure): clean stray fragment + duplicate Related PRs bullet (codex on #827) Codex noted at line 325: stray fragment 'bra prereq.' (artifact from some prior edit/WIP commit) plus duplicated 'Related PRs' bullet. Cleaned both; consolidated Related PRs to a single bullet that also adds #810 (synthesis B-wave + dispatch discipline) and #812 (P5 mechanisms wiring) as new related PRs landed since the original list. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
Lands the three-mechanism dispatch discipline from PR #810 §4 as durable artifacts before the next ad-hoc dispatch wave (B1-B7 briefs queued post-#810). Also adds the closed-vocabulary consumer-proof debt row from PR #811's meta-review.
What changes
INVARIANTS.md §P5 gets a new related-rule bullet "Dispatch-Discipline Mechanisms" with three layered sub-mechanisms:
v3/lands without the PR description naming the file or scaffold it deletes (or explicit deferral with a named row).The three compose: per-PR gate (every PR) → paired-dispatch (brief-authoring) → tripwire (window).
ROADMAP.md §"Reviewer-noise class — a practice, not a debt" extends the existing integration-reflection cadence row with velocity-tripwire reporting, calibration caveat (PR-title heuristic undercounts dissolution-bearing feature PRs; manual sweep before tripwire fires), and the current 2026-04-18→2026-04-25 baseline (~1.6:1, lower bound).
ROADMAP.md §"Post-merge debt (2026-04-25)" gets a new NOVEL row for the closed-vocabulary consumer-proof follow-up from PR #811's meta-review (gpt-5-5-pro@8cf2051f, SHIP_WITH_DEBT). Mechanical claim is enforced by-construction (parser grammar + 5/6-variant Disj + clippy exhaustive matches + no lower fallback); the documenting test converts the implicit by-construction proof into a self-witnessing C1-class stop ratchet against future substrate extensions. S scope.
.github/PULL_REQUEST_TEMPLATE.md(new file) carries the per-PR gate section with form-acceptance instructions and identity-bridge escalation pointer to PR #810 §0.What's NOT in scope
Test plan
.github/PULL_REQUEST_TEMPLATE.mdrenders cleanly when opening a PR (form fields visible; preamble guidance readable)Per-PR dissolution gate
v3/. This PR is docs + GitHub config only.🤖 Generated with Claude Code