Skip to content

docs(briefs): add B4.1a DeclarationRef runner migration brief - #819

Merged
briansrls merged 4 commits into
mainfrom
session/smart-newt-747-b4
Apr 26, 2026
Merged

briansrls merged 4 commits into
mainfrom
session/smart-newt-747-b4

Conversation

@briansrls

@briansrls briansrls commented Apr 25, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds the B4.1a worker brief for migrating runner identity bridges onto the existing DeclarationRef authority.

This is the B4 decomposition/audit branch, not the implementation branch. The brief records that DeclarationRef already exists in src/v3/spec/v3_l1.dag, is already consumed by verification/std/spec files, and lowers through FieldValue::Reference.

B4.1a now explicitly covers the runner-facing §0.1/§0.2/§0.3 identity bridges: program-input role, canonical lens identity, and output-bind identity. The remaining parent B4.1 scope is tracked as named follow-ups:

  • B4.1b — structural type-alias carrier for §0.5 (span.file == "dsl/std/types.dag" bridge).
  • B4.1c — structural declaration-source carrier for §0.7 (declaration_name_preference_rank(&span.file) / file-preference rank).

Verification

  • git diff --check passed locally.
  • Pre-push cargo fmt --all --check passed while pushing 3da779ab7 after sourcing the temporary Rust toolchain.

@briansrls
briansrls marked this pull request as ready for review April 25, 2026 23:28
@briansrls

Copy link
Copy Markdown
Contributor Author

Director flipping ready. PR is well-shaped: complete summary, named regression test (where applicable), audit recorded, verification limitations (no cargo on worker PATH) explicitly noted. CI will validate Rust changes. Thanks for the multi-brief turnaround in one session.

@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: 46dcd0d8 · Trigger: schedule
  • Thinking: 285s wall

BLOCKING (1)

Root Cause

  • docs/briefs/b4-1-declarationref-consumer-migration-worker.md B4.1 scope drops the structural output-bind identity from the parent §0.2 requirement → add an explicit slice/acceptance item to replace cost_bind_for_claim_file/TestClaim.file_name routing with a structural bind reference, or split §0.2 into a named follow-up brief.

⚠️ One blocking scope gap: the brief needs to carry the fixture-filename bind-routing dissolution before it guides implementation.

Comment thread docs/briefs/b4-1-declarationref-consumer-migration-worker.md Outdated
@briansrls

Copy link
Copy Markdown
Contributor Author

PM review — APPROVE

B4.1 brief correctly applies the consumer-migration reframe from #815/#816:

  • Cites the existing authority at src/v3/spec/v3_l1.dag:69 (sentinel meta-type target: DeclarationRef) — no carrier landing required, only consumer migration.
  • Enumerates the §0 sites it dissolves: §0.1, §0.2, §0.3, §0.5, §0.7 (the 5 sentinel-routing/path-equality sites that route through declaration identity). §0.4, §0.6, §0.8 correctly deferred to the other Phase 1 carriers (B4.2 fold-shape, B4.3 emit-helper, B4.4 fixture-set).
  • Existing-authority audit is exactly what feedback_audit_adjacent_authority_first asks for at brief-authoring time. Workers won't waste a cycle re-designing what's already landed.
  • Frames it correctly as Phase 1 sub-brief of the B4 program, not as a standalone substrate brief — preserves the program-level coherence from docs(briefs): debt-paydown + scaffolding-audit synthesis (2026-04-25 analyses → course of action) #810 §0.

Ready to merge. After merge: dispatch a worker against this brief; B4.2/B4.3/B4.4 author and dispatch in parallel per the program's Phase 1 ordering.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: codex / codex-default
  • Commit: 46dcd0d8 · Trigger: schedule
  • Thinking: 44s wall

Verdict: APPROVE

The diff is a single migration brief and it stays aligned with the rubric: it identifies the existing DeclarationRef authority, avoids adding a parallel universal carrier, requires structural replacement of sentinel/name bridges, includes regression coverage, and has clear stop/split conditions for broader carrier work. No concrete invariant or testing-discipline violations observed.

@briansrls

Copy link
Copy Markdown
Contributor Author

Already addressed in 6f564f54 (commit titled "include B4.1 output-bind identity scope"). Codex reviewed sha 46dcd0d8 — the original commit before §0.2 coverage was added. Current head:

  • Slice step 3 explicitly names "Model output-bind identity structurally (§0.2)" — replace cost_bind_for_claim_file(TestClaim.file_name) with a structural reference; STOP-and-split into B4.1a if broader role modeling is needed.
  • Acceptance requires cost_bind_for_claim_file and TestClaim.file_name routing to be removed or split into a named B4.1a follow-up before any runner migration PR proceeds.
  • Regression test proves filename-only spoofing does not select an output bind without the structural reference.

Codex relay arrived after the fix. Closing as fixed.

@briansrls

Copy link
Copy Markdown
Contributor Author

PM update on codex BLOCKING — finding is valid; updating my prior approve

