Skip to content

docs(discipline): dispatch-discipline mechanisms + closed-vocabulary debt row - #812

Merged
briansrls merged 1 commit into
mainfrom
pm/dispatch-discipline-and-debt-rows
Apr 25, 2026
Merged

briansrls merged 1 commit into
mainfrom
pm/dispatch-discipline-and-debt-rows

Conversation

@briansrls

Copy link
Copy Markdown
Contributor

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:

  • (a) Paired-dispatch at brief-authoring time — every Director ad-hoc brief that introduces a scaffold names dissolution trigger + adjacent ROADMAP debt row + contributes-or-defers stance. Identity-bridge briefs MUST author against the §0 identity-carrier pass program from docs(briefs): debt-paydown + scaffolding-audit synthesis (2026-04-25 analyses → course of action) #810, not as one-offs.
  • (b) Per-PR gate (the early warning) — 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).
  • (c) Velocity tripwire (the late warning) — cadence pass reports introduction:dissolution ratio; ≥3:1 in 7-day window puts ad-hoc dispatch under Director review.

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

  • Verify INVARIANTS.md §P5 reads coherently with the new bullet (no contradiction with existing P5 framing)
  • Verify ROADMAP.md cadence row + new debt row land in correct sections
  • Confirm .github/PULL_REQUEST_TEMPLATE.md renders cleanly when opening a PR (form fields visible; preamble guidance readable)
  • Confirm no doc cross-references break

Per-PR dissolution gate

  • Defers / shrinks / deletes: N/A — no new hand-Rust under v3/. This PR is docs + GitHub config only.

🤖 Generated with Claude Code

…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>
@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: claude / claude-opus-4-7
  • Commit: 9e225c78 · Trigger: schedule
  • Thinking: 15s wall

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 docs/modeling-discipline.md (dissolution trigger named, scope bounded as "single test file"), and the velocity-tripwire calibration caveat (manual sweep before triggering Director review) is a sensible guard against the heuristic false-positives the row itself acknowledges.

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.

@briansrls
briansrls merged commit 65713b0 into main Apr 25, 2026
3 checks passed
@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: codex / codex-default
  • Commit: 9e225c78 · Trigger: schedule
  • Thinking: 66s wall

Findings

  • BLOCKING .github/PULL_REQUEST_TEMPLATE.md:9 says PRs that touch only “tests” may delete the dissolution gate, but INVARIANTS.md:265 makes the gate apply to any new hand-Rust file in v3/. Rust tests under src/v3/compiler/tests/ are hand-Rust and part of the T-PB-B census, so this exemption lets exactly that class bypass the required delete/shrink/defer statement. That weakens P5 / Dispatch-Discipline Mechanisms. Narrow the exemption to non-Rust tests or tests outside v3/, or state that src/v3 Rust tests must still fill the gate.

Verdict: REQUEST_CHANGES — the mechanism is otherwise coherent, but the template creates a hole in the gate it is meant to enforce.

briansrls added a commit that referenced this pull request Apr 25, 2026
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>
@briansrls

Copy link
Copy Markdown
Contributor Author

