From e28a607f3190b0961045f311c4aa37829489470f Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Fri, 8 May 2026 05:25:14 +0000 Subject: [PATCH 1/5] docs(audit): land R-3 + R-7 ratifications (T-Tier3 perf budget) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit §5.1 designation in canonical-bench-host-decision-matrix: Option A ubicloud-standard-2 ratified 2026-05-08 per PB Manager (warm-dove-618); Director ratification at gunbc#828 c#4403509523. §2 capture procedure: multi-run discipline addendum — N=5 preferred, median-of-medians for median_ns, max-p99-across-runs for p99_ns, per-run intermediates committed alongside final tier3_baseline.json. Both lines unblock #2204 slice dispatch (Substrate-side PerfWithinBaseline variant + PerfBaselineMeasurement carrier); PB consumer slice queues post-#2204 land. Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/audit/c1-r3-canonical-bench-host-decision-matrix.md | 4 ++-- docs/audit/c1-tier3-baseline-capture-procedure.md | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/audit/c1-r3-canonical-bench-host-decision-matrix.md b/docs/audit/c1-r3-canonical-bench-host-decision-matrix.md index 827016e0411..a1c3f95cb59 100644 --- a/docs/audit/c1-r3-canonical-bench-host-decision-matrix.md +++ b/docs/audit/c1-r3-canonical-bench-host-decision-matrix.md @@ -102,9 +102,9 @@ If Option B is chosen, single-run capture matches the original §2 wording; this The decider drops one of the following lines into `docs/r3-structure.md` (or a sibling authority doc) under the C1 / T-Tier3-Dissolution lane block. Authority lands the moment the line is committed. -### 5.1 If Option A chosen +### 5.1 Option A — RATIFIED 2026-05-08 (PB Manager warm-dove-618; Director ratification at gunbc#828 c#4403509523) -> **Canonical bench host for C1 Phase 1 0c (R-3 satisfied 2026-MM-DD per PB Manager):** `ubicloud-standard-2` (the existing CI runner label; see `.github/workflows/ci.yml`). Phase 1 0c capture and all Phase 2 perf measurements MUST run on this label. Multi-run capture discipline per `docs/audit/c1-r3-canonical-bench-host-decision-matrix.md` §4 (N≥3). **Recapture triggers (any of, Director-approved):** hardware-spec change (vCPU model / RAM size); runner-image change (Ubicloud `ubicloud-standard-2` image bump per ); OS / kernel change; toolchain change (rustc minor bump per `actions-rust-lang/setup-rust-toolchain` `toolchain` field). +> **Canonical bench host for C1 Phase 1 0c (R-3 satisfied 2026-05-08 per PB Manager):** `ubicloud-standard-2` (the existing CI runner label; see `.github/workflows/ci.yml`). Phase 1 0c capture and all Phase 2 perf measurements MUST run on this label. Multi-run capture discipline per `docs/audit/c1-r3-canonical-bench-host-decision-matrix.md` §4 (N=5 preferred, N≥3 minimum). **Recapture triggers (any of, Director-approved):** hardware-spec change (vCPU model / RAM size); runner-image change (Ubicloud `ubicloud-standard-2` image bump per ); OS / kernel change; toolchain change (rustc minor bump per `actions-rust-lang/setup-rust-toolchain` `toolchain` field). ### 5.2 If Option B chosen (then operator action follows) diff --git a/docs/audit/c1-tier3-baseline-capture-procedure.md b/docs/audit/c1-tier3-baseline-capture-procedure.md index 7bea815c686..729c0618101 100644 --- a/docs/audit/c1-tier3-baseline-capture-procedure.md +++ b/docs/audit/c1-tier3-baseline-capture-procedure.md @@ -48,6 +48,14 @@ cargo bench --bench tier3_mirror_perf -p v3-compiler - Run on a quiesced host: no concurrent CPU-intensive jobs. The brief's `≤2× median / ≤5× p99` thresholds assume hardware-stable measurement. - Capture is one-shot. Once `tier3_baseline.json` lands on `main`, the file is read-only data per the brief; recapture requires Director approval. +**Multi-run discipline (R-7 ratified 2026-05-08 per PB Manager warm-dove-618; Director ratification at gunbc#828 c#4403509523):** + +- **N=5 runs** per matrix §4 preferred discipline (N≥3 minimum). Each run is an independent CI invocation of the capture command above. +- `median_ns` in `tier3_baseline.json` = **median of the N per-run medians** (median-of-medians). +- `p99_ns` = **max p99 across the N runs** (conservative pin; absorbs run-to-run tail variance). +- Per-run medians and p99s are computed via the path-(a) extraction helper at §2.1 from each run's `target/criterion//new/sample.json`. +- The capture PR commits the extraction helper + per-run intermediate JSONs (or a single combined file recording the N samples) alongside the final `tier3_baseline.json` so the multi-run aggregation is reproducible / auditable. + ### 2.1 p99 source — explicit **Criterion 0.5's `estimates.json` does NOT carry a p99 field.** Its `Estimates` shape names `mean`, `median`, `median_abs_dev`, `slope`, and `std_dev` (point estimate + confidence interval each). p99 must be computed from the raw per-iteration timings. Two paths, **the Phase 1 0c capture PR MUST land one of them — not "p99 is read from estimates.json"**: From 0239af01dc06c6e24dd2b76fbf5ddedbd9ea3316 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Sat, 9 May 2026 05:47:08 +0000 Subject: [PATCH 2/5] =?UTF-8?q?PB=20Item=205=20brief=20=E2=80=94=20encode?= =?UTF-8?q?=20substrate=20disposition=20(#2068=20P1=20RATIFIED)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Substrate Mgr (warm-wolf-698) ratified §7.3 disposition at gunbc#2068 c#4411574142: shape (b) CensusSubsetCount filter with closed predicate BinShimFilesSubsetPredicate, mirroring existing LensProducerFilesSubsetPredicate precedent. Per feedback_strict_mirror_vs_novel_substrate_fact, strict-mirror ratifies directly (no canvas needed). Updates r3-pb-binshim-retirement-worker.md: - New §"Substrate landings (locked shape)" with the 4 required artifacts (substrate marker type + value, runtime predicate body, dispatch branch). - §7.3 acceptance now authorable; locked TestClaim shape recorded. - Dispatch precondition (5): unauthorable → RESOLVED. - STOP condition: §7.3 disposition not-yet-live → drift-detection. - Status header: PROPOSAL → READY-FOR-DISPATCH posture (pending only the standard R2/R2-Evaluator close signal; both Item-4 sub-gates met via PR #2282 / #2227 close). Bin-shim file inventory at main 5a13ed800: 9 files in src/v3/compiler/src/bin/; closure when CensusSubsetCount predicate count == 0. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../briefs/r3-pb-binshim-retirement-worker.md | 70 +++++++++++++++++-- 1 file changed, 65 insertions(+), 5 deletions(-) diff --git a/docs/briefs/r3-pb-binshim-retirement-worker.md b/docs/briefs/r3-pb-binshim-retirement-worker.md index 0f62871110f..26e8eb5b08c 100644 --- a/docs/briefs/r3-pb-binshim-retirement-worker.md +++ b/docs/briefs/r3-pb-binshim-retirement-worker.md @@ -2,6 +2,10 @@ **Status:** PROPOSAL (planning artifact, dispatch-gated). Authored 2026-04-29 by PB Manager continuation per the BinShim instances + emit pattern row in [`docs/briefs/r2-pure-bootstrap-manager.md`](r2-pure-bootstrap-manager.md#program-scope-t-pb-post-r1-only) and the Item 5 ownership lock from [`docs/design-pb-runtime-interpreter.md`](../design-pb-runtime-interpreter.md) §5.4 (LANDED via #1176/#1186). +**Substrate-disposition update 2026-05-09**: §7.3 `CensusListConstant` / filter-predicate question (formerly an open Substrate gap) was **RATIFIED by Substrate Manager** (warm-wolf-698) at gunbc#2068 [c#4411574142](https://github.com/gunb-ai/gunbc/issues/2068#issuecomment-4411574142). Locked shape: **(b) `CensusSubsetCount` filter** with closed predicate `BinShimFilesSubsetPredicate` mirroring the existing `LensProducerFilesSubsetPredicate` precedent at [`src/v3/std/verification.dag:41-43`](../../src/v3/std/verification.dag). Carriers + consumer wire-up enumerated below in §"Substrate landings (locked shape)". + +**Item-4 prerequisite update 2026-05-09**: PB-Runtime interpreter-as-data + bin-shim emit pattern landed via PR #2282 (closes gunbc#2227). Both Item-4 sub-gate dependencies are met; this brief is now in **READY-FOR-DISPATCH** posture pending only the standard R2/R2-Evaluator close signal. + **Owning manager:** Pure Bootstrap Manager (R2 → R3 continuation per `r3-structure.md` §"Manager structure" Item 1). **Lane size:** S (per `r2-pure-bootstrap-manager.md` R3 continuation table). @@ -46,10 +50,50 @@ Per design doc §5.4 + §7 + the broader R3 Evaluator-gated lane discipline in [ 2. **Item 4 (PB-Runtime interpreter-as-data) landed.** Item 5 (this lane) inherits Item 4's runtime-value vocabulary; the bin-shim emitter is "one of many `.dag` emitters" per §6 anti-bridge invariant #4, sharing the same fold-over-`Lens` substrate. 3. **Substrate-owned `BinShim` carrier type live.** The `type BinShim { ... }` sketch in design doc §4.2 is the locked design; Substrate Manager lands the carrier (in `dsl/std/runtime/bin_shim.dag` or wherever Substrate picks per their dispatch). PB cannot author instance declarations against a carrier that doesn't exist. 4. **`std.process.ProcessExit` substrate live.** Design doc §4.2 names this as the structural contract for translating `.dag` program return values into host process exit codes. Already declared per design doc reference; verify on dispatch. -5. **No-new-bin-shim-hand-Rust fixture's substrate prerequisite.** §7.3 names a substrate gap: neither `expected_hand_authored_bin_shims` `CensusListConstant` nor a filter-predicate-over-`expected_hand_authored_non_test` exists today (current `CensusListConstant` values per design doc §7.3 are `expected_hand_authored_non_test` and `expected_hand_authored_test` only). Substrate Manager picks the [P1](../../INVARIANTS.md#p1-modeling-faithfulness) disposition (new constant vs filter predicate vs `CensusSubsetCount` reuse) when this lane dispatches; PB does not pre-empt that choice. +5. **No-new-bin-shim-hand-Rust fixture's substrate prerequisite — RESOLVED 2026-05-09.** Substrate Manager (warm-wolf-698) ratified shape (b) `CensusSubsetCount` reuse with closed predicate `BinShimFilesSubsetPredicate` at gunbc#2068 [c#4411574142](https://github.com/gunb-ai/gunbc/issues/2068#issuecomment-4411574142). See §"Substrate landings (locked shape)" below for required carrier + consumer wire-up. These dependencies are cumulative: R2-Evaluator → Item 4 (PB-Runtime) → BinShim carrier + ProcessExit live → bin-shim instances/emitter (this lane) → per-shim retirement. +## Substrate landings (locked shape) + +Authoritative source: Substrate Mgr (warm-wolf-698) disposition at gunbc#2068 [c#4411574142](https://github.com/gunb-ai/gunbc/issues/2068#issuecomment-4411574142). Per `feedback_strict_mirror_vs_novel_substrate_fact`, this is a strict mirror of the existing `LensProducerFilesSubsetPredicate` precedent (no novel substrate fact; ratifies directly). + +The retirement worker MUST land the following four artifacts (atomic with the first per-shim retirement, or as a preceding scaffolding PR): + +1. **Substrate marker type** at [`src/v3/std/verification.dag`](../../src/v3/std/verification.dag) (adjacent to the `LensProducerFilesSubsetPredicate` block at `:41-43`): + ```dag + // Closed PB bin-shim predicate follows the same declaration-ref pattern + // as the lens-producer subset. + type BinShimFilesSubsetPredicate {} + ``` +2. **Substrate marker value**, co-located: + ```dag + data bin_shim_files_subset_predicate: BinShimFilesSubsetPredicate = {} + ``` +3. **Runtime predicate body** in [`src/v3/compiler/src/test_runner.rs`](../../src/v3/compiler/src/test_runner.rs), adjacent to `is_lens_producer_census_path`: + ```rust + fn is_bin_shim_census_path(path: &str) -> bool { + path.starts_with("src/v3/compiler/src/bin/") + } + ``` +4. **Dispatch branch** in `eval_census_subset_count_shape` (parallel to the existing `LensProducerFilesSubsetPredicate` branch around `test_runner.rs:3273-3290`) that resolves the `subset_predicate` field as `BinShimFilesSubsetPredicate` and counts entries via `is_bin_shim_census_path`. + +Bin-shim file inventory at main `5a13ed800` (initial count = **9**; closure at 0): + +``` +src/v3/compiler/src/bin/emit_method_template_projection.rs +src/v3/compiler/src/bin/r1c_e_emit_gates.rs +src/v3/compiler/src/bin/regen_bootstrap.rs +src/v3/compiler/src/bin/regen_lens.rs +src/v3/compiler/src/bin/regen_parse.rs +src/v3/compiler/src/bin/regen_parse_tables.rs +src/v3/compiler/src/bin/regen_tokenize.rs +src/v3/compiler/src/bin/regen_v3.rs +src/v3/compiler/src/bin/self_host_fixed_point.rs +``` + +All 9 are members of `expected_hand_authored_non_test`; per-shim retirement net-decreases the subset count by one and atomically grows `REGEN_OUTPUTS` / `GENERATED_FILES` by one. + ## Acceptance — what a future implementation PR must prove Per design doc §7. The locked TestClaim names are authoritative; do not rename: @@ -71,9 +115,25 @@ test_claim { If the existing `TestPredicate` envelope at `src/v3/std/verification.dag:108-235` cannot express "behavioral equivalence between emitted and hand-Rust binaries," this is a **substrate gap** — escalate per `INVARIANTS.md` [P1](../../INVARIANTS.md#p1-modeling-faithfulness) to Substrate Manager. PB does not invent a new `TestPredicate` variant from this lane. -### `no_new_bin_shim_hand_rust` (§7.3) +### `no_new_bin_shim_hand_rust` (§7.3) — substrate-shape locked 2026-05-09 + +Closed-set retirement gate: hand-Rust bin-shim count never exceeds the documented retirement schedule. **Substrate disposition resolved** per §"Substrate landings (locked shape)" above. Authorable acceptance shape: + +```dag +data census_subset_claim: TestClaim = { + name: "no_new_bin_shim_hand_rust", + source: "let x: Int = 1", + file_name: "no_new_bin_shim_hand_rust.v3", + predicate: CensusSubsetCount { + authority: census_authority, + list_constant: expected_hand_authored_non_test, + subset_predicate: bin_shim_files_subset_predicate + }, + requires: [] +} +``` -Closed-set retirement gate: hand-Rust bin-shim count never exceeds the documented retirement schedule. Substrate prerequisite is **not yet live** (see §"Dependencies" item 5); this gate is unauthorable until Substrate Manager picks the [P1](../../INVARIANTS.md#p1-modeling-faithfulness) disposition. +Closure when count==0 (currently observes 9). Per-PR shrink receipts acceptable per Substrate Mgr disposition; closure at 0. ### Other behavioral acceptance bullets (per dispatch directive) @@ -100,7 +160,7 @@ PB Manager dispatches per-shim retirement workers when **a single readiness chec 2. R2-Evaluator landed and stable. 3. **Item 4 (PB-Runtime interpreter-as-data) sub-gate green** — `pb_runtime_equivalent_to_evaluator_on_corpus` evaluates true. 4. **Substrate-owned `BinShim` carrier type live on main** — `type BinShim { ... }` declared per design doc §4.2 (verify by grep at dispatch). -5. **Substrate-owned `CensusListConstant` / filter disposition for §7.3 picked** — without this, the `no_new_bin_shim_hand_rust` gate is unauthorable and the closed-set discipline is unenforceable. +5. **Substrate-owned `CensusListConstant` / filter disposition for §7.3 picked** — **RESOLVED 2026-05-09** per gunbc#2068 [c#4411574142](https://github.com/gunb-ai/gunbc/issues/2068#issuecomment-4411574142); locked-shape carriers + consumer wire-up enumerated in §"Substrate landings (locked shape)". If any of (1)-(5) is unmet, this brief stays in PROPOSAL state; PB Manager does not dispatch. @@ -111,7 +171,7 @@ Worker MUST STOP and escalate to PB Manager (which escalates to Director if cros - **`BinShim` carrier shape pressure.** Authoring a `data _shim: BinShim = { ... }` instance reveals that the locked carrier shape (per design doc §4.2) cannot express the bin's actual entry-function signature or pipeline composition. That's a Substrate-owned carrier-shape evolution per §5.4 boundary; signal Substrate Manager via [P1](../../INVARIANTS.md#p1-modeling-faithfulness) — do not extend the carrier from this lane. - **No fitting `TestPredicate` variant for §7.2 equivalence.** If "behavioral equivalence between emitted Rust and hand-Rust binary" cannot compose from existing variants at `src/v3/std/verification.dag:108-235`, that's a substrate gap — [P1](../../INVARIANTS.md#p1-modeling-faithfulness) to Substrate Manager. Do not invent a new variant here. - **Emit-pattern divergence from `dsl/extdeps/languages/rust/emit.dag` shape.** Per anti-bridge invariant #4 the `BinShim` emitter "is one of many `.dag` emitters; its shape mirrors `dsl/extdeps/languages/rust/emit.dag`." If the retirement worker finds itself authoring parallel emit logic, STOP — that's a sign the carrier or pattern is wrong. -- **§7.3 substrate disposition not yet live.** If the substrate prerequisite (item (5) above) hasn't landed, the lane cannot close even if the per-shim retirement is mechanically successful — `no_new_bin_shim_hand_rust` would be unauthorable. Surface this to Substrate Manager + R3 Release Manager rather than working around it. +- **§7.3 substrate disposition drift.** The locked shape is recorded in §"Substrate landings (locked shape)" above; if a worker grep finds the substrate marker types/values already exist on main but with a different shape than enumerated, STOP — surface the drift to PB Mgr + Substrate Mgr rather than authoring against the stale brief encoding. - **SG-0 census drift the wrong way.** Per `feedback_ratchet_only_down`: if the retirement PR does not net-decrease the hand-Rust bin-shim count, that's a defect in the work, not a ratchet to relax. ## Cross-program signals From 72ad0108a886e1ab5a8d9374a52480c276f78f97 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Sat, 9 May 2026 02:36:08 -0400 Subject: [PATCH 3/5] =?UTF-8?q?WIP:=20R3=20PB=20Mgr=20=E2=80=94=20lane=20t?= =?UTF-8?q?hrough=20R3=20close?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/briefs/r3-pb-binshim-retirement-worker.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/briefs/r3-pb-binshim-retirement-worker.md b/docs/briefs/r3-pb-binshim-retirement-worker.md index 26e8eb5b08c..a5a956f2fea 100644 --- a/docs/briefs/r3-pb-binshim-retirement-worker.md +++ b/docs/briefs/r3-pb-binshim-retirement-worker.md @@ -4,7 +4,9 @@ **Substrate-disposition update 2026-05-09**: §7.3 `CensusListConstant` / filter-predicate question (formerly an open Substrate gap) was **RATIFIED by Substrate Manager** (warm-wolf-698) at gunbc#2068 [c#4411574142](https://github.com/gunb-ai/gunbc/issues/2068#issuecomment-4411574142). Locked shape: **(b) `CensusSubsetCount` filter** with closed predicate `BinShimFilesSubsetPredicate` mirroring the existing `LensProducerFilesSubsetPredicate` precedent at [`src/v3/std/verification.dag:41-43`](../../src/v3/std/verification.dag). Carriers + consumer wire-up enumerated below in §"Substrate landings (locked shape)". -**Item-4 prerequisite update 2026-05-09**: PB-Runtime interpreter-as-data + bin-shim emit pattern landed via PR #2282 (closes gunbc#2227). Both Item-4 sub-gate dependencies are met; this brief is now in **READY-FOR-DISPATCH** posture pending only the standard R2/R2-Evaluator close signal. +**Item-4 partial-landing update 2026-05-09**: PR #2282 (closes gunbc#2227) landed the **Item-4 carrier substrate** (`runtime.dag` PB-Runtime types + regenerated bootstrap surface) only — it did **not** author the §7.1 `pb_runtime_equivalent_to_evaluator_on_corpus` equivalence claim, the bin-shim emitter, the §7.2 BinShim equivalence fixture, or any per-shim `BinShim` instance rows. Those remain dispatch preconditions for this lane. + +**This brief stays in PROPOSAL.** This 2026-05-09 amendment is a **substrate-disposition absorption** (encoding §7.3 ratification per #2068 [c#4411574142](https://github.com/gunb-ai/gunbc/issues/2068#issuecomment-4411574142)) — it does **not** flip the lane to ready. Dispatch remains gated on §"Dispatch preconditions" below, which still includes §7.1 Item-4 sub-gate green + §7.2 equivalence fixture authoring + the emitter / instance-row landings. Per `INVARIANTS.md` [P5](../../INVARIANTS.md), the dispatch gate must continue to fail-closed against incomplete Item-4 / Item-5 deliverables. **Owning manager:** Pure Bootstrap Manager (R2 → R3 continuation per `r3-structure.md` §"Manager structure" Item 1). From 363cf7998754c65c21ede7a8c50786a0da6c05fe Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Sat, 9 May 2026 06:37:13 +0000 Subject: [PATCH 4/5] =?UTF-8?q?brief:=20clarify=20=C2=A77.3=20TestClaim=20?= =?UTF-8?q?is=20zero-only=20(not=20schedule-bound)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Addresses non-blocking improvement on PR #2334 (codex review sha=68977425): the prior wording called CensusSubsetCount a schedule-bound gate, but the runtime predicate (test_runner.rs:3290-3296) is zero-only — Pass iff count==0. Interim per-PR shrink receipts are PR-level milestones outside this TestClaim, not TestClaim verdicts. Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/briefs/r3-pb-binshim-retirement-worker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/briefs/r3-pb-binshim-retirement-worker.md b/docs/briefs/r3-pb-binshim-retirement-worker.md index a5a956f2fea..155b0a93964 100644 --- a/docs/briefs/r3-pb-binshim-retirement-worker.md +++ b/docs/briefs/r3-pb-binshim-retirement-worker.md @@ -135,7 +135,7 @@ data census_subset_claim: TestClaim = { } ``` -Closure when count==0 (currently observes 9). Per-PR shrink receipts acceptable per Substrate Mgr disposition; closure at 0. +**TestClaim verdict semantics**: the runtime predicate is **zero-only** (`Pass` iff count==0; otherwise `Fail` with the observed count). The TestClaim is **not** a schedule-bound gate; it does not encode an interim bound and cannot pass with a non-zero count. "Per-PR shrink receipts" referenced in the disposition are **PR-level milestones tracked outside this TestClaim** (e.g., R3 BinShim retirement lane progress reports), not TestClaim verdicts. Closure of §1.8 sub-gate #7 is gated on this TestClaim flipping to Pass at count==0. ### Other behavioral acceptance bullets (per dispatch directive) From b149217c13242565f4c85a291e0823c74c7ff602 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Sat, 9 May 2026 07:29:46 +0000 Subject: [PATCH 5/5] =?UTF-8?q?brief:=20reconcile=20=C2=A7"Substrate=20lan?= =?UTF-8?q?dings"=20with=20Non-goals=20(PB=20strict-mirror=20authoring=20a?= =?UTF-8?q?uthorized=20post-#2068)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Addresses non-blocking improvement on PR #2334 (codex review sha=363cf799): the new §"Substrate landings (locked shape)" worker-owned list contradicted the unchanged "out of scope" entries that still said PB lane does not author §7.3 substrate shape. Resolution: per #2068 c#4411574142 ratification + feedback_strict_mirror_vs_ novel_substrate_fact, strict-mirror declarations (mirroring the existing LensProducerFilesSubsetPredicate precedent) are PB-lane-authorable. The non-goal still applies to *novel* shape (extra fields, alternative coproducts) which would re-escalate to Substrate Mgr. Updates: - "PB does not own and must not edit" entry (line 29): clarifies shape question is Substrate-territory but strict-mirror authoring is authorized. - Non-goals (line 155): same reconciliation; novel shape still gates back to Substrate Mgr. Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/briefs/r3-pb-binshim-retirement-worker.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/briefs/r3-pb-binshim-retirement-worker.md b/docs/briefs/r3-pb-binshim-retirement-worker.md index 155b0a93964..32fa949ed01 100644 --- a/docs/briefs/r3-pb-binshim-retirement-worker.md +++ b/docs/briefs/r3-pb-binshim-retirement-worker.md @@ -26,7 +26,7 @@ PB does **not** own and **must not** edit: - The `BinShim` carrier-type shape (additional fields, signature refinement of `entry: () -> std.process.ProcessExit`, etc.) — that's Substrate Manager territory per §5.4 boundary; generalized carrier-shape evolution escalates via [`INVARIANTS.md#p1-modeling-faithfulness`](../../INVARIANTS.md#p1-modeling-faithfulness) substrate-fact-introduction procedure. - The PB-Runtime interpreter-as-data implementation (Item 4 / sub-gates i + ii — `lens_apply.rs` and `lens_testgen.rs` retirement). Those are separate and gated separately. -- The §7.3 `CensusListConstant` / filter-predicate substrate question (see §"Substrate gap" below). +- The §7.3 `CensusListConstant` / filter-predicate substrate **shape question** (Substrate Mgr disposition territory). Per the 2026-05-09 ratification at #2068 [c#4411574142](https://github.com/gunb-ai/gunbc/issues/2068#issuecomment-4411574142), the Substrate Mgr authorized PB-lane authoring of the four strict-mirror artifacts enumerated in §"Substrate landings (locked shape)" (mirror of the existing `LensProducerFilesSubsetPredicate` precedent — no novel substrate fact). PB lane MUST NOT introduce a *novel* substrate shape; it MAY land the strict-mirror declarations as part of the retirement work. ## First slice — `regen_lens.rs` @@ -152,7 +152,7 @@ This lane explicitly does NOT cover: - **`lens_apply.rs` / `lens_testgen.rs` retirement** — Item 4 sub-gates i + ii. Different runtime substrate (PB-Runtime interpreter-as-data); this lane consumes Item 4 but does not implement it. - **PB-Runtime interpreter-as-data implementation** — Item 4. This lane assumes Item 4 has landed. - **Substrate-owned `BinShim` carrier-shape edits** — additional fields, refining `entry: () -> std.process.ProcessExit` beyond the locked signature, etc. Escalate to Substrate Manager via [P1](../../INVARIANTS.md#p1-modeling-faithfulness) if the retirement work surfaces a real shape gap. -- **§7.3 `CensusListConstant` / filter-predicate substrate authoring** — Substrate Manager territory per [P1](../../INVARIANTS.md#p1-modeling-faithfulness) disposition. This lane consumes whatever Substrate authors; it does not pre-empt the choice. +- **§7.3 `CensusListConstant` / filter-predicate substrate *shape* authoring** — Substrate Manager territory per [P1](../../INVARIANTS.md#p1-modeling-faithfulness) disposition. **As of 2026-05-09 (#2068 c#4411574142) the disposition is RATIFIED** as a strict-mirror of `LensProducerFilesSubsetPredicate`; PB lane authoring of the four enumerated mirror artifacts is authorized per §"Substrate landings (locked shape)". PB lane MUST NOT introduce *novel* shape (extra fields on `CensusSubsetCount`, alternative coproducts, etc.) — that escalates back to Substrate Mgr. ## Dispatch preconditions