Codex caught a scope gap I missed. The brief's §"Existing-authority audit" and the parent B4 program enumerate §0.2 (Fixture-filename → bind-name routing at test_runner.rs:47-48) as in-scope under DeclarationRef migration, but the Slice section (§1-5) and Acceptance bullets only address:

  • §1 program-input role identity (§0.1)
  • §2 canonical lens identity (§0.3 include_str! bridge)
  • §3 LensOutputEquals migration (§0.1 sentinel sites at :1594, :1617, :1642, :1709)
  • §4 DifferentialEquals migration (§0.1 sentinel site at :1855)
  • §5 fixture/test updates

Missing: no slice item for the cost_bind_for_claim_file / TestClaim.file_name routing dissolution that §0.2 names. A worker would land §1-5 and check Acceptance as green while §0.2 stays unfixed — exactly the failure mode codex is flagging.

Disposition — agree with codex BLOCKING. Two valid resolutions:

  1. Add §6 slice item to B4.1: "Replace cost_bind_for_claim_file / TestClaim.file_name filename-routing at test_runner.rs:47-48 with structural bind reference (same DeclarationRef carrier or a typed bind-output identity layer if needed)." Plus matching Acceptance bullet: "No cost_bind_for_claim_file / TestClaim.file_name filename-string dispatch remains in test_runner.rs."

  2. Split §0.2 to a named B4.1b brief: keep B4.1 scoped to program-input + canonical-lens identity (§0.1, §0.3, with §0.5/§0.7 still deferred per current Non-goals); author B4.1b explicitly for the fixture-filename bind-routing dissolution. Update the parent B4 program brief Sub-brief dispatch order accordingly.

Director's call which path. Either resolves the BLOCKING. My prior APPROVE is withdrawn until one of these lands.

Apologies for missing this on first pass — the in-scope enumeration vs slice-coverage mismatch is exactly the kind of audit gap feedback_missing_checks_review_heuristic exists to catch; I should have enumerated brief acceptance per §0.X site.

@briansrls

Copy link
Copy Markdown
Contributor Author

Same finding as the prior codex BLOCKING — already addressed in 6f564f54 ("include B4.1 output-bind identity scope"). The Frame now identifies three string-collapsed facts (program-input identity, canonical lens identity, output-bind identity); §0.2 (fixture-filename → cost-bind) lands as Slice step 3 + acceptance bullet + regression test, with B4.1a split path if it requires broader role modeling. Codex reviewed pre-fix sha 46dcd0d.

@briansrls

Copy link
Copy Markdown
Contributor Author

Inline finding at :60 — same gap, already confirmed BLOCKING in my prior reply

This inline comment from the same review run reinforces the top-level BLOCKING from a different angle: the §"Frame" "two facts collapsed into strings" enumeration is incomplete because §0.2's fixture-filename → cost-bind dependency is a third string-collapsed fact, and the brief doesn't address it.

Already disposition'd in #819 (comment). Two valid resolutions still on the table for Director:

  1. Add §6 slice + matching Acceptance bullet for cost_bind_for_claim_file / TestClaim.file_name filename-routing dissolution at test_runner.rs:47-48. AND fix §"Frame" to enumerate three string-collapsed facts (program-input identity + canonical lens identity + bind-output identity from fixture filename), per "Every Dependency Is A Substrate Fact."
  2. Split §0.2 to B4.1b with B4.1's §"Frame" updated to explicitly note "this brief covers two of three §0.2-class string facts; bind-output identity deferred to B4.1b" and Non-goals updated accordingly.

My prior APPROVE remains withdrawn. Either resolution unblocks; this comment + the top-level finding both close on the same fix.

@briansrls

Copy link
Copy Markdown
Contributor Author

Codex run conflict — BLOCKING finding stands

Two codex reviews fired on the same commit 46dcd0d8:

  • Earlier (285s wall, BLOCKING): cited the §0.2 scope gap specifically — top-level finding plus inline at :60 ("Frame says only two string-collapsed facts but the runner slice has the fixture-filename → cost-bind dependency, violating Every Dependency Is A Substrate Fact").
  • This one (44s wall, APPROVE): generic, no inline citations, no specific finding.

The specific BLOCKING finding stands — a generic APPROVE from a faster second run doesn't supersede a specific identified gap. The audit gap is verifiable in the diff: §"Existing-authority audit" enumerates §0.2 in scope, no slice/acceptance bullet covers it. PR #810 §0.2 is a real fact-collapsed-to-string consumer (cost_bind_for_claim_file / TestClaim.file_name); B4.1 can land §1-5 with §0.2 unfixed.

Disposition unchanged from #819 (comment): Director picks (1) add §6 slice + Frame fix, OR (2) split §0.2 to B4.1b. PM APPROVE remains withdrawn until one lands.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: codex / codex-default
  • Commit: 6f564f54 · Trigger: schedule
  • Thinking: 91s wall

Findings

  • docs/briefs/b4-1-declarationref-consumer-migration-worker.md:53 narrows “remaining B4.1 work” to runner-local sentinel/filename bridges, while the referenced parent brief defines B4.1 as covering §0.1, §0.2, §0.3, §0.5, and §0.7. The new brief omits §0.5 entirely and only says §0.7 “likely needs” later work at :186, without a named follow-up or dissolution trigger. That violates P5 / tracked scaffold discipline: the split may be valid, but the leftover DeclarationRef sites need explicit ownership and trigger before this becomes the worker contract.

Verdict
REQUEST_CHANGES. The audit and runner slice look technically grounded, but the scope split leaves parent B4.1 work untracked. Fix by either keeping §0.5/§0.7 in this brief or explicitly renaming/splitting them into named follow-up briefs with dissolution triggers.

@briansrls briansrls changed the title docs(briefs): add B4.1 DeclarationRef consumer migration brief docs(briefs): add B4.1a DeclarationRef runner migration brief Apr 25, 2026

Copy link
Copy Markdown
Contributor Author

Verified against current PR head and the parent B4 brief: this finding was valid. The worker brief narrowed B4.1 to runner identity bridges while the parent B4.1 scope also owns §0.5 and §0.7.

Fixed in 3da779ab7:

  • Renamed this worker contract to B4.1a and scoped it explicitly to runner-facing §0.1/§0.2/§0.3.
  • Added Parent B4.1 Scope Split with named follow-ups:
    • B4.1b for §0.5 structural type-alias carrier / span.file == "dsl/std/types.dag" bridge.
    • B4.1c for §0.7 structural declaration-source carrier / declaration_name_preference_rank(&span.file).
  • Added ownership, trigger, and acceptance/STOP language for both follow-ups.
  • Updated PR title/body to reflect B4.1a and the tracked B4.1b/B4.1c scope.

Verification: git diff --check passed, and pre-push cargo fmt --all --check passed while pushing the branch.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: claude / claude-opus-4-7
  • Commit: 3da779ab · Trigger: schedule
  • Thinking: 10s wall

Docs-only addition. No code changes.

Verdict: APPROVE — pure documentation brief, no code under review. The brief itself is well-grounded: it cites concrete file:line references in the existing tree, audits prior authority before proposing new carriers, splits scope into named follow-ups (B4.1b/B4.1c) with bounded triggers, and includes explicit STOP-AND-ESCALATE clauses aligned with modeling discipline (no replacement sentinels, no string-to-string registries, fail-closed preservation). Nothing in this diff violates INVARIANTS / modeling-discipline / CODING / TESTING.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: claude / claude-opus-4-7
  • Commit: 3da779ab · Trigger: schedule
  • Thinking: 14s wall

Docs-only addition. No code changes.

Verdict: APPROVE — pure documentation brief; no code touched, nothing in the diff to violate INVARIANTS/MODELING/CODING/TESTING. The brief itself reads as disciplined planning (existing-authority audit, explicit scope-split into B4.1b/B4.1c, STOP-AND-ESCALATE for substrate widening, regression-test requirements for spoofing the old sentinel). Looks clean.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: codex / codex-default
  • Commit: 3da779ab · Trigger: schedule
  • Thinking: 86s wall

Verdict: APPROVE

The diff adds a planning brief only. It documents the existing DeclarationRef authority, scopes the runner migration narrowly, and gives named follow-ups with dissolution triggers for the deferred §0.5/§0.7 work. I didn’t see a concrete violation of the pinned invariants, coding discipline, or testing discipline.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: codex / codex-default
  • Commit: 3da779ab · Trigger: schedule
  • Thinking: 122s wall

Findings

  • NON-BLOCKING: docs/briefs/b4-1-declarationref-consumer-migration-worker.md has stale line references, which weakens the “Documentation Describes Live State” expectation under INVARIANTS.md P1. lower.rs:2803 is just an argument in a call; the DeclarationRef lowering logic is around lower.rs:2824 and the FieldValue::Reference returns are around 2844/2854. Same issue appears for the B4.1c pointers at line 83, where the preference-rank comment/function is currently around dag.rs:2760+, and the lowerer call sites are around lower.rs:1460-1461, not the cited spans.

Verdict
APPROVE_WITH_COMMENTS. The brief’s substance is aligned with P2/P5: it consumes the existing DeclarationRef authority, names split follow-ups, provides triggers, and blocks replacement string registries. I’d fix the stale line references, but I don’t see a blocking invariant violation in the diff.

Copy link
Copy Markdown
Contributor Author

Verified this against current code and the finding was valid. Fixed stale line references in 6172c1481:

  • Updated the DeclarationRef lowerer pointer from lower.rs:2803 to lower.rs:2824, and called out the current FieldValue::Reference returns at :2844 / :2854.
  • Updated B4.1c's declaration-source pointers to dag.rs:2781, lower.rs:1460-1461, and lower.rs:1555-1556.

Verification: git diff --check passed, and pre-push cargo fmt --all --check passed while pushing.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

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

1. Story of the diff

This PR adds a single B4.1a worker brief for migrating runner identity bridges onto existing DeclarationRef authority. The brief is careful not to re-land or duplicate the carrier: it states that DeclarationRef already exists and that this slice should migrate runner consumers away from sentinel/filename bridges toward structural references (docs/briefs/b4-1-declarationref-consumer-migration-worker.md:6-10, :55-60). The load-bearing shape is the identification of three currently string-collapsed facts—program input identity, canonical lens identity, and output-bind identity—and the brief turns those into implementation tasks with STOP conditions, fixture updates, and regression tests (:94-114, :118-171). It also explicitly splits the remaining parent B4.1 scope into B4.1b and B4.1c rather than letting adjacent bridges leak into this runner-focused migration (:73-90, :210-224).

2. Invariant categories

  1. LAYER MODEL (substrate vs implementation).