Fixed in a5fc64c41. Codex was right — the blanket "tests" exemption was a hole, since src/v3/compiler/tests/** Rust tests are the T-PB-B test subset of the SG-0 census and are exactly what the gate exists to cover.

Two coordinated tightenings (template + rule now state the same scope):

  • PR template: replaced 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 (b): mirrors the template — "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."

Auto-merge stays enabled; should pick up after the new fmt/ci/v3 round + codex re-check.

briansrls added a commit that referenced this pull request Apr 25, 2026
…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>
@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: openai-pro / gpt-5-5-pro
  • Commit: 9e225c78 · Trigger: manual
  • Conversation: View conversation

1. Story of the diff

This 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 src/v3/ to name what they delete, shrink, or explicitly defer (.github/PULL_REQUEST_TEMPLATE.md:17-34), then records the same three-part dispatch discipline in P5: brief-time paired dispatch, per-PR gate, and a cadence-level velocity tripwire (INVARIANTS.md:265). It also adds one bounded ROADMAP debt row for the closed-vocabulary proof gap: the substrate vocabulary is claimed to be closed by construction, but the project still wants a single structural test proving the exact 5 Behavior variants and 6 TypeConnective variants (ROADMAP.md:422). Finally, the cadence note grows from “run periodic reflective analysis” into “also report introduction:dissolution ratio, with manual calibration before Director review” (ROADMAP.md:442).

2. Invariant categories

  1. LAYER MODEL (substrate vs implementation).

N/A — the diff does not alter Dag, substrate declarations, lowering, inference, or generated consumers. It references substrate vocabulary in a ROADMAP debt row, but the only landed changes are docs/process text (ROADMAP.md:422).

  1. INVARIANTS.md + modeling-discipline.md.

Finding — P5 Progress Is Dissolution / API-level enforcement over convention. .github/PULL_REQUEST_TEMPLATE.md:9-10 says PRs that touch only “.dag source, generated Rust, docs, tests, or non-v3/ Rust may delete the gate section.” That exemption is broader than the invariant this PR adds: INVARIANTS.md:265 says “no new hand-Rust file in v3/ lands without the PR description naming the file or scaffold it deletes.” As written, a PR adding a new hand-authored Rust test under src/v3/compiler/tests/...rs could classify itself as “tests” and delete the gate, bypassing the P5 mechanism. I’d narrow the exemption to non-Rust tests / generated tests / tests outside src/v3/, or explicitly say new hand-authored Rust tests under src/v3/ still fill the gate. This is non-blocking process wording, not substrate unsoundness. The underlying rubric requires scaffolds to have dissolution triggers rather than becoming steady state. chatgpt-review-76d8d247-3c8e-47…

chatgpt-review-79ecd71e-8f91-41…

  1. CODING.md.

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 (.github/PULL_REQUEST_TEMPLATE.md:24-26). That is consistent with explicit-interface discipline in the coding guide. chatgpt-review-b90c81d8-84e7-4e…

  1. TESTING.md.

Compliant — no compiler behavior changes, so no behavior test is required in this PR. The one missing test is itself the tracked debt: ROADMAP.md:422 names the exact desired integration test and its assertion surface, rather than implying the closed-vocabulary consumer proof already landed. This matches the testing guide’s preference for behavior/contract assertions when a claim becomes load-bearing. chatgpt-review-c988d548-957e-40…

  1. LOCKED DESIGN DECISIONS.

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 (ROADMAP.md:422), but it does not silently diverge from a locked mechanism.

  1. TRACKED vs UNTRACKED DEBT.

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 Behavior variants and 6 TypeConnective variants, and names the dissolution trigger as “add a single integration test” (ROADMAP.md:422). The dispatch-discipline entry also gives bounded mechanisms rather than open-ended TODO prose: brief acceptance criteria, per-PR gate, and a 7-day velocity tripwire with manual false-positive sweep (INVARIANTS.md:265; ROADMAP.md:442).

3. Verdict

APPROVE_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 src/v3/ from the very P5 gate this PR is adding.

@briansrls

Copy link
Copy Markdown
Contributor Author

Already addressed: the same hand-Rust-test exemption hole was flagged by codex on the same commit 9e225c78 at 19:35:40Z and fixed in a5fc64c41, which is now riding on PR #813 — fix(discipline): close hand-Rust test exemption hole in per-PR gate. The fix landed as a separate PR because #812 had auto-squash-merged the original commit ~20 seconds before the codex review came in.

#813 makes exactly the two coordinated tightenings gpt-5-5-pro recommends:

  • .github/PULL_REQUEST_TEMPLATE.md narrows the exemption to ".dag source, generated Rust, docs, non-Rust test fixtures, or hand-Rust outside src/v3/," and explicitly includes Rust tests under src/v3/compiler/tests/ (T-PB-B test subset of the SG-0 census) in the gate.
  • INVARIANTS.md §P5 (b) mirrors the template — "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."

#813 is currently waiting on its own CI round + codex re-review, then merges via auto-squash.

No additional action on this PR.

briansrls added a commit that referenced this pull request Apr 26, 2026
…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>
briansrls added a commit that referenced this pull request Apr 26, 2026
…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>
briansrls added a commit that referenced this pull request Apr 26, 2026
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant