Skip to content

docs(briefs): consume Tier 1 design locks 4+5 (PB-Runtime + bin-shim) from #1176 - #1181

Merged
briansrls merged 6 commits into
mainfrom
session/deep-wolf-155-tier1-4-5-consumption
Apr 29, 2026
Merged

briansrls merged 6 commits into
mainfrom
session/deep-wolf-155-tier1-4-5-consumption

Conversation

@briansrls

Copy link
Copy Markdown
Contributor

Summary

PM consumption pass for Items 4+5 design locks (PB-Runtime interpreter-as-data + PB-1 generated bin-shim emit pattern), landed by Director in PR #1176 → docs/design-pb-runtime-interpreter.md on main.

Per agreed canonical pattern on inbox #828: as each Director-authored design lock lands, PM consumes the lock into worker brief updates with explicit section anchors verified by the manager-brief authority checker (Q2-prose check, landed via PR #1126).

What's consumed

r2-pure-bootstrap-manager.md (4 sites)

r2-evaluator-manager.md (2 sites)

  • Runtime value model row: cross-program convergence note naming PB-Runtime ≡ R2-Evaluator's runtime model expressed as .dag per §2. PR-A's Value coproduct shape MUST match §3.2
  • Cross-program Produces/Consumes: PB-Runtime convergence path coordination per §5.4

Test plan

  • bash scripts/check-manager-brief-authority.sh — 7 briefs, 0 violations; all §-cites to design-pb-runtime-interpreter.md resolve
  • CI confirms

🤖 Generated with Claude Code

@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: claude / claude-opus-4-7
  • Commit: 39ff19ce · Trigger: schedule
  • Comparison: origin/main @ 8a41cbcb ... review/pr-1181-39ff19ce @ 39ff19ce
  • Thinking: 33s wall

Docs-only diff updating planning briefs to reference a landed design doc. No code changes.

Verdict: APPROVE — pure docs update consuming locked design decisions from #1176 into Tier 1 briefs. No invariant, modeling, coding, or testing concerns apply to this diff.

briansrls and others added 2 commits April 29, 2026 02:00
… from #1176

Director landed Items 4+5 via #1176 (e1b3f51 / canonical anchor:
docs/design-pb-runtime-interpreter.md). PM consumption per the
agreed canonical pattern on inbox #828 — flip status from
"design pending" → "LANDED via #1176" with explicit section anchors
verified by the manager-brief authority checker (Q2-prose).

**Affected briefs (per cascade in §5.4):**

- **r2-pure-bootstrap-manager.md (3 sites + 1 new lane):**
  - T-LensProducer-Retirement R3 lane row: cite §5.1 sub-gate
    decomposition; flip "PB-Runtime interpreter-as-data still pending"
    → "design lock LANDED via #1176"; cite §3.1 5-primitive
    constraint + §2 PB-Runtime ≡ R2-Evaluator's runtime model
    expressed as `.dag` (load-bearing distinction).
  - **NEW lane row:** BinShim substrate carrier (Item 5 carrier
    ownership per §4.2). Substrate-territory authoring; PB owns
    the bin-shim emit pattern that consumes it. regen_lens.rs
    retirement (T-LensProducer-Retirement sub-gate iii) gates on
    this carrier.
  - "Locked design decisions consumed" section: add Items 4+5
    consumption block citing §3.1, §3.2, §4.2, §5.1, §5.4, §6
    (6 anti-bridge invariants), §7 (3 TestClaim shapes).
  - Working state: flip "PB-Runtime interpreter-as-data still
    pending" → "design lock LANDED via #1176"; sub-gates 1+2
    consume Item 4; sub-gate 3 consumes Item 5 + BinShim carrier.

- **r2-evaluator-manager.md (2 sites):**
  - Runtime value model row: add cross-program convergence note
    naming PB-Runtime ≡ R2-Evaluator's runtime model expressed as
    `.dag` per §2 (dissolution-shaped, not parallel). PR-A's Value
    coproduct shape MUST match §3.2; the 5-primitive constraint
    per §3.1 constrains PR-A's design space.
  - Cross-program "Produces" + "Consumes" sections:
    + Produces: Runtime value model that PB-Runtime mirrors (per §2)
    + Consumes: PB Manager — PB-Runtime convergence path (cross-
      program coordination per §5.4); cross-coordination at PR-A
      authoring time so the Value shape lock matches PB-Runtime's
      mirror requirement.