Compliant — The diff is documentation-only, but it is substrate-aware: it identifies DeclarationRef as the existing authority and explicitly says not to add a new universal declaration-reference carrier (docs/briefs/b4-1-declarationref-consumer-migration-worker.md:42-60). That preserves the layer model instead of inventing a parallel carrier.

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

Compliant — Boundary Discipline / single-authority metadata is handled directly: the brief names the current string bridges and requires structural references instead of sentinel names, fixture filenames, or bind-name string registries (docs/briefs/b4-1-declarationref-consumer-migration-worker.md:94-114, :138-149, :185-193). Fail-closed behavior is also called out for ordinary input_ref declarations with missing value bodies (:151-156) and for under-specified carrier cases via STOP-and-escalate (:203-215).

  1. CODING.md.

N/A — This PR adds no Rust code, functions, helpers, error types, or module structure; there is no implementation style surface to review.

  1. TESTING.md.

Compliant — The brief does not need to add tests itself, but it requires behavior-driven regression coverage for the two relevant spoofing failures: name-only spoofing of the old program-input sentinel and filename-only spoofing of output-bind selection (docs/briefs/b4-1-declarationref-consumer-migration-worker.md:166-171, :190-193). It also requires workspace tests, clippy, fmt, and DB-8 fixed-point convergence checks before the implementation PR is accepted (:194-199).

  1. LOCKED DESIGN DECISIONS.

Compliant — No locked design decision is changed here. The only explicit locked-style check I see is DB-8, and the brief treats drift as an acceptance-gated event requiring bit-identical convergence or Director-approved recorded drift (docs/briefs/b4-1-declarationref-consumer-migration-worker.md:197-199, :215).

  1. TRACKED vs UNTRACKED DEBT.

Compliant — The brief tracks remaining B4.1 work as named, bounded follow-ups with owners/scope and triggers: B4.1b owns the §0.5 type-alias bridge with a dispatch trigger and acceptance requirement, and B4.1c owns the §0.7 declaration-source preference bridge with its own trigger and dissolution condition (docs/briefs/b4-1-declarationref-consumer-migration-worker.md:73-90). Conditional splits for runner-output or lens-registry work are also framed as STOP-and-split events, not silent scaffolds (:145-149, :178-184, :207-215).

3. Verdict

APPROVE

The PR is a clean documentation-only dispatch brief. It narrows B4.1a to runner identity bridges, avoids creating parallel authority, names follow-up debt with triggers, and bakes the key regression tests into acceptance.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: codex / codex-default
  • Commit: 6172c148 · Trigger: schedule
  • Thinking: 92s wall

Verdict: APPROVE

Docs-only diff adds a bounded worker brief, names the existing DeclarationRef authority, and tracks the remaining B4.1 slices with explicit follow-up ownership, triggers, and stop conditions. I found no concrete invariant, coding, or testing-discipline violations in the changed lines.

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

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

1. Story of the diff

This PR adds a new B4.1a worker brief for migrating runner identity bridges onto the existing DeclarationRef authority, rather than introducing a new declaration-reference carrier. The brief first audits the already-landed DeclarationRef surface, then identifies the three runner string bridges to dissolve: the program-input sentinel, canonical lens lookup through include_str!/filename routing, and output-bind selection through TestClaim.file_name (docs/briefs/b4-1-declarationref-consumer-migration-worker.md:42-62, :96-116). It scopes B4.1a to runner-facing §0.1/§0.2/§0.3 work, splits §0.5 and §0.7 into named follow-up briefs, and defines acceptance/STOP criteria that force the implementation to use structural roles, preserve fail-closed behavior, and add spoofing regressions before the migration lands (:64-92, :120-217).

2. Invariant categories

  1. LAYER MODEL (substrate vs implementation).

Compliant — the diff is documentation-only, but it explicitly avoids creating parallel substrate authority: “do not add a new universal declaration-reference carrier” and instead migrate runner consumers on top of existing DeclarationRef (docs/briefs/b4-1-declarationref-consumer-migration-worker.md:57-62). It also bounds new role modeling to the runner slice and stops if a broader substrate change is needed (:205-208).

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

Compliant — single-authority / facts-flow-forward are handled by naming the current string-collapsed facts (:96-109) and requiring structural references or typed role wrappers instead of sentinel names, fixture filenames, or string registries (:120-151). Fail-closed is called out directly for ordinary input_ref declarations with missing value bodies (:153-158), and the STOP gates prevent replacing one bridge with another (:209-216).

  1. CODING.md.

N/A — no Rust implementation, helper placement, method shape, or Result/typed-carrier API is changed in this diff. The brief’s future implementation direction is compatible with coding discipline, but there is no code-style surface to review in this PR.

  1. TESTING.md.

Compliant — this docs-only PR does not need executable tests itself, and the brief requires behavior-driven regressions for the two relevant spoofing risks: name-only spoofing of the old program-input sentinel and filename-only spoofing of output-bind selection (docs/briefs/b4-1-declarationref-consumer-migration-worker.md:165-173, :192-195). It also keeps the future implementation gated by workspace tests, clippy, fmt, and DB-8 fixed-point convergence (:196-201).

  1. LOCKED DESIGN DECISIONS.

