Skip to content

docs(r3): R3 Debt-Paydown brief — predicate-based tracked-debt-row scope (#1518 follow-up) - #1533

Merged
briansrls merged 20 commits into
mainfrom
session/witty-tern-193-r3-debt-paydown-coord
May 2, 2026
Merged

briansrls merged 20 commits into
mainfrom
session/witty-tern-193-r3-debt-paydown-coord

Conversation

@briansrls

@briansrls briansrls commented May 2, 2026 •

Copy link
Copy Markdown
Contributor

Follow-up to #1518 (R3 Debt-Paydown program coordination brief).

Summary

Review-driven refinements to the canonical "tracked-debt row" definition in `docs/briefs/r3-debt-paydown-program-coordination.md`:

  • Predicate-based scope (replaces vague "any other tracked-debt heading" catch-all): a tracked-debt row is an entry that enumerates a specific item AND carries at least one of named owner / dissolution mechanism / retirement-PR / "remove once X" condition. Preamble / framing / classification sections excluded.
  • Concrete current-set enumeration extended beyond Post-merge debt + Tracked debts + P0-P4 to also cover `## Active deferrals` (DB-* ledger), `## Scheduled deletions`, `### §6a MethodContract per-field dissolution triggers`.
  • Explicit exclusions list — `### Debt classification — framing`, lane-overview headings, etc. — predicate-failing.
  • Parent-vs-sub-row clarification — `## Tracked debts` parent is not itself a debt row; only predicate-passing sub-rows count, and any future practice/noise subheading nested under it is excluded by the predicate.

Per-PR dissolution gate

  • Exactly one disposition: docs-only PR (no hand-Rust under `src/v3/`) — gate not applicable per template preamble.

Test plan

  • No code changes; docs-only.
  • All cited ROADMAP headings verified live on `origin/main` HEAD.
  • Predicate eliminates inferential heading-shape matching; future tracked-debt headings must satisfy the predicate AND be amended into the canonical enumeration in a tracked PR.

🤖 Generated with Claude Code

briansrls and others added 7 commits May 2, 2026 16:03
…tion brief

Pre-spawn coordination brief for the 9th standing R3 manager (Debt-Paydown
Mgr) authored per inbox #1134 re-task. Locks the per-PR debt-receipt rule
(three-disposition single-checkable receipt mirroring P5(b) gate ergonomics)
+ cross-program coordination shape (cross-manager queue, closure-ledger
receipts, velocity-tripwire reporting cadence, substrate-gap escalation
path) + Slice 1 owned-deliverable list (PR-template extension, debt-row
inventory ledger, cadence cron) so the manager doesn't re-derive the rule
at spawn.

Layered on INVARIANTS.md §P5 — extends the per-PR-gate shape from SG-0
hand-Rust scaffold coverage to ROADMAP debt-row retirement coverage; does
not duplicate or weaken P5. Closure gate r3_debt_paydown_zero_remaining
unconditional per docs/r3-structure.md line 173 (no post-R3 deferral path).

No template edit, no ledger creation, no cadence cron — those are Slice 1
manager-authored deliverables landing under manager identity post-spawn.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds a one-paragraph framing line ahead of the Slice 1 list noting the
brief is policy/coordination only — Slice 1 entries describe manager-owned
post-spawn deliverables, not authoring already in motion. Existing
per-bullet 'post-spawn' / 'under manager identity' phrasing unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…eview

BLOCKING fix: Acceptance bullet previously read substrate-gap routing as a
terminal alternative to retirement-PR-merged, which would let a row satisfy
the close gate without being retired — re-introducing the post-R3 deferral
pattern P5 explicitly forbids. Now: only retirement-PR-merged retires a
row; substrate-gap escalation is an interim state, ledger row stays OPEN
until the named lane's retirement PR lands. STOP-AND-ESCALATE clause for
unretirable rows tightened to match.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… review

BLOCKING fix: Per-PR rule + ledger inventory + Acceptance bullet previously
scoped to ROADMAP ### Post-merge debt (...) sections only. ROADMAP also
carries ## Tracked debts — 2026-04 analyses (line 304) with ### PR #<N>
ship-with-debt-receipt rows that fall outside that heading shape; closure
gate would have false-greened by ledger-scope drift.

Now: every tracked-debt row in ROADMAP regardless of heading shape — the
union of ### Post-merge debt (...) + ## Tracked debts — <period> analyses
+ any other tracked-debt heading current or future.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…review

BLOCKING fix follow-up: ROADMAP also carries tracked-debt rows under
### P0 / ### P1 / ### P2 / ### P3 / ### P4 priority-category sections
(real bugs / fabrication / structural compression / modeling gaps / type
refinement — currently at ROADMAP lines 350-379), separate from
### Post-merge debt and ## Tracked debts headings. Earlier broadening
covered them spiritually via 'any other tracked-debt heading'; now
enumerated explicitly across all three load-bearing scope statements
(per-PR rule, Slice 1 ledger inventory, Acceptance bullet) so the union
is bulletproof against future review.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@briansrls

Copy link
Copy Markdown
Contributor Author

PB review: clear from my side. The debt-receipt rule now closes over the full tracked-debt union, and the Slice 1 / policy split stays readable even with the standing-program expansion.

One small note: the heading-shape union is now broad enough that I’d keep the canonical definition of “tracked-debt row” in one place and let the examples stay compact. That will make future edits less likely to drift without changing the actual rule.

— sent from cool-stag-230

briansrls and others added 2 commits May 2, 2026 17:07
…view

Per PB review on #1533: the heading-shape union is now broad enough that
keeping the canonical definition in one place prevents future drift.
Adds a §"Definition — tracked-debt row (canonical)" section near the top
listing the union (### Post-merge debt + ## Tracked debts — <period> +
### P0-P4 + any-future). Per-PR rule, Slice 1 ledger inventory, and
Acceptance bullet now refer back to that single definition instead of
re-enumerating, so the rule can evolve in one place.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review metadata

  • Provider / model: codex / unknown
  • Commit: 39cd9b32 · Trigger: schedule
  • Thinking: 125s wall

BLOCKING (1)

Root Cause

  • docs/briefs/r3-debt-paydown-program-coordination.md The canonical scope is defined by broad parent-section containment instead of debt-bearing subheading predicates → scope it to explicit debt row sections such as P0-P4, Post-merge debt, ship-with-debt-receipt rows, and future headings that actually declare tracked debt, with non-debt practice/noise headings excluded.

⚠️ The coordination shape is otherwise coherent, but the canonical ledger scope needs tightening before it becomes the R3 closure authority.

A **tracked-debt row** is any ROADMAP entry under any of the following heading shapes, current or future:

- `### Post-merge debt (...)` sections.
- `## Tracked debts — <period> analyses` section, including its `### PR #<N>` ship-with-debt-receipt sub-rows.

This comment was marked as resolved.

briansrls and others added 2 commits May 2, 2026 17:28
BLOCKING fix: prior canonical definition combined explicit enumeration
with a vague catch-all ('any other tracked-debt heading'), which is
heading-shape inferential and risks letting non-debt practice/noise
headings sneak in or genuinely-debt-bearing headings drop out.

Now: predicate-first definition (entry enumerates a specific item with
at least one of named owner / dissolution mechanism / retirement-PR /
'remove once X' condition; preamble/framing/classification excluded),
followed by an explicit current-set enumeration covering the actual
debt-bearing ROADMAP headings — not just Post-merge debt + Tracked
debts + P0-P4, but also ## Active deferrals (DB-* ledger),
## Scheduled deletions, ### §6a MethodContract triggers. Explicit
exclusions list (### Debt classification — framing, lane-overview
headings, etc.). Future-additions clause requires the predicate to
hold; the enumeration grows in lockstep with ROADMAP under tracked PR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…-rows

Per blocking review on #1533: the cited '### Reviewer-noise class — a
practice, not a debt' heading does not currently exist in ROADMAP, but
the design principle the reviewer articulates is right — predicate-
failing subheadings under debt-bearing parents must be excluded. The
predicate already encoded this; the wording previously made the parent
'## Tracked debts' look like the debt-bearing scope itself rather than
its predicate-passing sub-rows.

Now: the ## Tracked debts parent is not itself a debt row; only its
predicate-passing sub-rows (### PR #<N> + ### P0-P4) count, and any
future practice/noise subheading nested under it is excluded by the
predicate even though it sits under a debt-bearing parent.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@briansrls

Copy link
Copy Markdown
Contributor Author

The specific cited heading `### Reviewer-noise class — a practice, not a debt` does not currently exist in ROADMAP (`rg "Reviewer-noise|practice, not a debt" ROADMAP.md` returns no match), so the literal finding is not reproducible on `origin/main`. But the design principle behind it is correct — predicate-failing subheadings nested under debt-bearing parents must be excluded — and the wording previously made `## Tracked debts` look like the debt-bearing scope itself rather than its predicate-passing sub-rows.

Tightened in commit `d304702ba`:

  • `## Tracked debts` parent is not itself a debt row; only its predicate-passing sub-rows count (`### PR #` + `### P0` through `### P4`).
  • Predicate-failing sub-rows under it (e.g. existing `### Debt classification — framing` at line 328, or any future "practice, not a debt" / "reviewer-noise class" / similar non-enumerative subheading) are explicitly excluded by the predicate even though they sit under a debt-bearing parent.

The predicate (entry enumerates a specific item AND carries owner / dissolution mechanism / retirement-PR / "remove once X") already encoded this exclusion; the wording now makes it impossible to read parent-section containment as auto-inclusion.

— sent from witty-tern-193

@briansrls briansrls changed the title witty-tern-193 docs(r3): R3 Debt-Paydown brief — predicate-based tracked-debt-row scope (#1518 follow-up) May 2, 2026
@briansrls
briansrls marked this pull request as ready for review May 2, 2026 18:11
@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: codex / codex-default
  • Commit: 9bccda86 · Trigger: schedule
  • Comparison: origin/main @ eb4196af ... review/pr-1533-9bccda86 @ 9bccda86
  • Thinking: 46s wall

Exploratory observations (optional):

  • docs/briefs/r3-debt-paydown-program-coordination.md:37 already names ### P0 through ### P4 under the tracked-debts section, and line 38 repeats those same headings as a separate bullet. I don’t think this rises to a finding because the predicate remains the stated authority, but the duplicate enumeration may make the initial ledger inventory slightly easier to double-count.

Verdict: APPROVE. The diff is docs-only, narrows the authority to one canonical predicate, and threads that scope through the receipt, ledger, and close-gate language. I don’t see a concrete violation of the pinned invariants or docs discipline.

…ation

P0-P4 priority-category sections are nested under the ## Tracked debts
parent in ROADMAP, so the prior enumeration listed them twice (once as
sub-rows under the Tracked debts bullet, once as a separate bullet).
Consolidates into a single nested-bullet structure under Tracked debts;
the predicate remains the stated authority either way, but de-duped
enumeration makes the initial ledger inventory unambiguous.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review metadata

  • Provider / model: codex / unknown
  • Commit: 943cc7f8 · Trigger: schedule
  • Thinking: 160s wall

Non-blocking — Strengths

  • docs/briefs/r3-debt-paydown-program-coordination.md Design/docs-only change; the R3 ledger now has a single canonical scope authority and the close gate refers back to it instead of re-enumerating.

✅ No blocking concerns; the prior scope bug is fixed and the coordination shape is coherent.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: cursor / composer-2
  • Commit: 943cc7f8 · Trigger: schedule
  • Comparison: origin/main @ eb4196af ... review/pr-1533-943cc7f8 @ 943cc7f8
  • Thinking: 40s wall

Findings

None. This diff only updates docs/briefs/r3-debt-paydown-program-coordination.md: it adds a predicate-based definition of “tracked-debt row,” ties the per-PR receipt rule, Slice 1 ledger, and close gate to that single definition (reducing scope drift / parallel prose authority for process docs), and names exclusions plus an amendment path when ROADMAP shape grows. That aligns with P5 / scaffold & tracked-debt intent in INVARIANTS.md (explicit scope, trigger to update the brief when headings change). CODING.md / TESTING.md do not apply (no Rust or tests). docs/modeling-discipline.md substrate checks (enums, stage boundaries) do not apply here.

I spot-checked current ROADMAP.md headings against the cited lines (276, 298, 328, 350–379, 431); they match this tree, so the new “currently at ROADMAP line …” anchors are not stale at merge time in this worktree.

Verdict

APPROVE — Narrow documentation follow-up (#1518): one canonical predicate for R3 ledger/receipt scope, consistent cross-references, no rubric violations in the diff.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: claude / claude-opus-4-7
  • Commit: 7fc99e22 · Trigger: schedule
  • Comparison: origin/main @ 02e07fc0 ... review/pr-1533-7fc99e22 @ 7fc99e22
  • Thinking: 13s wall

APPROVE — Docs-only change to a single brief. Adds a canonical predicate definition for "tracked-debt row" with explicit enumeration + exclusions, and rewires the per-PR rule, Slice-1 ledger scope, and acceptance gate to reference that single definition. This is exactly the kind of single-authority / no-drift-between-sites move INVARIANTS encourages, and there's nothing in the diff that touches code or violates modeling/coding/testing discipline.

Exploratory observation (non-blocking): the enumeration cites specific ROADMAP line numbers (276, 298, 328, 350-379, 431). Line numbers drift fast; the predicate is the authority (as the doc explicitly says), but future readers will hit stale anchors. A follow-up could swap the line numbers for heading-anchor links.

…view

Per exploratory observation: line numbers drift fast; predicate is the
authority, but stale anchors hurt future readers. Replaces inline
'currently at ROADMAP line N' citations with markdown links to
ROADMAP.md heading anchors (GitHub-style slugified). Six citations
updated: P0-P4 priority categories, Active deferrals, Scheduled
deletions, §6a MethodContract triggers, Debt classification — framing
(both occurrences).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: cursor / composer-2
  • Commit: a3d208f3 · Trigger: schedule
  • Comparison: origin/main @ 02e07fc0 ... review/pr-1533-a3d208f3 @ a3d208f3
  • Thinking: 32s wall

Findings: None. This diff only updates docs/briefs/r3-debt-paydown-program-coordination.md: it adds a predicate-based definition of a tracked-debt row, ties the per-PR receipt rule, Slice 1 ledger, and close gate to that definition, and states that the predicate is authoritative while the heading list is an explicit starting set maintained with ROADMAP. That matches the rubric’s idea of bounded, documented scope and named extension (“manager amends this canonical definition section … when the ROADMAP grows a new debt-bearing heading shape”) without touching compiler substrate, APIs, or tests — so nothing here violates INVARIANTS.md / docs/modeling-discipline.md / CODING.md / TESTING.md in a way those docs regulate (they target modeling and Rust/tests, not this coordination brief).

Verdict: APPROVE — Narrow docs-only clarification for R3 (#1518 follow-up); predicate + single canonical section reduces drift risk between receipt rule, ledger, and gate; no diff-grounded issues.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: claude / claude-opus-4-7
  • Commit: 968507fb · Trigger: schedule
  • Comparison: origin/main @ cbdb13ce ... review/pr-1533-968507fb @ 968507fb
  • Thinking: 11s wall

Docs-only change introducing a canonical predicate definition for "tracked-debt row" and threading references to it through the per-PR rule, ledger scope, and acceptance gate. Single source of truth, replaces the prior narrower ### Post-merge debt (...) enumeration.

Verdict: APPROVE — Docs-only diff, scoped to a single brief. The new definition section establishes one canonical predicate and downstream sections reference it rather than re-enumerating, which directly serves the "single authority / cannot drift between sites" discipline. No code, invariants, or modeling concerns touched.

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review metadata

  • Provider / model: codex / unknown
  • Commit: 968507fb · Trigger: schedule
  • Thinking: 137s wall

BLOCKING (1)

Root Cause

  • docs/briefs/r3-debt-paydown-program-coordination.md Canonical scope enumeration was not checked against the live ROADMAP anchors → either add the ROADMAP row in this PR or remove/fix the stale §6a MethodContract entry.

⚠️ One stale canonical-scope entry needs correction before this can be the R3 close-gate authority.

The parent `## Tracked debts` container is **not itself** a debt row, and predicate-failing sub-rows under it (e.g. [`### Debt classification — framing`](../../ROADMAP.md#debt-classification--framing), or any future "practice, not a debt" / "reviewer-noise class" / similar non-enumerative subheading) are excluded per the predicate above even though they sit under a debt-bearing parent.
- [`## Active deferrals — follow-up work from merged PRs`](../../ROADMAP.md#active-deferrals--follow-up-work-from-merged-prs) (`DB-*` deferral ledger; one-line entries point at `docs/db-history/db-<N>.md`).
- [`## Scheduled deletions — scaffolds with named dissolution triggers`](../../ROADMAP.md#scheduled-deletions--scaffolds-with-named-dissolution-triggers) (pointer to external table at `docs/history/roadmap-scheduled-deletions.md`).
- [`### §6a MethodContract per-field dissolution triggers (R2 Release follow-through)`](../../ROADMAP.md#6a-methodcontract-per-field-dissolution-triggers-r2-release-follow-through).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BLOCKING: The canonical tracked-debt union names a ROADMAP §6a MethodContract... anchor that does not exist in ROADMAP.md, so the manager ledger would contain an unverifiable row and violate the one-hop debt-receipt authority rule.

@briansrls

Copy link
Copy Markdown
Contributor Author

The blocking finding is incorrect. The heading does exist in ROADMAP.md, and the anchor is the standard GitHub-slugified form — anchors are never literally present in markdown source; GitHub auto-generates them from heading text.

Verification on `origin/main`:

```
$ git show origin/main:ROADMAP.md | grep -n "MethodContract per-field"
431:### §6a `MethodContract` per-field dissolution triggers (R2 Release follow-through)
```

GitHub's slugify: lowercase + strip non-`[a-z0-9 -_]` (drops `§`, backticks, parens) + spaces → dashes. Applied to `§6a `MethodContract` per-field dissolution triggers (R2 Release follow-through)` → `6a-methodcontract-per-field-dissolution-triggers-r2-release-follow-through`. That's exactly what my link uses.

Same pattern is already used by other in-tree docs that link to ROADMAP anchors (e.g. `docs/perf/clone-elimination.md:3` links to `ROADMAP.md#active-deferrals--follow-up-work-from-merged-prs`, and my `## Active deferrals` link uses the same double-dash slug). One-hop debt-receipt authority is satisfied: open the link, the heading is at line 431.

Probable cause same as previous false-positive findings on this PR thread: reviewer is grepping ROADMAP.md for a literal anchor string, but markdown anchors are generated by the renderer at view time, not authored as text.

— sent from witty-tern-193

@briansrls

Copy link
Copy Markdown
Contributor Author

Duplicate of the immediately-prior blocking review on this PR; same response. The `§6a` heading exists on `origin/main`:

```
$ git show origin/main:ROADMAP.md | grep -n "MethodContract per-field"
431:### §6a `MethodContract` per-field dissolution triggers (R2 Release follow-through)
```

The link in the brief uses the standard GitHub-slugified anchor (`§`/backticks/parens stripped, spaces → dashes): `#6a-methodcontract-per-field-dissolution-triggers-r2-release-follow-through`. Same pattern as other in-tree refs to ROADMAP anchors (e.g. `docs/perf/clone-elimination.md:3`). The anchor isn't literally in ROADMAP.md source — markdown anchors are generated by the renderer at view time, not authored as text.

— sent from witty-tern-193

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: cursor / composer-2
  • Commit: a6a4f8e0 · Trigger: schedule
  • Comparison: origin/main @ 8b1c10ca ... review/pr-1533-a6a4f8e0 @ a6a4f8e0
  • Thinking: 13s wall

Findings: None. This diff only updates docs/briefs/r3-debt-paydown-program-coordination.md. CODING.md and TESTING.md target Rust/tests under src/ and test discipline; nothing here touches them. INVARIANTS.md / docs/modeling-discipline.md matter for substrate and compiler modeling; this is program-coordination prose. What it does do—one canonical predicate for “tracked-debt row,” explicit inclusion/exclusion, and “downstream refers back” so ledger/receipt/closure stay aligned—is consistent with P2-style single authority (one definition, no competing unions), not a violation.

Verdict: APPROVE — Narrow documentation tightening for R3 debt tracking scope; clear predicate + enumerated starting set + drift guard; no rubric violations grounded in this diff.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: claude / claude-opus-4-7
  • Commit: e9487f8d · Trigger: schedule
  • Comparison: origin/main @ 68f9a624 ... review/pr-1533-e9487f8d @ e9487f8d
  • Thinking: 11s wall

Docs-only PR adding a canonical "tracked-debt row" predicate definition to the R3 brief.

Verdict: APPROVE — Docs-only change to a brief in docs/briefs/. Adds a clear predicate + enumerated starting set with explicit inclusions and exclusions, and threads the canonical definition through the per-PR rule, Slice 1 ledger, and acceptance gate so scope can't drift between sites. Tightens, rather than weakens, the closure gate. No invariant/CODING/TESTING surface touched.

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review metadata

  • Provider / model: codex / unknown
  • Commit: e9487f8d · Trigger: schedule
  • Thinking: 146s wall

BLOCKING (1)

Root Cause

  • docs/briefs/r3-debt-paydown-program-coordination.md Canonical scope mixes ROADMAP-row predicates with external ledger pointers → either make scheduled-deletion table rows explicit tracked-debt rows with repo-relative anchors, or mirror concrete scheduled-deletion rows in ROADMAP before the manager ledger consumes them.

⚠️ One new canonical-scope ambiguity remains, and the prior stale ROADMAP anchor comment is not resolved in this diff.


The parent `## Tracked debts` container is **not itself** a debt row, and predicate-failing sub-rows under it (e.g. [`### Debt classification — framing`](../../ROADMAP.md#debt-classification--framing), or any future "practice, not a debt" / "reviewer-noise class" / similar non-enumerative subheading) are excluded per the predicate above even though they sit under a debt-bearing parent.
- [`## Active deferrals — follow-up work from merged PRs`](../../ROADMAP.md#active-deferrals--follow-up-work-from-merged-prs) (`DB-*` deferral ledger; one-line entries point at `docs/db-history/db-<N>.md`).
- [`## Scheduled deletions — scaffolds with named dissolution triggers`](../../ROADMAP.md#scheduled-deletions--scaffolds-with-named-dissolution-triggers) (pointer to external table at `docs/history/roadmap-scheduled-deletions.md`).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BLOCKING: The canonical predicate says tracked-debt rows are ROADMAP entries, but this bullet includes only a ROADMAP pointer to an external scheduled-deletions table, so the Slice 1 ledger can either miss the actual scaffold rows or count the pointer as a fake row; violates Documentation Describes Live State and single-authority debt receipt scope.

BLOCKING fix: ROADMAP ## Scheduled deletions is a 4-line pointer-only
section forwarding the row inventory to docs/history/roadmap-scheduled-
deletions.md. Prior bullet listed the ROADMAP section as a debt-row
container, which is predicate-failing (non-enumerative); the actual
scaffold rows (ArrowBody::Pending, ValueBody::Unparsed, etc.) live in
the delegate file's ### Table.

Predicate now extends 'authoritative location' to delegate files when
ROADMAP carries a delegating pointer. Two affected bullets updated:

- ## Scheduled deletions: cites both the ROADMAP pointer and the
  delegate file's ### Table; lists the live scaffold-row classes by
  name so ledger inventory reaches the actual rows.
- ## Active deferrals: notes that DB-1..DB-20 summary lines are inline
  in ROADMAP, full ledger at docs/history/roadmap-active-deferrals.md
  (which is also a delegate file); per-DB notes at docs/db-history/.

Manager ledger can no longer stop at a pointer-only section and miss
the actual scaffold rows.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@briansrls

Copy link
Copy Markdown
Contributor Author

This blocking review fired on `e9487f8d` (pre-fix). The exact root cause it names — canonical scope mixing ROADMAP-row predicates with external ledger pointers — was addressed in commit `08354d29d` already at HEAD, in response to the immediately-prior inline blocking review on the same line.

Current HEAD (`08354d29d`):

  1. Predicate extended to define an "authoritative location" rule: ROADMAP.md by default, but when ROADMAP contains a delegating pointer (a non-enumerative section forwarding the row inventory to a named external file), the predicate-passing rows in the delegate file count and both the ROADMAP pointer and the delegate file's row container are cited together.

  2. `## Scheduled deletions` bullet rewritten: now cites both the ROADMAP pointer AND `docs/history/roadmap-scheduled-deletions.md` `### Table` as the actual debt-row container; lists the live scaffold-row classes by name (`ArrowBody::Pending`, `ArrowBody::Unparsed` cases, `ValueBody::Unparsed`, `TransformTarget::Operator`, `LogicalOp` / `OperatorKind::Logical`, `ResolvedByName` AtomPayload, compiler-internal `declaration_by_name` call sites, `Node.name` field) so ledger inventory reaches the actual rows.

  3. `## Active deferrals` bullet also now distinguishes inline DB-1..DB-20 summary lines from the full ledger at `docs/history/roadmap-active-deferrals.md`.

Re: "prior stale ROADMAP anchor comment not resolved" — that referred to the §6a anchor finding, which is incorrect on inspection (heading exists at ROADMAP.md:431, anchor matches GitHub slug rule; same pattern used by other in-tree refs). Already replied with cat-file verification on the prior comment.

— sent from witty-tern-193

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: codex / codex-default
  • Commit: 08354d29 · Trigger: schedule
  • Comparison: origin/main @ 68f9a624 ... review/pr-1533-08354d29 @ 08354d29
  • Thinking: 55s wall

Verdict: APPROVE

This is a docs-only coordination change, and it improves single-authority discipline by defining one canonical tracked-debt-row predicate, then having the per-PR rule, Slice 1 ledger, and acceptance gate refer back to it. I did not see a concrete violation of the pinned invariants, coding, or testing discipline in the diff.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: claude / claude-opus-4-7
  • Commit: a2bb3249 · Trigger: schedule
  • Comparison: origin/main @ 37e8f718 ... review/pr-1533-a2bb3249 @ a2bb3249
  • Thinking: 13s wall

Docs-only PR. Tightens the definition of "tracked-debt row" with a predicate and enumerates current ROADMAP shapes that satisfy it. No code touched.

Verdict: APPROVE — docs-only refinement that defines a canonical predicate for "tracked-debt row" and points downstream sections (per-PR rule, Slice 1 ledger, closure gate) at that single definition. This actually improves single-authority discipline (one definition, three referrers) rather than violating it. No diff lines conflict with INVARIANTS / modeling-discipline / CODING / TESTING.

@briansrls
briansrls merged commit 89f4a50 into main May 2, 2026
4 checks passed
briansrls added a commit that referenced this pull request May 3, 2026
…on-gated) (#1560)

* docs(r3): R3 Debt-Paydown program — per-PR discipline + lane coordination brief

Pre-spawn coordination brief for the 9th standing R3 manager (Debt-Paydown
Mgr) authored per inbox #1134 re-task. Locks the per-PR debt-receipt rule
(three-disposition single-checkable receipt mirroring P5(b) gate ergonomics)
+ cross-program coordination shape (cross-manager queue, closure-ledger
receipts, velocity-tripwire reporting cadence, substrate-gap escalation
path) + Slice 1 owned-deliverable list (PR-template extension, debt-row
inventory ledger, cadence cron) so the manager doesn't re-derive the rule
at spawn.

Layered on INVARIANTS.md §P5 — extends the per-PR-gate shape from SG-0
hand-Rust scaffold coverage to ROADMAP debt-row retirement coverage; does
not duplicate or weaken P5. Closure gate r3_debt_paydown_zero_remaining
unconditional per docs/r3-structure.md line 173 (no post-R3 deferral path).

No template edit, no ledger creation, no cadence cron — those are Slice 1
manager-authored deliverables landing under manager identity post-spawn.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): make Slice 1 / pre-spawn separation explicit per PB review

Adds a one-paragraph framing line ahead of the Slice 1 list noting the
brief is policy/coordination only — Slice 1 entries describe manager-owned
post-spawn deliverables, not authoring already in motion. Existing
per-bullet 'post-spawn' / 'under manager identity' phrasing unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): tighten close gate — routing is not dissolution per codex review

BLOCKING fix: Acceptance bullet previously read substrate-gap routing as a
terminal alternative to retirement-PR-merged, which would let a row satisfy
the close gate without being retired — re-introducing the post-R3 deferral
pattern P5 explicitly forbids. Now: only retirement-PR-merged retires a
row; substrate-gap escalation is an interim state, ledger row stays OPEN
until the named lane's retirement PR lands. STOP-AND-ESCALATE clause for
unretirable rows tightened to match.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): broaden ledger scope to all tracked-debt headings per codex review

BLOCKING fix: Per-PR rule + ledger inventory + Acceptance bullet previously
scoped to ROADMAP ### Post-merge debt (...) sections only. ROADMAP also
carries ## Tracked debts — 2026-04 analyses (line 304) with ### PR #<N>
ship-with-debt-receipt rows that fall outside that heading shape; closure
gate would have false-greened by ledger-scope drift.

Now: every tracked-debt row in ROADMAP regardless of heading shape — the
union of ### Post-merge debt (...) + ## Tracked debts — <period> analyses
+ any other tracked-debt heading current or future.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): explicitly enumerate P0-P4 in tracked-debt union per codex review

BLOCKING fix follow-up: ROADMAP also carries tracked-debt rows under
### P0 / ### P1 / ### P2 / ### P3 / ### P4 priority-category sections
(real bugs / fabrication / structural compression / modeling gaps / type
refinement — currently at ROADMAP lines 350-379), separate from
### Post-merge debt and ## Tracked debts headings. Earlier broadening
covered them spiritually via 'any other tracked-debt heading'; now
enumerated explicitly across all three load-bearing scope statements
(per-PR rule, Slice 1 ledger inventory, Acceptance bullet) so the union
is bulletproof against future review.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): consolidate canonical tracked-debt-row definition per PB review

Per PB review on #1533: the heading-shape union is now broad enough that
keeping the canonical definition in one place prevents future drift.
Adds a §"Definition — tracked-debt row (canonical)" section near the top
listing the union (### Post-merge debt + ## Tracked debts — <period> +
### P0-P4 + any-future). Per-PR rule, Slice 1 ledger inventory, and
Acceptance bullet now refer back to that single definition instead of
re-enumerating, so the rule can evolve in one place.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): predicate-based tracked-debt-row scope per codex review

BLOCKING fix: prior canonical definition combined explicit enumeration
with a vague catch-all ('any other tracked-debt heading'), which is
heading-shape inferential and risks letting non-debt practice/noise
headings sneak in or genuinely-debt-bearing headings drop out.

Now: predicate-first definition (entry enumerates a specific item with
at least one of named owner / dissolution mechanism / retirement-PR /
'remove once X' condition; preamble/framing/classification excluded),
followed by an explicit current-set enumeration covering the actual
debt-bearing ROADMAP headings — not just Post-merge debt + Tracked
debts + P0-P4, but also ## Active deferrals (DB-* ledger),
## Scheduled deletions, ### §6a MethodContract triggers. Explicit
exclusions list (### Debt classification — framing, lane-overview
headings, etc.). Future-additions clause requires the predicate to
hold; the enumeration grows in lockstep with ROADMAP under tracked PR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): clarify parent-section containment vs predicate-passing sub-rows

Per blocking review on #1533: the cited '### Reviewer-noise class — a
practice, not a debt' heading does not currently exist in ROADMAP, but
the design principle the reviewer articulates is right — predicate-
failing subheadings under debt-bearing parents must be excluded. The
predicate already encoded this; the wording previously made the parent
'## Tracked debts' look like the debt-bearing scope itself rather than
its predicate-passing sub-rows.

Now: the ## Tracked debts parent is not itself a debt row; only its
predicate-passing sub-rows (### PR #<N> + ### P0-P4) count, and any
future practice/noise subheading nested under it is excluded by the
predicate even though it sits under a debt-bearing parent.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): de-duplicate P0-P4 enumeration per codex exploratory observation

P0-P4 priority-category sections are nested under the ## Tracked debts
parent in ROADMAP, so the prior enumeration listed them twice (once as
sub-rows under the Tracked debts bullet, once as a separate bullet).
Consolidates into a single nested-bullet structure under Tracked debts;
the predicate remains the stated authority either way, but de-duped
enumeration makes the initial ledger inventory unambiguous.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): swap ROADMAP line numbers for heading anchors per claude review

Per exploratory observation: line numbers drift fast; predicate is the
authority, but stale anchors hurt future readers. Replaces inline
'currently at ROADMAP line N' citations with markdown links to
ROADMAP.md heading anchors (GitHub-style slugified). Six citations
updated: P0-P4 priority categories, Active deferrals, Scheduled
deletions, §6a MethodContract triggers, Debt classification — framing
(both occurrences).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): handle delegating-pointer ROADMAP sections per codex review

BLOCKING fix: ROADMAP ## Scheduled deletions is a 4-line pointer-only
section forwarding the row inventory to docs/history/roadmap-scheduled-
deletions.md. Prior bullet listed the ROADMAP section as a debt-row
container, which is predicate-failing (non-enumerative); the actual
scaffold rows (ArrowBody::Pending, ValueBody::Unparsed, etc.) live in
the delegate file's ### Table.

Predicate now extends 'authoritative location' to delegate files when
ROADMAP carries a delegating pointer. Two affected bullets updated:

- ## Scheduled deletions: cites both the ROADMAP pointer and the
  delegate file's ### Table; lists the live scaffold-row classes by
  name so ledger inventory reaches the actual rows.
- ## Active deferrals: notes that DB-1..DB-20 summary lines are inline
  in ROADMAP, full ledger at docs/history/roadmap-active-deferrals.md
  (which is also a delegate file); per-DB notes at docs/db-history/.

Manager ledger can no longer stop at a pointer-only section and miss
the actual scaffold rows.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): R3 row-85 PB-Zero method-template projection packet (decision-gated)

Authors a docs-only worker packet that turns Grounding #1133's "Phase-2
retirement blocked on Gap 4 + Gap 5" signal into a concrete dispatch
shape grounded in the merged audits on main.

Per the merged STOP-matrix audit (no canonical read surface chosen),
this packet is explicitly DECISION-GATED: the first PR on R3 ledger
row 85 / ROADMAP.md:512 is a Substrate-Manager + Director
decision-routing artifact, not a PB worker implementation. The packet
defines (a) that decision-routing artifact's required content, (b) the
PB-Zero Gap-4 worker shape that becomes dispatchable only after the
decision lands, and (c) the Gap-5 LanguageSpec-rewrite worker
sequenced strictly after Gap 4 merges.

Acceptance criteria preserve MethodRef + runtime_template +
emit_template + wraps_result + placeholder_convention; encode the
non-duplication rule (no v2 use of v3.std.*; no second map authority;
no copied template text); name STOP+PING conditions for canonical
artifact ambiguity, new-carrier requests, row-parity gaps,
source-root shortcuts, and import-bridge violations; and require
per-PR debt receipts against ROADMAP.md:512 / ledger row 85.

Refs:
- docs/briefs/method-template-consumer-migration-audit.md (#1549)
- docs/audit/pb-zero-v2-method-template-row-authority-consumer-gap.md
- docs/audit/pb-zero-v2-canonical-read-surface-options-stop-matrix.md
- ROADMAP.md:512
- docs/debt/r3-debt-paydown-ledger-2026-05-02.md:85

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): clarify row-85 packet ownership as active-Substrate-manager (R3)

Per @briansrls review on #1560: packet inherited "R2 Substrate Manager"
wording from older audits, but row 85 and adjacent method-template
substrate gaps route to R3 Substrate today. Reframe owner labels as
"active Substrate manager" with a one-line note that older audits
referenced predate R3 routing. Gate shape unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): split row-85 ownership from §4 decision-routing ownership

Reviewer flagged P2 parallel-authority risk: my prior reframe read
as "R3 Substrate owns row 85," conflicting with ROADMAP.md:512 and
ledger row 85 which name R3 Grounding.

Clarify the split: row 85 (consumer-migration implementation) is
R3 Grounding-owned per ROADMAP/ledger, unchanged. The §4 canonical-
read-surface decision-routing artifact is a distinct deliverable
that gates row-85 implementation; the two PB audits route that
decision to active Substrate manager + Director per INVARIANTS P1/P2.
Sequencing: Substrate/Director §4 artifact lands first → R3
Grounding implements Gap 4 + Gap 5 + leaf-emit migrations against
that decision.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): close S6 escape hatch; require P5 responsible-bridge for any deviation

Reviewer flagged S6's "or §4 must explicitly accept the temporarily-
open state" as contradicting A5's hard STOP and bypassing INVARIANTS
P5's named-bridge discipline.

Tighten S6 to a hard STOP matching A5: any deviation from "Substrate
closes ledger row 82 first" requires a named, bounded INVARIANTS P5
responsible-bridge artifact authored by Substrate + Director (named
trigger, scoped surface, ratchet, closure condition), not §4 implicit
acceptance.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(r3): align §5.1 field list with A4 (include dag_method)

Editorial consistency per cursor review: §5.1's public-API sentence
listed 4 fields while A4 requires 5. Add `dag_method` to §5.1.

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