Skip to content
6 changes: 3 additions & 3 deletions docs/r3-program-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -323,9 +323,9 @@ This principle is NOT a separate lane; it's a per-lane gate-shape requirement ap
| 95 | `opt_in_iteration_parallelism_via_lens_application_demonstrated` | demonstration | T-Lens-Application-Surface / **Cluster F (T-LP-Retirement)** | **R3-LOAD-BEARING (carve-promoted-IN-R3 2026-05-09)** per Director ratification at gunbc#846 #issuecomment-4412330468 (cascade-promotion with C1 #81). Worked-example demo via `apply_lens(parallelism, fn, Enforce)`. Cascade-gates on F-α completion (parallelism BEHAVIORALLY COMPLETE #81) + T-LAS Slice B substrate landing (#91 per-lens LensEnforcement projection per `docs/design-lens-application-surface.md` §4.4 / §7). Cluster F sub-phase F-γ.1. See `docs/audit/r3-cluster-f-sequencing-plan-2026-05-09.md` §1.4.1. Prior R4-CARVED (C1 cascade) status DISSOLVED. |
| 96 | `value_body_substrate_mirror_isomorphism_executable` | substrate-shape | T-V-L4-L7-Direct (Verification cross-program with Substrate) | **CONSUMER_LANDED** (PR #2288 — Add ValueBody substrate mirror isomorphism gate; CI-visible integration check landed; refresh per cluster-analysis audit §1; NEW 2026-05-08 per Q-ValueBody-Isomorphism RATIFIED at gunbc#828 #issuecomment-4403972737 + Brian sanction at gunbc#846) | Rust `ValueBody` ↔ substrate `.dag` mirror isomorphism gate; canonical Pass-condition body at `r3-structure.md` §Acceptance T-Verification-L4-L7-Direct (per §1.8 authority convention `r3-program-plan.md:302`); brief at `docs/briefs/r3-v-valuebody-substrate-mirror-isomorphism-v1-worker.md`. |
| 97 | `method_template_projection_emit_shim_retirement_coherence` | state-check | R2-Grounding-Rust ([Gunbc **#1982**](https://github.com/gunb-ai/gunbc/issues/1982)) | **CONSUMER_LANDED + PASSING** | Q-V2-Retirement-Boundary-Matrix (**G6**) — Gap-4 `pb_method_template_projection_dag_emit` + **`[[bin]]` `emit_method_template_projection`** in `src/v3/compiler/Cargo.toml` + `src/bin/emit_method_template_projection.rs` must exist **iff** **`src/v2/stage0/`** remains (`autobins = false` — manifest target is load-bearing). Consumer: **`method_template_projection_emit_shim_coherence_test.rs`** + SG-0 census path gate. Terminal retirement = v2 tree absent ⇒ lib + bin table + bin source absent; coherence holds continuously. |
| 98 | `ci_yml_hand_authority_dissolved` | state-check | T-Workflow-As-Data | DECLARED (NEW 2026-05-12 per PR #2744 §1 — T-WAD FULL R3 elevation per operator directive 2026-05-12 + Director ratification msg_5cbdad24 + msg_f9fd669e) | `.github/workflows/ci.yml` is no longer hand-authored CI logic — file is either (a) absent (some emission targets may not require a `.github/workflows/` artifact), (b) committed-emission-artifact byte-identical to `project_github_actions(ci_workflow_dag, target)` output with regression-guard test (YamlStatic), or (c) thin-shim entry-point invoking emitted binary/python (BinaryShim / PythonShim); in NO case is it hand-edited CI logic. Regression guard test prevents hand-authored re-introduction. Per briansrls BLOCKING #PR2744 inline review fix 2026-05-12: deleting hand-maintenance ≠ deleting executable artifact; P5 / Pure Bootstrap dissolves AUTHORITY, not file presence. |
| 99 | `workflow_runtime_open_enum_landed` | substrate-shape | T-Workflow-As-Data | **CONSUMER_LANDED + PASSING** — `WorkflowRuntime = YamlStatic \| BinaryShim \| PythonShim` declared at `dsl/gunbc/ci_emission.dag:27` (PR #2774 squash-merged 2026-05-12T23:39:42Z by proud-dove-838); substrate-compile consumer: `gunbc_ci_emission_substrate_compiles` at `src/v3/compiler/tests/integration/t_ci_workflow_as_data_demo_test.rs:818` calls `compile_to_dag(GUNBC_CI_EMISSION_SOURCE, "dsl/gunbc/ci_emission.dag")` and asserts zero diagnostics, type-checking the `WorkflowRuntime` declaration through the v3 compiler against `extdeps.github.actions.Workflow`. Per (c-refined) shape ratified at PR #2749 §7 + Director msg_237bde05 / msg_f9fd669e. `InlineGunbc` is DESIGN-ONLY per PR #2746 §5.4 — NOT in initial enum; lands via separate substrate-prereq PR paired with a runtime consumer (per openai-pro BLOCKING fix 2026-05-12 on PR #2744). |
| 100 | `project_github_actions_landed` | substrate-shape | T-Workflow-As-Data | **CONSUMER_LANDED + PASSING** — `fn project_github_actions(dag: CIWorkflowDag, runtime: WorkflowRuntime) -> Workflow` declared at `dsl/gunbc/ci_emission.dag:87`; pinned consumer binding `data gunbc_ci_yml_workflow: Workflow = project_github_actions(ci_workflow_dag, YamlStatic)` at `dsl/gunbc/ci_emission.dag:95` (PR #2774 squash-merged 2026-05-12T23:39:42Z). Consumes `extdeps.github.actions.Workflow` as codomain + `CIWorkflowDag` (PR #2736 carrier) as input domain per (c-refined) substrate-shape per PR #2749 §7. Substrate-compile consumer: `gunbc_ci_emission_substrate_compiles` at `src/v3/compiler/tests/integration/t_ci_workflow_as_data_demo_test.rs:818` type-checks the projection signature (`compile_to_dag` over `ci_emission.dag` with zero diagnostics). The separate YAML-authority byte-drift guard (`gunbc_ci_github_actions_workflow_dag_matches_yaml_generator_output` at :783) ratchets `.github/workflows/ci.yml` against `gen_gunbc_ci_workflow_dag` output and is **not** an emit-back consumer of `project_github_actions` (per test docstring at :781). The `.dag`-authoritative emit-back consumer + per-arm body completion (full BinaryShim / PythonShim emission) remain Slice 4-5 follow-on under #98 `ci_yml_hand_authority_dissolved`. |
| 98 | `ci_yml_hand_authority_dissolved` | state-check | T-Workflow-As-Data | DECLARED (NEW 2026-05-12 per PR #2744 §1 — T-WAD FULL R3 elevation per operator directive 2026-05-12 + Director ratification msg_5cbdad24 + msg_f9fd669e) | `.github/workflows/ci.yml` is no longer hand-authored CI logic — file is either (a) committed-emission-artifact byte-identical to `project_github_actions(ci_workflow_dag, target)` output with regression-guard test (YamlStatic), or (b) thin-shim entry-point invoking the emitted binary (BinaryShim); in NO case is it hand-edited CI logic AND in NO case is the artifact absent for the initial enum. Regression guard test prevents hand-authored re-introduction. Per briansrls BLOCKING #PR2744 inline review fix 2026-05-12: deleting hand-maintenance != deleting executable artifact; P5 / Pure Bootstrap dissolves AUTHORITY, not file presence. |
| 99 | `workflow_runtime_open_enum_landed` | substrate-shape | T-Workflow-As-Data | **CONSUMER_LANDED + PASSING** — `WorkflowRuntime = YamlStatic \| BinaryShim` declared at `dsl/gunbc/ci_emission.dag:27`; substrate consumer: `workflow_runtime_initial_enum_matches_t_wad_gate_99` at `src/v3/compiler/tests/integration/t_ci_workflow_as_data_demo_test.rs` compiles the isolated `WorkflowRuntime` declaration slice and asserts the initial variant labels exactly match `YamlStatic` and `BinaryShim`. Per (c-refined) shape ratified at PR #2749 §7 + Director msg_237bde05 / msg_f9fd669e. `PythonShim` and `InlineGunbc` are DESIGN-ONLY future targets — NOT in the initial enum; each lands via separate substrate-prereq PR paired with a runtime consumer. |
| 100 | `project_github_actions_landed` | substrate-shape | T-Workflow-As-Data | **DECLARED + TEXT-RATCHETED** — `fn project_github_actions(dag: CIWorkflowDag, runtime: WorkflowRuntime) -> Workflow` declared at `dsl/gunbc/ci_emission.dag:87`; pinned binding `data gunbc_ci_yml_workflow: Workflow = project_github_actions(ci_workflow_dag, YamlStatic)` at `dsl/gunbc/ci_emission.dag:95`. Consumes `extdeps.github.actions.Workflow` as codomain + `CIWorkflowDag` (PR #2736 carrier) as input domain per (c-refined) substrate-shape per PR #2749 §7. Current receipt: `gunbc_ci_emission_substrate_contract_is_present` at `src/v3/compiler/tests/integration/t_ci_workflow_as_data_demo_test.rs` pins the projection signature and `YamlStatic` binding as source text only; it is not a full-file v3 type-check of `project_github_actions`. The separate YAML-authority byte-drift guard ratchets `.github/workflows/ci.yml` against `gen_gunbc_ci_workflow_dag` output and is not an emit-back consumer of `project_github_actions`. The full `.dag`-authoritative emit-back/type-check receipt + per-arm body completion remain Slice 4-5 follow-on under #98 `ci_yml_hand_authority_dissolved`. |
| 101 | `test_cost_dimension_landed` | substrate-shape | T-Workflow-As-Data + Debt-Paydown (Cluster M sub-component) | **CONSUMER_LANDED + PASSING** — `type TestNodeCostDimension` declared at `src/v3/std/verification.dag:578` and `dsl/std/verification.dag:75` (v3 authority reuses T-WAD timing substrate via `TimingBudget` + `TimingMeasurement` over Nanoseconds; legacy dsl projection uses branded non-negative Milliseconds and is marked to retire/rewire under #102) per PR #2761 (eager-crane-176, squash-merged 2026-05-12T18:07:31Z). P5 hand-Rust consumer receipt: `test_cost_dimension_landed_on_test_node` at `src/v3/compiler/tests/integration/test_runner_test.rs:287` compiles a `TestNodeCostDimension` row, asserts the nested timing-budget shape, and routes the referenced `TestClaim` through `TestRunner`. **Distinct from existing compiler-internal cost gates** (#37 `cost_lens_reads_target_realization` / #39 `no_coercion_cost_dimension` / #40 `symbolic_cost_expr_equals_executable` / #70 `cost_lens_demonstration` / #80 `cost_lens_behaviorally_complete` are about `SymbolicCost` as the compiler's cost lens reading target programs); this gate is about `Cost`-as-`Dimension` applied to **test nodes** so the slow-test ratchet **can** attach wall-clock facts to modeled test nodes instead of treating exemptions as an unstructured compiler-local table (substrate-shape sibling of state-check #102). |
| 102 | `slow_test_exemptions_dissolved` | state-check | T-Workflow-As-Data + Debt-Paydown | DECLARED (NEW 2026-05-12 per PR #2744 §1) | **Pass target:** slow-test ratchet policy is read from modeled test-node timing / `TestNodeCostDimension` substrate facts (no checked-in warn-manifest side input). **Interim (not closure):** `scripts/slow-test-exemptions.txt` is deleted and warn rows live in structured `scripts/test-node-wall-clock-ratchet.jsonl` while CI still reads that file directly — bridge work toward #101/#102, not a claim that #102 is GREEN. Pair with kernel-modeling split per `feedback_state_space_vs_behavioral_invariants` + Director msg_f9fd669e. |
| 103 | `ci_uses_affected_set_selection` | state-check | T-Workflow-As-Data + T-Verification | DECLARED (NEW 2026-05-12 per PR #2744 §1) | `BinaryShim` emitter consumes affected-set lens output from PR #2713 (merged); Layer 2 path-regex `if:` gates removed from any remaining workflow files (cross-tier co-owned with clever-tern-670 Slice 7 work). |
Expand Down
4 changes: 2 additions & 2 deletions docs/r3-structure.md
Original file line number Diff line number Diff line change
Expand Up @@ -172,8 +172,8 @@ L6 (`l6_structural_form_coverage`) was moved out of this lane during the engine-
- `timing_lens_carrier_landed` — `Lens<TimingMeasurement>` carrier authored per Substrate Mgr STOP+PING design receipt for `docs/design-timing-lens.md`; `TimingMeasurement` + `TimingObservationSet` + `TimingBudget` carriers live; `Output` is projection/report distinguishing `Observed | Unobserved | Ambiguous | Stale` (fail-closed enforcement on non-observed states per `feedback_fail_closed_discipline`; `Unobserved` is the missing-evidence arm — not the bare label `Missing`, to avoid witness/bootstrap collisions)
- `shared_external_attachment_pattern_documented` — **CONSUMER_LANDED** (ledger: `docs/r3-program-plan.md` §1.8 row 55): `WorkflowObservationAnchor` factored separately from timing as reusable external-data attachment primitive (serves coverage / logs / failures / artifacts beyond timing); pattern documented in [`docs/design-timing-lens.md`](design-timing-lens.md) §2 with six invariants (stable subject identity not span; observed-artifact identity/digest; producer/observer/prover identity; attachment timestamp + run id; `Observed` vs missing-evidence / ambiguous / stale report states; fail-closed enforcement on non-observed/non-valid states); promotion to generic `ExternalDataAnchor<Subject, Source>` carrier deferred to second concrete consumer per Substrate Mgr design stance (`ProofReceipt` likely; per `gunb-ai/ctrl#369` reshaped scope)
- `ci_workflow_modeled_as_dag` — at least one workflow modeled as `.dag` data (CI workflow recommended as demonstration target per Director scope); workflow-as-data thesis instantiated; `gunb-ai/gunb.ai` repo's existing CI infrastructure (substantial bazel-ci.yml at ~84KB) surveyed for portable patterns during carrier authoring (worker-level survey, not gating substrate-shape decision)
- `ci_yml_hand_authority_dissolved` — (NEW 2026-05-12 per T-WAD FULL R3 elevation; operator directive + Director ratification msg_5cbdad24 + msg_f9fd669e + (b) ledger-sync disposition msg_2a68a4b5; in-flight scope authority at PR #2744 §1) `.github/workflows/ci.yml` is no longer hand-authored CI logic — file is either (a) absent, (b) committed-emission-artifact byte-identical to `project_github_actions(ci_workflow_dag, target)` output with regression-guard test, or (c) thin-shim entry-point invoking emitted binary/python; in NO case hand-edited. Per briansrls BLOCKING #PR2744 inline review fix 2026-05-12: deleting hand-maintenance ≠ deleting executable artifact; P5 / Pure Bootstrap dissolves AUTHORITY, not file presence
- `workflow_runtime_open_enum_landed` — (NEW 2026-05-12) `WorkflowRuntime` sum-type with 3 initial arms (`YamlStatic | BinaryShim | PythonShim | ...`) declared in gunbc namespace as open enum; per (c-refined) shape ratified at PR #2749 §7 + Director msg_237bde05 / msg_f9fd669e. `InlineGunbc` is DESIGN-ONLY per PR #2746 §5.4 — NOT in initial enum; lands via separate substrate-prereq PR paired with a runtime consumer (per openai-pro BLOCKING fix 2026-05-12 on PR #2744)
- `ci_yml_hand_authority_dissolved` — (NEW 2026-05-12 per T-WAD FULL R3 elevation; operator directive + Director ratification msg_5cbdad24 + msg_f9fd669e + (b) ledger-sync disposition msg_2a68a4b5; in-flight scope authority at PR #2744 §1) `.github/workflows/ci.yml` is no longer hand-authored CI logic — file is either (a) committed-emission-artifact byte-identical to `project_github_actions(ci_workflow_dag, target)` output with regression-guard test, or (b) thin-shim entry-point invoking the emitted binary; in NO case hand-edited and in NO case absent for the initial enum. Per briansrls BLOCKING #PR2744 inline review fix 2026-05-12: deleting hand-maintenance != deleting executable artifact; P5 / Pure Bootstrap dissolves AUTHORITY, not file presence
- `workflow_runtime_open_enum_landed` — (NEW 2026-05-12) `WorkflowRuntime` sum-type with 2 initial arms (`YamlStatic | BinaryShim | ...`) declared in gunbc namespace as open enum; per (c-refined) shape ratified at PR #2749 §7 + Director msg_237bde05 / msg_f9fd669e. `PythonShim` and `InlineGunbc` are DESIGN-ONLY future targets — NOT in initial enum; each lands via separate substrate-prereq PR paired with a runtime consumer.
- `project_github_actions_landed` — (NEW 2026-05-12) `project_github_actions: (CIWorkflowDag, WorkflowRuntime) -> Workflow` projection function declared in gunbc namespace; consumes `extdeps.github.actions.Workflow` as codomain type + `CIWorkflowDag` (PR #2736 carrier introduction) as input domain; per (c-refined) substrate-shape per PR #2749 §7; WI-2 lands DECLARATION + signature only (per-arm bodies are Slice 4-5 work owned by Substrate Mgr)
- `test_cost_dimension_landed` — (NEW 2026-05-12; cross-lane co-owned with Debt-Paydown Cluster M sub-component) `Cost` dimension declared on test nodes. **Distinct from existing compiler-internal cost gates** (#37 / #39 / #40 / #70 / #80 are about `SymbolicCost` as the compiler's cost lens reading target programs); this gate is about `Cost`-as-`Dimension` applied to **test nodes** so wall-clock ratchet facts **can** attach to modeled test nodes (substrate-shape sibling of state-check #102 below).
- `slow_test_exemptions_dissolved` — (NEW 2026-05-12; cross-lane co-owned with Debt-Paydown) **Pass target:** ratchet policy comes from modeled test-node timing / `TestNodeCostDimension` facts — no hand-maintained warn-manifest side file. **Interim:** `scripts/slow-test-exemptions.txt` deleted; structured JSONL (`scripts/test-node-wall-clock-ratchet.jsonl`) still read by `check-test-timeout.sh` until the runner wires through substrate facts (P5 bridge, not #102 closure). State-check sibling of `test_cost_dimension_landed` per kernel-modeling discipline split (`feedback_state_space_vs_behavioral_invariants` + Director msg_f9fd669e).
Expand Down
18 changes: 7 additions & 11 deletions dsl/gunbc/ci_emission.dag
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,19 @@
module gunbc.ci_emission

import gunbc.ci { CIWorkflowDag, ci_workflow_dag }
import gunbc.ci.github_actions_workflow { gunbc_ci_github_actions_workflow }
import extdeps.github.actions {
Workflow, Job, RunStep, UsesStep,
HostedRunner, UbuntuLatest,
Bash
}

// 🟡 YELLOW (scaffold) — coproduct-dissolution receipt (see modeling-discipline Practice 4).
// Ratified initial surface: YamlStatic | BinaryShim | PythonShim (`docs/design-ci-workflow-emitter-dispatch.md` §3;
// `docs/briefs/t-wad-wi2-substrate-and-slice4-yamlstatic-body-worker.md` §1). `InlineGunbc` stays off the enum until a
// real runtime consumer exists (emitter-dispatch §5.4).
// Ratified initial surface: YamlStatic | BinaryShim
// (`docs/r3-t-workflow-as-data-full-r3-close-scope.md` §1 gate #99).
// PythonShim and InlineGunbc stay off the enum until a real runtime consumer
// lands with the corresponding substrate-prereq PR.

type WorkflowRuntime = YamlStatic | BinaryShim | PythonShim
type WorkflowRuntime = YamlStatic | BinaryShim

// Slice 5: BinaryShim thin-shim `Workflow` projection (design-ci-workflow-emitter-dispatch.md §5.2).
//
Expand All @@ -39,11 +39,11 @@ type WorkflowRuntime = YamlStatic | BinaryShim | PythonShim
//
// Binary `main()` and affected-set selection are out of scope — the arm
// emits a `Workflow` that *references* the binary, not the binary itself.
fn gunbc_ci_emission_binary_shim_workflow(dag: CIWorkflowDag) -> Workflow = Workflow {
fn gunbc_ci_emission_binary_shim_workflow(dag: CIWorkflowDag) -> Workflow = {
name: dag.github_actions_workflow.name,
on: dag.github_actions_workflow.on,
concurrency: dag.github_actions_workflow.concurrency,
jobs: [Job {
jobs: [{
id: "ci",
name: none,
runner: HostedRunner { label: UbuntuLatest },
Expand Down Expand Up @@ -80,15 +80,11 @@ fn gunbc_ci_emission_binary_shim_workflow(dag: CIWorkflowDag) -> Workflow = Work
permissions: dag.github_actions_workflow.permissions
}

// PythonShim placeholder retained until that arm body lands (separate slice / brief).
data gunbc_ci_emission_python_shim_placeholder_workflow: Workflow = gunbc_ci_github_actions_workflow

// v3 tokenizer maps `fn`, not legacy `func` (which becomes `Ident("func")` and fails top-level dispatch).
fn project_github_actions(dag: CIWorkflowDag, runtime: WorkflowRuntime) -> Workflow =
match runtime {
YamlStatic => dag.github_actions_workflow
BinaryShim => gunbc_ci_emission_binary_shim_workflow(dag)
PythonShim => gunbc_ci_emission_python_shim_placeholder_workflow
}

// Pinned projection: same `ci_workflow_dag` row, YamlStatic transport (Slice 4).
Expand Down
Loading
Loading