Compliant — the brief references locked/structural concerns as gates rather than silently changing them: unexpected DB-8 drift must stop immediately or be explicitly approved (:199-201, :217), and a role layer broader than DeclarationRef must be re-scoped with Director/Zero-Floor before consumers are edited (:205-208). The §0.5 and §0.7 non-goal boundaries are also explicit (:212-226).

  1. TRACKED vs UNTRACKED DEBT.

Compliant — the introduced follow-up debt is tracked with names, bounds, and triggers: B4.1b owns the type-alias file-path bridge with an immediate/implementation-touch trigger and acceptance outcome (:77-83), while B4.1c owns declaration-source/file-preference ranking with its trigger and dissolution/STOP outcome (:84-92). Potential B4.1a splits for output-bind and lens-registry work are also named as STOP-before-implementation paths, not allowed to become silent scaffolds (:147-149, :180-186, :209-211).

3. Verdict

APPROVE

This is a clean docs-only brief: it correctly treats existing DeclarationRef as the authority, scopes the migration, tracks the remaining B4.1 debt, and requires concrete regression coverage for the string-bridge failure modes before implementation proceeds. I found no diff-line findings that warrant changes.

@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: 6172c148 · Trigger: schedule
  • Thinking: 176s wall

Non-blocking — Strengths

  • docs/briefs/b4-1-declarationref-consumer-migration-worker.md The docs-only B4.1a brief stays scoped to runner §0.1/§0.2/§0.3, reuses the existing DeclarationRef authority, and tracks §0.5/§0.7 as bounded follow-ups with triggers.

✅ No blocking concerns in the current diff.

@briansrls
briansrls merged commit 5a8d524 into main Apr 26, 2026
4 checks passed
briansrls added a commit that referenced this pull request Apr 26, 2026
… B4.1 status

Two codex BLOCKING findings, both about briefs copying status from earlier
state without verifying against live receipts:

1. r2-release-manager.md §6a — DECISION already locked.
   docs/design-substrate-carrier-port-program.md §6a:171 says
   "pick **Option 3, unified MethodContract carrier**." :173 names the
   live receipt (src/v3/std/algebra.dag declares MethodContract;
   src/v3/lenses/cost.dag imports it via method_contract_cost_shape).
   :175 names the dissolution trigger (size_effect / cost_shape /
   callback_element_position field-by-field retirement).

   Brief was framing this as "DECISION BRIEF NOT YET AUTHORED — write
   up the 4 options ... recommend one based on E-I evidence." Stale.

   Fix: rename "pick decision brief" → "follow-through brief"; status
   from "NOT YET AUTHORED" to "DECISION LOCKED — Option 3 ... live
   receipt landed"; describe remaining work as bulk migration +
   dissolution-trigger tracking. Updated the deliverable table row,
   the Core deliverables list, the Autonomous dispatch authority line,
   the Sub-briefs Pending list, and the Cross-refs §6a source.

2. r2-substrate-manager.md B4.1 — BLOCKING already resolved.
   PR #819 ("docs(briefs): add B4.1a DeclarationRef runner migration
   brief") merged 2026-04-26 01:13:32. The §0.2 scope gap was resolved
   in 6f564f5 BEFORE merge per Director receipt on inbox #828. B4.1a
   follow-on brief landed in the same PR. Real open residual is the
   first-consumer migration at PR #826 (regen drift on r1_gates.dag —
   worker CI-fix, not brief authoring).

   Brief was still saying "DRAFTED (with §0.2 BLOCKING outstanding —
   codex finding on PR #819)" and "with outstanding BLOCKING ...
   resolution pending." Stale on both the BLOCKING and the residual
   shape.

   Fix: status to "BRIEF LANDED (PR #819, merged 2026-04-26 — §0.2
   scope gap resolved in 6f564f5 before merge); B4.1a runner-migration
   follow-on brief landed same PR. Real residual: first-consumer
   migration #826 OPEN with regen drift (worker CI-fix)." Updated the
   deliverable table row, the Sub-briefs Authored list, and the
   Cross-refs adjacent line.