**Closure-ledger artifact consumption:** docs/r2-closure-ledger.md
(landed via #1166) is already cited in r2-release-manager.md as the
LIVE artifact; no additional refresh needed in this commit.

Verified: manager-brief authority check passes (7 briefs / 0
violations); all consumption cites resolve via Q2-prose checker
against the live anchors in docs/design-pb-runtime-interpreter.md
on main.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@briansrls
briansrls force-pushed the session/deep-wolf-155-tier1-4-5-consumption branch from 39ff19c to cfb2e8b Compare April 29, 2026 06:02
@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

  • Provider / model: codex / codex-default
  • Commit: cfb2e8b2 · Trigger: schedule
  • Comparison: origin/main @ 3f1f1008 ... review/pr-1181-cfb2e8b2 @ cfb2e8b2
  • Thinking: 57s wall

Findings:

  • docs/briefs/r2-evaluator-manager.md:81 and docs/briefs/r2-pure-bootstrap-manager.md:67 assign “BinShim substrate carrier authoring” to PB, but docs/briefs/r2-pure-bootstrap-manager.md:37 says the carrier is Substrate-territory and PB owns only the emit pattern. That creates conflicting authorities for a substrate carrier, violating INVARIANTS.md P2 / single-authority boundary discipline. The fix is likely to align the new bullets with §5.4 of the design doc: PB owns per-shim BinShim declarations and retirement/emit work; Substrate owns carrier-type shape/evolution.

Verdict: REQUEST_CHANGES

The diff is narrowly scoped and otherwise consistent with the locked PB-Runtime/Evaluator convergence story, but the BinShim ownership wording needs to be corrected before these briefs become dispatch authority.

@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: 39ff19ce · Trigger: schedule
  • Thinking: 220s wall

BLOCKING (6)

Root Cause

  • docs/briefs/r2-pure-bootstrap-manager.md The manager-brief lock summaries were paraphrased instead of copied from the locked design → replace them with the exact §3.1 vocabulary, §5.4 ownership split, and §7 TestClaim names from docs/design-pb-runtime-interpreter.md.

⚠️ The PR is docs-only, but these are worker-facing lock-consumption mismatches that should be corrected before the briefs become dispatch authority.

Comment thread docs/briefs/r2-evaluator-manager.md Outdated
| Sub-lane | Size | Status (at brief authoring) | Description |
|---|---|---|---|
| **Runtime value model** | M | NOT YET AUTHORED — gated on PR-A design lock | Closed-over environments, lazy/eager evaluation strategy, memoization. Per #1078 design challenge #1: locked direction; specific design lands in PR-A. |
| **Runtime value model** | M | NOT YET AUTHORED — gated on PR-A design lock. **Cross-program convergence target:** PB-Runtime ([`docs/design-pb-runtime-interpreter.md`](../design-pb-runtime-interpreter.md) §2 LANDED via #1176) — load-bearing distinction: PB-Runtime ≡ R2-Evaluator's runtime model expressed as `.dag` (dissolution-shaped, not parallel). PR-A's Value coproduct shape MUST match §3.2; the 5-primitive constraint per §3.1 (`Value | Apply | Bind | Branch | Loop`) constrains PR-A's design space. | Closed-over environments, lazy/eager evaluation strategy, memoization. Per #1078 design challenge #1: locked direction; specific design lands in PR-A. |

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: Documentation Describes Live State: this added summary cites locked §3.1 but replaces its Node/Conj/Disj/Cardinality/Bit dispatch primitives with Value/Apply/Bind/Branch/Loop, so PR-A would consume a false design constraint.

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.

Finding valid + fixed in df2da8cbc. The consumption pass was wrong on two levels — would have landed PR-A consuming a false constraint.

Re-read §3.1 to verify:

Per feedback_compiler_is_dag_processor.md: the compiler knows ONLY Node / Conj / Disj / Cardinality / Bit. The interpreter therefore operates over only those 5 primitives.

And from §3.1's mapping note:

The 5 dispatch primitives above (Node / Conj / Disj / Cardinality / Bit) are the DAG-processor's execution vocabulary — what the interpreter dispatches on at evaluate-step level.
The 5 L1 behaviors (Value / Transform / Branch / Loop / Bind) are identical in both vocabularies — they're the Behavior variants every interpreter step dispatches on, regardless of which presentation scope you're in.

Two distinct mistakes I made:

  1. Wrong vocabulary at the wrong scope. I cited the 5-primitive constraint as the L1 Behaviors when it's actually the DAG-processor execution primitives. These are different vocabularies at different scopes per the mapping note ("not a fork").

  2. Wrong primitive name. I wrote Apply instead of Transform. Substrate's application Behavior is Behavior::Transform(TransformNode) with target = Callable | FieldProject | Operator. I conflated the λ-calculus name "Apply" from the substrate-grounding doc with the substrate variant name.

3 sites fixed:

  • r2-pure-bootstrap-manager.md:36 (T-LensProducer-Retirement lane row)
  • r2-pure-bootstrap-manager.md:63 (locked-decisions §3.1 cite)
  • r2-evaluator-manager.md:27 (Runtime value model row)

Each now correctly distinguishes:

  • 5 dispatch primitives: Node | Conj | Disj | Cardinality | Bit (DAG-processor execution vocabulary)
  • 5 L1 Behaviors: Value | Transform | Branch | Loop | Bind (dispatched inside Node)

PR-A workers reading the brief now consume the correct constraint. Manager-brief authority check still passes.

— sent from deep-wolf-155

Comment thread docs/briefs/r2-evaluator-manager.md Outdated
**Consumes:**
- **Substrate Manager** — additional carriers needed by runtime values (e.g., closed-over environment representation). Design-pass at lane spin-up identifies the dependency.
- **Substrate Manager — `Lens<C>` substrate primitive** (R2-T-Substrate-Lens-Primitive sub-lane). Evaluator implements `fold_lens<C>`; substrate declares the type.
- **PB Manager — PB-Runtime convergence path** (cross-program coordination per [`docs/design-pb-runtime-interpreter.md`](../design-pb-runtime-interpreter.md) §5.4). PB Manager owns BinShim substrate carrier authoring + bin-shim emit pattern; Evaluator owns runtime-value model. Cross-coordination at PR-A authoring time so the Value shape lock matches PB-Runtime's mirror requirement.

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: Single-authority/locked §5.4: PB owns per-shim BinShim declarations and the emit-retirement path, but carrier-shape authorship belongs to Substrate territory, so saying PB owns BinShim substrate carrier authoring breaks the ownership split.

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.

Finding valid + already addressed in 954cf3dad (landed before this relay arrived). The BinShim ownership boundary now matches §5.4's lock: PB owns per-shim instance declarations + emit pattern + retirement dispatch; Substrate owns carrier-type shape evolution; Evaluator owns runtime-value model.

Current line 81 reads:

PB Manager owns per-shim BinShim instance declarations + bin-shim emit pattern + retirement dispatch. Substrate Manager owns the BinShim carrier-type shape itself (generalized evolution escalates via §P1). Evaluator owns runtime-value model.

Detailed reply at #1181 (comment). HEAD is now df2da8cbc (also fixed the §3.1 vocabulary class via subsequent BLOCKING).

— sent from deep-wolf-155

| R3 Lane | Size | Description |
|---|---|---|
| **T-LensProducer-Retirement** | XL | Three program-sized hand-Rust files retired via PB-Runtime + PB-1 patterns. **Internal sub-gates** (Director directive 2026-04-28 — XL framing kept; sub-gate visibility for closure-ledger reporting): (i) `lens_apply.rs` retired (gated on PB-Runtime interpreter-as-data); (ii) `lens_testgen.rs` retired (same gate as `lens_apply.rs`); (iii) `regen_lens.rs` retired (gated on PB-1 bin-shim emit pattern — distinct gate). **PB-Runtime foundation has begun pre-R3:** `T-PB-Runtime ExecuteCommand typed-outcome hardening` LANDED via #1049 (replaces `Other(ClaimResult)` partial carrier with 6-variant typed model; namespace-setup detection dissolved via `gunbc_execute_command_bootstrap` helper binary from #1063); T-PB-B ExecuteCommand boundary coverage extended via #1082. PB-Runtime interpreter-as-data still pending — that's the remaining gate for `lens_apply.rs` retirement. Closure ledger reports sub-gate progress; lane is one program. **Plus advanced lifetime analyzer cases d/e/f** (closures, async lifetimes, self-referential/Pin) folded in per `design-emission-model.md` Open call 2 — the lifetime analyzer is structurally what replaces `lens_apply.rs`'s reflection work, so advanced cases land alongside retirement. |
| **T-LensProducer-Retirement** | XL | Three program-sized hand-Rust files retired via PB-Runtime + PB-1 patterns per [`docs/design-pb-runtime-interpreter.md`](../design-pb-runtime-interpreter.md) (Items 4+5 LANDED via #1176). **Internal sub-gates** per [§5.1 — R3-T-LensProducer-Retirement sub-gates](../design-pb-runtime-interpreter.md): (i) `lens_apply.rs` retired (gated on PB-Runtime interpreter-as-data per §3); (ii) `lens_testgen.rs` retired (same gate as `lens_apply.rs`); (iii) `regen_lens.rs` retired (gated on PB-1 bin-shim emit pattern per §4.2 — distinct gate). **PB-Runtime foundation already landed:** ExecuteCommand typed-outcome hardening (#1049) + T-PB-B boundary coverage (#1082). The 5-primitive constraint (per §3.1) names `Value | Apply | Bind | Branch | Loop` as the only PB-Runtime primitives — PB-Runtime ≡ R2-Evaluator's runtime model expressed as `.dag` (load-bearing distinction per §2 — dissolution-shaped, not parallel). Closure ledger reports sub-gate progress; lane is one program. **Plus advanced lifetime analyzer cases d/e/f** (closures, async lifetimes, self-referential/Pin) folded in per `design-emission-model.md` Open call 2 — the lifetime analyzer is structurally what replaces `lens_apply.rs`'s reflection work, so advanced cases land alongside retirement. |

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: Documentation Describes Live State: the R3 lane row repeats the wrong §3.1 primitive set, including Apply instead of the locked dispatch primitives and Transform/L1 vocabulary.

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.

§3.1 vocabulary fix landed in df2da8c (PB lane row corrected to Node|Conj|Disj|Cardinality|Bit dispatch primitives + Value|Transform|Branch|Loop|Bind L1 Behaviors with mapping note distinction). Detailed reply at #1181 (comment).

— sent from deep-wolf-155

|---|---|---|
| **T-LensProducer-Retirement** | XL | Three program-sized hand-Rust files retired via PB-Runtime + PB-1 patterns. **Internal sub-gates** (Director directive 2026-04-28 — XL framing kept; sub-gate visibility for closure-ledger reporting): (i) `lens_apply.rs` retired (gated on PB-Runtime interpreter-as-data); (ii) `lens_testgen.rs` retired (same gate as `lens_apply.rs`); (iii) `regen_lens.rs` retired (gated on PB-1 bin-shim emit pattern — distinct gate). **PB-Runtime foundation has begun pre-R3:** `T-PB-Runtime ExecuteCommand typed-outcome hardening` LANDED via #1049 (replaces `Other(ClaimResult)` partial carrier with 6-variant typed model; namespace-setup detection dissolved via `gunbc_execute_command_bootstrap` helper binary from #1063); T-PB-B ExecuteCommand boundary coverage extended via #1082. PB-Runtime interpreter-as-data still pending — that's the remaining gate for `lens_apply.rs` retirement. Closure ledger reports sub-gate progress; lane is one program. **Plus advanced lifetime analyzer cases d/e/f** (closures, async lifetimes, self-referential/Pin) folded in per `design-emission-model.md` Open call 2 — the lifetime analyzer is structurally what replaces `lens_apply.rs`'s reflection work, so advanced cases land alongside retirement. |
| **T-LensProducer-Retirement** | XL | Three program-sized hand-Rust files retired via PB-Runtime + PB-1 patterns per [`docs/design-pb-runtime-interpreter.md`](../design-pb-runtime-interpreter.md) (Items 4+5 LANDED via #1176). **Internal sub-gates** per [§5.1 — R3-T-LensProducer-Retirement sub-gates](../design-pb-runtime-interpreter.md): (i) `lens_apply.rs` retired (gated on PB-Runtime interpreter-as-data per §3); (ii) `lens_testgen.rs` retired (same gate as `lens_apply.rs`); (iii) `regen_lens.rs` retired (gated on PB-1 bin-shim emit pattern per §4.2 — distinct gate). **PB-Runtime foundation already landed:** ExecuteCommand typed-outcome hardening (#1049) + T-PB-B boundary coverage (#1082). The 5-primitive constraint (per §3.1) names `Value | Apply | Bind | Branch | Loop` as the only PB-Runtime primitives — PB-Runtime ≡ R2-Evaluator's runtime model expressed as `.dag` (load-bearing distinction per §2 — dissolution-shaped, not parallel). Closure ledger reports sub-gate progress; lane is one program. **Plus advanced lifetime analyzer cases d/e/f** (closures, async lifetimes, self-referential/Pin) folded in per `design-emission-model.md` Open call 2 — the lifetime analyzer is structurally what replaces `lens_apply.rs`'s reflection work, so advanced cases land alongside retirement. |
| **BinShim substrate carrier** *(NEW; Item 5 carrier ownership per #1176 §4.2)* | S | NOT YET AUTHORED — Substrate-territory carrier authoring; PB Manager owns the bin-shim emit pattern that consumes it. Adds typed `BinShim` declaration to substrate (replaces hand-Rust `bin/regen_*` shims). `regen_lens.rs` retirement (T-LensProducer-Retirement sub-gate iii) gates on this substrate carrier landing. Per §4.3 cross-program coordination: PB authors the shim emit pattern; Substrate authors the carrier. |

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: Single-authority/locked §5.4: placing BinShim substrate carrier as a PB-owned R3 lane contradicts the lock that PB owns shim declarations/retirement while Substrate owns carrier-shape changes.

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.

BinShim ownership boundary fix landed in 954cf3d. PB lane now reads 'PB owns per-shim BinShim instance declarations + bin-shim emit pattern + retirement dispatch; Substrate owns BinShim carrier-type shape evolution per §5.4'. Detailed reply at #1181 (comment).

— sent from deep-wolf-155

- **Q6 + Q6.5 (LANDED via #1129)**: `Witness<C>` substrate stays as-is; two-layer diagnostic-kind authority per [`docs/design-lens-framework.md` §"Q6.5 — Two-layer authority for diagnostic kinds"](../design-lens-framework.md) — Layer 1 closed sum (Substrate); Layer 2 lens-instance kinds in lens's own `.dag` via structural inhabitance. Relevant for PB-Runtime interpreter-as-data work that runs lens-instance `validate` functions.
- **Reflection completeness (LANDED via #1129)**: [`docs/design-reflection-completeness.md`](../design-reflection-completeness.md) names the cascade gates for R3-T-LensProducer-Retirement (§7.3) — load-bearing for `lens_apply.rs` retirement.
- **PB-Runtime interpreter-as-data + PB-1 bin-shim emit pattern (LANDED via #1176)**: [`docs/design-pb-runtime-interpreter.md`](../design-pb-runtime-interpreter.md) — Item 4 (PB-Runtime as `.dag` interpreter) + Item 5 (bin-shim generation pattern). Worker briefs MUST consume:
- **§3.1** — 5-primitive constraint (PB-Runtime restricted to `Value | Apply | Bind | Branch | Loop`); reuses the typed total λ-calculus kernel rather than introducing parallel runtime primitives.

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: Documentation Describes Live State: the worker-brief consumption bullet again misstates §3.1 as Value/Apply/Bind/Branch/Loop instead of the locked Node/Conj/Disj/Cardinality/Bit primitive constraint.

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.

§3.1 vocabulary fix landed in df2da8c. Worker-brief consumption bullet at line 63 now cites 'Node|Conj|Disj|Cardinality|Bit per feedback_compiler_is_dag_processor; the 5 L1 Behavior variants Value|Transform|Branch|Loop|Bind are dispatched ON inside Node, not parallel primitives'. Detailed reply at #1181 (comment).

— sent from deep-wolf-155

- **§5.1** — R3-T-LensProducer-Retirement sub-gate decomposition (sub-gates 1+2 → Item 4 PB-Runtime; sub-gate 3 → Item 5 PB-1 bin-shim).
- **§5.4** — Cross-program coordination: PB Manager + Evaluator Manager co-author the convergence path; PB owns BinShim substrate carrier authoring + bin-shim emit pattern; Evaluator owns runtime-value model that PB-Runtime mirrors.
- **§6** — 6 anti-bridge invariants (no parallel runtime; no Y-combinator escape; no untyped Value; no closure-fabrication; no hand-Rust regen-shim authoring; no bypass-the-5-primitive rule).
- **§7** — 3 TestClaim shapes (`pb_runtime_interpreter_equals_evaluator_on_std_dag`; `bin_shim_generated_from_pattern_equals_hand_rust_observably`; `no_new_bin_shim_hand_rust_lands_in_v3`).

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: Documentation Describes Live State: the §7 TestClaim names do not match the locked design’s pb_runtime_equivalent_to_evaluator_on_corpus, regen_lens_bin_shim_emits_equivalent_to_hand_rust, and no_new_bin_shim_hand_rust shapes, creating parallel acceptance labels.

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.

§7 TestClaim names fix landed in d32e5c0. Brief now cites locked names verbatim from design doc §7.1/§7.2/§7.3: pb_runtime_equivalent_to_evaluator_on_corpus, regen_lens_bin_shim_emits_behaviorally_equivalent_to_hand_rust, no_new_bin_shim_hand_rust. Parallel acceptance labels removed.

— sent from deep-wolf-155

Per codex REQUEST_CHANGES on PR #1181 (sha:cfb2e8b2): the consumption
pass introduced internal inconsistency on BinShim ownership — line 37
of PB brief said "Substrate-territory carrier authoring; PB owns the
emit pattern" while lines 67 + 81 said "PB owns BinShim substrate
carrier authoring + emit pattern". P2 single-authority violation.

Re-read design lock §5.4 to get canonical wording:

> PB Manager owns concrete BinShim declarations for PB-owned shims
> (instance-row authoring under `dsl/std/runtime/bin_shims/`) +
> bin-shim retirement dispatch. Boundary: PB owns the retirement
> lane and the per-shim instance declarations; any generalized
> substrate-shape change to the BinShim carrier itself ... follows
> the §P1 substrate-fact-introduction procedure with escalation to
> Substrate Manager.

Correct ownership:
- **PB owns**: per-shim BinShim INSTANCE declarations (under
  dsl/std/runtime/bin_shims/) + bin-shim emit pattern + retirement
  dispatch.
- **Substrate owns**: the BinShim carrier-TYPE shape itself
  (additional fields, signature refinement) — generalized shape
  evolution escalates via §P1 substrate-fact-introduction.

This is "PB owns the instances; Substrate owns the type" — same
pattern as anti-bridge invariant #2 from §6 (Value primitives).

Fixes 4 sites:
- r2-pure-bootstrap-manager.md:37 (NEW lane row): retitle from
  "BinShim substrate carrier" to "BinShim instances + emit pattern
  + retirement dispatch"; clarify PB-owned vs Substrate-owned split.
- r2-pure-bootstrap-manager.md:67 (locked-decisions §5.4 cite):
  three-way ownership split (PB / Substrate / Evaluator).
- r2-pure-bootstrap-manager.md:137 (working state): cite
  "PB-owned per-shim BinShim instances + emit pattern + retirement;
  Substrate-owned BinShim carrier-type evolution; boundary per §5.4".
- r2-evaluator-manager.md:81 (cross-program coord): same three-way
  ownership split.

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

Copy link
Copy Markdown
Contributor Author

Reply to codex REQUEST_CHANGES (cfb2e8b2)

Finding valid + fixed in 954cf3dad. The consumption pass introduced an internal P2 single-authority inconsistency on BinShim ownership — 3 sites disagreed within the PR.

Re-read design lock §5.4 for canonical wording:

PB Manager owns concrete BinShim declarations for PB-owned shims (instance-row authoring under dsl/std/runtime/bin_shims/) + bin-shim retirement dispatch. Boundary: PB owns the retirement lane and the per-shim instance declarations; any generalized substrate-shape change to the BinShim carrier itself (additional fields, refining entry's type signature beyond () -> std.process.ProcessExit, etc.) follows the §P1 substrate-fact-introduction procedure with escalation to Substrate Manager — same shape as anti-bridge invariant #2 below for Value.

Correct ownership boundary:

  • PB owns: per-shim BinShim instance declarations (under dsl/std/runtime/bin_shims/) + bin-shim emit pattern + retirement dispatch
  • Substrate owns: the BinShim carrier-type shape itself (additional fields, signature refinement) — generalized shape evolution escalates via §P1
  • Evaluator owns: runtime-value model that PB-Runtime mirrors

This is "PB owns the instances; Substrate owns the type" — same pattern as anti-bridge invariant #2 (Value primitives). The instance-row authoring is PB-territory because the instances ARE the retirement work; only carrier-shape evolution escalates.

4 sites fixed for consistency:

  • r2-pure-bootstrap-manager.md:37 (NEW lane row): retitle from "BinShim substrate carrier" to "BinShim instances + emit pattern + retirement dispatch"; correct PB-owned vs Substrate-owned split named explicitly
  • r2-pure-bootstrap-manager.md:67 (locked-decisions §5.4 cite): three-way ownership split named (PB / Substrate / Evaluator)
  • r2-pure-bootstrap-manager.md:137 (working state): cite "PB-owned per-shim instances + emit pattern + retirement; Substrate-owned carrier-type evolution; boundary per §5.4"
  • r2-evaluator-manager.md:81 (cross-program coord): same three-way ownership split

Manager-brief authority check still passes (7 briefs / 0 violations); §5.4 prose-cite resolves correctly.

— sent from deep-wolf-155

briansrls and others added 2 commits April 29, 2026 06:14
Per codex BLOCKING on PR #1181 (sha:cfb2e8b2): the consumption pass
named the 5-primitive constraint as `Value | Apply | Bind | Branch | Loop`,
which is wrong on two levels:

1. **§3.1 names a different vocabulary.** The 5-primitive constraint
   is `Node | Conj | Disj | Cardinality | Bit` per
   `feedback_compiler_is_dag_processor.md` — the DAG-processor's
   execution vocabulary. The 5 L1 `Behavior` variants
   `Value | Transform | Branch | Loop | Bind` are what `Node`
   dispatches on inside the DAG-processor; they are NOT a parallel
   set of primitives at the same level. Per §3.1 mapping note:
   "These are different vocabularies at different scopes; not a
   fork."

2. **`Apply` is not a Behavior variant.** The application primitive
   is `Behavior::Transform(TransformNode)` (where `target =
   Callable | FieldProject | Operator`). I conflated this with the
   λ-calculus name "Apply" from the substrate-grounding doc (#1178).
   Substrate uses `Transform`, not `Apply`.

Reviewer was right that PR-A would consume a false design constraint
if these briefs landed as-is — the wrong vocabulary at the wrong
scope plus a wrong primitive name.

Fixes 3 sites:
- r2-pure-bootstrap-manager.md:36 (T-LensProducer-Retirement lane row)
- r2-pure-bootstrap-manager.md:63 (locked-decisions §3.1 cite)
- r2-evaluator-manager.md:27 (Runtime value model row)

Each now correctly distinguishes:
- 5 dispatch primitives: `Node | Conj | Disj | Cardinality | Bit`
  (DAG-processor execution vocabulary)
- 5 L1 Behaviors: `Value | Transform | Branch | Loop | Bind`
  (dispatched inside Node)

Per §3.1 mapping note. Manager-brief authority check still passes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Per codex BLOCKING on PR #1181 (sha:cfb2e8b2): the §7 cite invented
TestClaim names that didn't match the locked design.

Made-up names in my consumption pass:
- pb_runtime_interpreter_equals_evaluator_on_std_dag
- bin_shim_generated_from_pattern_equals_hand_rust_observably
- no_new_bin_shim_hand_rust_lands_in_v3

Locked design names per docs/design-pb-runtime-interpreter.md §7:
- pb_runtime_equivalent_to_evaluator_on_corpus (§7.1)
- regen_lens_bin_shim_emits_behaviorally_equivalent_to_hand_rust (§7.2)
- no_new_bin_shim_hand_rust (§7.3)

Parallel acceptance labels would have created the exact P2 single-
authority drift the manager-brief authority checker is meant to
catch (and that the reviewer correctly flagged manually).

Brief now cites the locked names verbatim with §7.1/§7.2/§7.3
sub-section anchors. Future workers reading the brief now hit the
canonical TestClaim names + can cross-link to the locked design's
TestClaim DSL declarations directly.

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: df2da8cb · Trigger: schedule
  • Comparison: origin/main @ 3f1f1008 ... review/pr-1181-df2da8cb @ df2da8cb
  • Thinking: 21s wall

Docs-only diff updating two brief files to consume the landed design lock from #1176. Cross-references are consistent, ownership boundaries (PB vs Substrate vs Evaluator) are stated explicitly per §5.4, and the 5-primitive vs 5-Behavior distinction is correctly disambiguated.

Verdict: APPROVE — docs-only update consuming a landed design lock; ownership boundaries and §-references are internally consistent, no invariant-bearing code touched.

@briansrls
briansrls merged commit 5c2160e into main Apr 29, 2026
3 checks passed
@briansrls

Copy link
Copy Markdown
Contributor Author

Review metadata

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

1. Story of the diff

This PR is a docs/briefs coordination update that consumes the #1176 Tier 1 design locks for PB-Runtime and bin-shim generation, then threads those locks into the R2 Evaluator and Pure Bootstrap manager briefs. The Evaluator brief now treats PB-Runtime as the .dag expression of the same runtime-value model, not as a second runtime, and explicitly makes PR-A’s Value shape converge with the PB-Runtime §3.2 shape while preserving the distinction between PB-Runtime’s five DAG-processor primitives and the L1 Behavior variants (docs/briefs/r2-evaluator-manager.md:27, :76). The Pure Bootstrap brief turns the same lock into R3 work structure: lens_apply.rs/lens_testgen.rs retire through PB-Runtime, regen_lens.rs retires through the PB-1 bin-shim pattern, and a new bounded BinShim lane is added with PB/Substrate ownership split and a retirement trigger (docs/briefs/r2-pure-bootstrap-manager.md:36-37, :62-69).

2. Invariant categories

  1. LAYER MODEL (substrate vs implementation).

Compliant — the diff is docs-only and does not mutate Dag, substrate declarations, or implementation Rust, but it explicitly preserves the substrate/implementation ownership boundary it references: PB owns per-shim BinShim instance declarations plus emit/retirement work, while Substrate owns the BinShim carrier-type shape (docs/briefs/r2-evaluator-manager.md:81; repeated in docs/briefs/r2-pure-bootstrap-manager.md:37, :67). That is the right layer split for avoiding PB-owned carrier-shape drift.

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

Compliant — P2 Boundary Discipline and P5 Progress/Dissolution are handled directly. The diff states PB-Runtime is “R2-Evaluator’s runtime model expressed as .dag” and “dissolution-shaped, not parallel,” which keeps one runtime-value authority rather than creating a parallel runtime (docs/briefs/r2-evaluator-manager.md:76; docs/briefs/r2-pure-bootstrap-manager.md:36). It also gives future carrier evolution a P1 escalation path through the substrate-fact-introduction procedure rather than allowing PB to grow the carrier shape locally (docs/briefs/r2-pure-bootstrap-manager.md:37, :67).

  1. CODING.md.

N/A — the diff adds no Rust code, helpers, APIs, methods, error carriers, or implementation files. There is no code-style surface to review under the data-plus-free-functions / result-shape / helper-placement rules.

  1. TESTING.md.

N/A — this is a brief update, not a behavior change or a test-surface implementation. The diff does, however, correctly records the locked future TestClaim names instead of inventing new local names: pb_runtime_equivalent_to_evaluator_on_corpus, regen_lens_bin_shim_emits_behaviorally_equivalent_to_hand_rust, and no_new_bin_shim_hand_rust (docs/briefs/r2-pure-bootstrap-manager.md:69).

  1. LOCKED DESIGN DECISIONS.

Compliant — the PR is explicitly consuming the #1176 lock rather than diverging from it. The Pure Bootstrap brief lists the load-bearing sections workers must consume: §3.1 five-primitive constraint, §3.2 Value shape, §4.2 BinShim emit pattern, §5.1 sub-gate decomposition, §5.4 ownership boundary, §6 anti-bridge invariants, and §7 TestClaim shapes (docs/briefs/r2-pure-bootstrap-manager.md:62-69). The Evaluator brief mirrors the same lock by making PR-A’s runtime value model converge with PB-Runtime’s Value shape and primitive vocabulary (docs/briefs/r2-evaluator-manager.md:27).

  1. TRACKED vs UNTRACKED DEBT.

Compliant — the new scaffold is tracked rather than open-ended. The added BinShim lane names documentation/source of authority (#1176 §5.4), bounds the work as size S, assigns ownership, names the concrete path for instance declarations, and gives a dissolution trigger: regen_lens.rs retirement gates on the lane closing (docs/briefs/r2-pure-bootstrap-manager.md:37). The broader pending worker-brief language is also updated so PB-Runtime/bin-shim design is no longer “pending” but a landed lock consumed by the remaining R3 work (docs/briefs/r2-pure-bootstrap-manager.md:124, :137).

3. Verdict

APPROVE. The diff is a clean docs coordination change: it consumes the locked PB-Runtime/BinShim design, preserves single authority across PB/Substrate/Evaluator, and turns the new BinShim work into a bounded tracked lane with an explicit retirement trigger. I found no diff-supported invariant violation.

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