Both findings: feedback_verify_thesis_claims violation on the PM
authoring side. Two surgical text updates per finding; no scope or
authority change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Apr 26, 2026
… readiness) (#835)

* docs(briefs): pre-stage 6 R2 manager briefs (PM portion of R2 spin-up readiness)

Per user direction: every lane/brief/design must be authored before
R2 managers spawn. PR #827 (merged) named the 6-manager structure;
Transition mechanics step 4 said "pre-stage skeletons during R1 final
week" — accelerated to "pre-stage now."

This PR lands all 6 R2 manager briefs as one bundle, structured
consistently:
- Status (PROPOSAL pre-spawn, spawns on R1 close)
- Orient before reading (R2 structure authority, scope source,
  cross-program coordination, demo coordination)
- Program scope (the lane/sub-program scope this manager owns)
- Owned deliverables (table of lanes/sub-lanes with status)
- Cross-program dependencies (produces/consumes signals)
- Autonomous dispatch authority (what manager does without Director)
- Reporting cadence (where signals flow)
- Sub-briefs (authored / pending)
- Working state (placeholder for fill on spawn)
- Cross-refs

Six briefs:

1. r2-grounding-manager.md — T-Ground sub-program (the one true R2
   critical path: Pilot → Rust → Engine → Tests → Dissolve, with
   Python/Go fill). Migrates from grounding-manager.md (which archives
   on R2 promotion). Names Engine sharpened-(b) consumer dependency
   on Substrate Manager's ValueBody-list/sum carrier.

2. r2-substrate-manager.md — T-Substrate (4 sub-lanes) + B4
   Identity-Carrier Substrate Pass program (12 sub-briefs). Largest
   single program in R2; produces 4 carriers consumed by Modeling
   (3 sub-lanes) + Grounding (Engine sharpened-(b)). Names watch
   condition for B4 split if Substrate becomes the new bottleneck.

3. r2-modeling-manager.md — T-Modeling (3 Goal 2 items + tokenizer
   charclass phase-2 added per shared T-Substrate dependency). All
   gated on Substrate Manager carrier readiness.

4. r2-impossible-bugs-manager.md — T-ImpossibleBugs (3 R2+ classes:
   nested-optional flatten, unhandled diagnostic paths, unenumerated
   effects). Design docs already authored (#798, #801, #808+#805
   prereq); needs Director conversion to worker briefs.

5. r2-pure-bootstrap-manager.md — POST-R1 only per gate-vs-program
   resolution in PR #827. Migrates from pure-bootstrap-zero-manager.md
   with scope narrowed (does NOT duplicate R1 T-PB-A/T-PB-B census-
   reduction work). Owns Tier 3 mirror dissolutions + Tier 2
   patch_lower_helpers retirement + post-R1 emergent dissolutions.

6. r2-release-manager.md — Goal 5 (§6a metadata-pick) + Goal 6 (R2
   demo coordination) + B-wave Tier 0/2 dispatch (#810) + discipline
   framework central reporting + thesis-claim coverage mapping
   (Open call 1) + R2 closure ledger + v2 retirement. Single authority
   for closure ledger and demo coordination.

Each brief explicitly defers to ROADMAP/THESIS/r2-structure.md for
upstream authority; does not duplicate gate semantics or scope
decisions. Cross-program coordination via R1 `Cross-manager
notifications queued` brief pattern.

Coordination split with Director on inbox #828: Director takes the
worker-level briefs (B4.2/B4.3/B4.4 + T-Substrate sub-lane scoping +
T-Modeling worker briefs + T-ImpossibleBugs design→worker conversion);
PM takes §6a + B5/B6/B7 + thesis-claim mapping in follow-up PRs.

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

* fix(briefs): r2-impossible-bugs-manager — canonical filenames + corrected scope (codex P2 on #835)

Codex P2 inline at r2-impossible-bugs-manager.md:63: design-brief
filenames were missing the canonical -design suffix; the actual
files are t-impossiblebugs-*-design.md.

Audit revealed a bigger correction needed than just filename suffix:

1. Worker briefs ALREADY EXIST for all three classes (I had said
   'needs Director conversion to worker briefs' — wrong). Correct
   state:
   - Nested-optional flatten: design + worker (DESIGN/SCOPING shape) authored
   - Unhandled diagnostic paths: design + worker (DESIGN/SCOPING shape) authored
   - Unenumerated effects: design authored, prior worker briefs SUPERSEDED 2026-04-25 by design doc

2. The two non-effects workers are DESIGN/SCOPING shape — they
   produce substrate proposals, not direct implementation. Manager
   role is dispatch + Substrate-Manager-handoff coordination, not
   convert-design-to-worker.

3. Effects has SUPERSEDED workers (closed-system framing dissolved
   the prior lens-vs-declaration framing). Manager owns design-doc
   routing + post-supersede implementation worker authoring against
   the canonical design.

4. Fn→Arrow refactor (PR #805) reframed as independent vestigial-
   syntax cleanup, not direct effects-framing prereq.

Three coordinated fixes in r2-impossible-bugs-manager.md:
- Program scope table: canonical filenames + per-class authored-status
  + SUPERSEDED notes
- Owned deliverables: 'Manager dispatches existing worker' (not
  'convert design to worker')
- Sub-briefs section: explicit Authored/SUPERSEDED/Pending tri-state
  with full canonical paths

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

* WIP: gunbc PM

* fix(briefs): add pre-spawn vs post-spawn authority subsection to all 6 R2 manager briefs (codex P2 on #835)

Codex flagged ownership ambiguity in r2-impossible-bugs-manager.md:
the brief said design/scoping docs would be 'converted to worker
briefs by Director' but elsewhere said the manager authors all worker
briefs autonomously. Without an explicit phase boundary (pre-spawn
vs post-spawn), ownership is ambiguous and dispatch can stall.

Resolution applied uniformly to all 6 briefs: new 'Pre-spawn vs
post-spawn authority' subsection inserted before 'Autonomous dispatch
authority':

- Pre-spawn (now, before R1 close): Director + PM coordinate on brief
  authoring per inbox #828 split. PM authors the manager skeleton;
  Director authors worker-level briefs not yet existing. Both stop
  authoring once R2 spawns.

- Post-spawn (R2 promotion onward): Manager owns all worker-brief
  authoring autonomously per Autonomous dispatch authority. Director
  narrows to cross-program conflict resolution + scope-change
  escalation.

Release Manager variant has the same boundary plus an explicit note
that PM also authors the §6a / B5 / B6 / B7 / thesis-claim-mapping
briefs as Release-Manager-portion PM deliverables (per inbox #828).

The phase boundary is now structurally explicit: no dispatch stall
from both Director and Manager assuming the other owns authoring.

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

* fix(briefs): tighten Pending-line authority qualifier (codex BLOCKING on #835 sha 3803266 :90)

Codex flagged the 'Pending — Director-authored per coordination on
inbox #828:' lines as creating dual authority — the line read in
isolation contradicted the 'Manager authors autonomously' framing
elsewhere. The d42f17e phase-boundary subsection resolved this
contextually, but a reader scanning just the Pending line could still
read it as a permanent assignment.

Surgical tightening: add explicit pre-spawn qualifier inline so the
Pending line is self-resolving without requiring the reader to
cross-reference the phase-boundary subsection.

Old: 'Pending — Director-authored per coordination on inbox #828:'
New: 'Pending — pre-spawn Director-authored per inbox #828
      coordination split; post-spawn manager-authored autonomously
      per "Pre-spawn vs post-spawn authority" subsection above:'

Applied to 4 briefs (Modeling, Substrate, Pure Bootstrap, Release).
Release variant uses 'PM-authored' instead of 'Director-authored'
since R2 Release Manager's pre-spawn portion is PM-owned per inbox
#828 split (the §6a / B5 / B6 / B7 / thesis-claim-mapping briefs).

The Pending line now reads cleanly in isolation: pre-spawn / post-
spawn boundary is explicit at the line itself, not deferred to a
cross-reference.

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

* fix(briefs): resolve openai-pro REQUEST_CHANGES on #835 sha bfaab66

Two surgical fixes for the two BLOCKING findings (P2 + P5):

1. r2-release-manager.md:67 — B7 dual-authority contradiction.
   Was: "Authors all T-Release worker briefs without Director (§6a pick, B5/B6/B7, ...)"
   But B7 is "Cross-manager signal, not a worker brief" per :33 + :86.
   Now: "Authors all T-Release owned deliverables ...: worker briefs
   (§6a pick, B5, B6, thesis-claim coverage mapping) and cross-manager
   signals (B7 priority-hint relay)." — distinguishes briefs from signals,
   no item carries two contracts.

2. r2-grounding-manager.md:62 — Pending line unbounded across pre/post
   spawn. The other 4 briefs got the "pre-spawn Director-authored;
   post-spawn manager-authored" temporal qualifier in bfaab66;
   Grounding was missed. Same pattern applied here.

Both fixes mechanical; no scope or authority change beyond removing
the ambiguity openai-pro flagged.

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

* fix(briefs): resolve codex BLOCKING on #835 sha bfaab66 — stale §6a + B4.1 status

Two codex BLOCKING findings, both about briefs copying status from earlier
state without verifying against live receipts:

1. r2-release-manager.md §6a — DECISION already locked.
   docs/design-substrate-carrier-port-program.md §6a:171 says
   "pick **Option 3, unified MethodContract carrier**." :173 names the
   live receipt (src/v3/std/algebra.dag declares MethodContract;
   src/v3/lenses/cost.dag imports it via method_contract_cost_shape).
   :175 names the dissolution trigger (size_effect / cost_shape /
   callback_element_position field-by-field retirement).

   Brief was framing this as "DECISION BRIEF NOT YET AUTHORED — write
   up the 4 options ... recommend one based on E-I evidence." Stale.

   Fix: rename "pick decision brief" → "follow-through brief"; status
   from "NOT YET AUTHORED" to "DECISION LOCKED — Option 3 ... live
   receipt landed"; describe remaining work as bulk migration +
   dissolution-trigger tracking. Updated the deliverable table row,
   the Core deliverables list, the Autonomous dispatch authority line,
   the Sub-briefs Pending list, and the Cross-refs §6a source.

2. r2-substrate-manager.md B4.1 — BLOCKING already resolved.
   PR #819 ("docs(briefs): add B4.1a DeclarationRef runner migration
   brief") merged 2026-04-26 01:13:32. The §0.2 scope gap was resolved
   in 6f564f5 BEFORE merge per Director receipt on inbox #828. B4.1a
   follow-on brief landed in the same PR. Real open residual is the
   first-consumer migration at PR #826 (regen drift on r1_gates.dag —
   worker CI-fix, not brief authoring).

   Brief was still saying "DRAFTED (with §0.2 BLOCKING outstanding —
   codex finding on PR #819)" and "with outstanding BLOCKING ...
   resolution pending." Stale on both the BLOCKING and the residual
   shape.

   Fix: status to "BRIEF LANDED (PR #819, merged 2026-04-26 — §0.2
   scope gap resolved in 6f564f5 before merge); B4.1a runner-migration
   follow-on brief landed same PR. Real residual: first-consumer
   migration #826 OPEN with regen drift (worker CI-fix)." Updated the
   deliverable table row, the Sub-briefs Authored list, and the
   Cross-refs adjacent line.

Both findings: feedback_verify_thesis_claims violation on the PM
authoring side. Two surgical text updates per finding; no scope or
authority change.

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

* fix(briefs): anchor §6a follow-through against existing pick worker brief

Codex inline BLOCKING on r2-release-manager.md:30 surfaced that
docs/briefs/t-permethodmetadata-pick-worker.md (landed PR #794) already
exists as the pick-worker brief. My prior fix (74b679b) reframed
"pick decision brief" → "follow-through brief" but didn't reference the
existing worker, leaving readers to wonder if the follow-through was
re-picking.

Two precision tightenings:

- "Pick is closed." Names the worker brief explicitly + cites its
  scope-closure clause ("Do not migrate all consumer lenses ... bulk
  migration is post-pick work").
- "No duplicate decision authority — pick is closed; follow-through is
  post-pick scope." Closes the P2 single-authority concern codex named.

Surface change only; no scope expansion. The follow-through scope
(bulk migration + dissolution-trigger tracking) is unchanged from the
74b679b state — what's added is the explicit worker-brief anchor.

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

* fix(briefs): resolve openai-pro APPROVE_WITH_COMMENTS on #835 sha 3260d71

Finding (P2 single-authority): T-Ground-Rust had two contradictory states —
deliverables table at :23 said DISPATCHED, but Sub-briefs Pending list at
:62-63 listed "T-Ground-Rust full implementation" as pending pre-spawn work.
Same lane, two authoritative states.

Audit: T-Ground-Rust full lane (Rust target-spec primitive declarations
end-to-end) has not been authored. Pilot (PR #765) and Engine Phase 1
typestructure (PR #788) are separate dispatched lanes (their own rows in the
table); the "DISPATCHED (Engine implementation parked pending loader-close)"
parenthetical was a status leak from the Engine row's parking note.

Fix: row status now reads "NOT YET AUTHORED — listed under Sub-briefs
Pending below; gated on pre-spawn Director scope refinement per inbox #828.
(Pilot PR #765 + Engine Phase 1 typestructure PR #788 are separate dispatched
lanes — see those rows; the prior 'DISPATCHED' status here was a parenthetical
leak from the Engine row's loader-close parking note.)"

Now table status matches Sub-briefs Pending list. Single authority restored.

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

* fix(briefs): refresh impossible-bugs manager against PR #836 merge

Codex BLOCKING on r2-impossible-bugs-manager.md:78 (sha bfaab66) was
correct in spirit and now newly actionable: the brief's Pending section
re-dispatched the older DESIGN/SCOPING workers
(t-impossiblebugs-nested-optional-flatten-worker.md +
t-impossiblebugs-unhandled-diagnostic-paths-worker.md) even though
their design docs (PR #798 + PR #801) had landed with next-step
recommendations + PR #836 just authored the IMPLEMENTATION workers
(r2-impossible-bugs-{nested-optional-flatten,unhandled-diagnostic-paths,
unenumerated-effects}-worker.md).

Re-dispatching DESIGN/SCOPING workers when implementation workers are
authored = duplicate decision authority under P2 + accumulating ad-hoc
state under P5. Codex was right.

Three sections updated to reflect PR #836-merged state:

## Program scope table (lines 17-19)

Reframed columns: "Design authority + implementation worker (post PR #836
merge)" / "Implementation status" / "Substrate gating". Each class row
now names:
- Design doc PR + closed-in-scope status
- Implementation worker filename (PR #836) + IMPLEMENTATION WORKER LANDED
- UNGATED status per design-doc audit (Director's reframes #1, #2 confirmed
  no substrate gates — substrate-constructor invariant for nested-optional;
  totality-by-omission for unhandled-diagnostic; closed-system for effects)

The OLD DESIGN/SCOPING workers are explicitly named SUPERSEDED for
unenumerated-effects already; nested-optional + unhandled-diagnostic
older workers are now also marked superseded by their PR #836
implementation counterparts.

## Owned deliverables (lines 25-31)

Reframed from "Worker brief is already authored ... DESIGN/SCOPING shape"
to "Implementation worker brief landed on main via PR #836 merge ... do
not re-dispatch the older workers." Substrate-gap escalation reframed as
the exception path (was the expected path under the older DESIGN/SCOPING
worker assumption); expected path is direct implementation per design-doc
Director-actionable recommendation.

## Sub-briefs Pending (lines 78-86)

Reframed from "Dispatch nested-optional-flatten worker (DESIGN/SCOPING
produces substrate proposal → escalate)" to "Dispatch nested-optional-flatten
implementation worker (ungated; dispatchable Day-1 post-spawn)" + same
pattern for the other two classes. PR #836's 3 implementation workers are
now the canonical dispatch targets.

Added explicit SUPERSEDED list for the older workers (4 entries: 2
DESIGN/SCOPING + 2 effects-worker variants) with their respective
implementation-worker successors named.

## Discipline note

This finding was real, not an echo. PR #836 merging changed the substrate
of facts the manager brief grounds against. Same class as the §6a stale
framing on Release Manager + the B4.1 stale BLOCKING on Substrate Manager:
brief authored against pre-merge state; merge surfaces the staleness.

The matrix's pre-author verification invariant catches state-drift at
authoring time; the matrix's status-consistency rule catches dual-state
within a single brief. This finding is a third class: cross-PR state drift
(brief A's Pending list cites brief B's content; brief B merges and
brief A's content goes stale). Worth noting as a refresh-discipline
trigger separately from authoring discipline.

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
briansrls deleted the session/smart-newt-747-b4 branch June 1, 2026 18:43
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