Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ Current evidence receipts:
Dissolution / next-authoring trigger: land a design receipt for workflow-as-data
carriers before authoring live substrate. That receipt must decide the `uses` target
shape, job/step/dependency carriers, permissions/secret policy modeling, and how it
relates to the timing-lens `WorkflowObservationAnchor` / external-attachment pattern.
relates to the timing-lens **`WorkflowObservationAnchor`** / **Shared External Attachment**
pattern ([`docs/design-timing-lens.md`](docs/design-timing-lens.md) §2 — six invariants; typed substrate in `src/v3/std/timing_lens.dag`).

### Lane acceptance — `.dag` gates

Expand Down
2 changes: 1 addition & 1 deletion docs/r3-program-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ This principle is NOT a separate lane; it's a per-lane gate-shape requirement ap
| 52 | `cross_target_optimization_cost_structurally_derived` | structural-fold | T-Free-Consequences-Demonstration | **PASSING** (PR #2578 — structural cost receipt landed 2026-05-10) | cost-lens reading structurally derived |
| 53 | `workflow_substrate_carriers_landed` | substrate-shape | T-Workflow-As-Data | **CONSUMER_LANDED (partial)** (PR #2160 — WorkflowSecret + CronExpression β-ratified; refresh per cluster-analysis audit §1; remaining sub-carriers tracked in T-WAD slice queue) | `std.workflow` carriers |
| 54 | `timing_lens_carrier_landed` | substrate-shape | T-Workflow-As-Data | **CONSUMER_LANDED** (PR #2360 — Substrate T-Workflow-As-Data timing-lens carrier post-T-LBP COMPLETE) | `Lens<TimingMeasurement>` carrier |
| 55 | `shared_external_attachment_pattern_documented` | substrate-shape | T-Workflow-As-Data | DECLARED | `WorkflowObservationAnchor` + 6 invariants |
| 55 | `shared_external_attachment_pattern_documented` | substrate-shape | T-Workflow-As-Data | **CONSUMER_LANDED** — pattern + six invariants in [`docs/design-timing-lens.md`](design-timing-lens.md) §2; typed `WorkflowObservationAnchor` / `TimingObservationEntry` in `src/v3/std/timing_lens.dag`; branded provenance nominals in `dsl/std/types.dag`; bootstrap ratchet `timing_lens_substrate_carrier_test.rs` (gate #55 inv.1–4 + §2.6 validate wiring) | `WorkflowObservationAnchor` + 6 invariants documented + typed |
| 56 | `ci_workflow_modeled_as_dag` | demonstration | T-Workflow-As-Data | DECLARED | at least one workflow as `.dag` data |
| 57 | `lens_self_application_demonstrated` | demonstration | T-Lens-Self-Application | DECLARED | gunbc lenses applied to gunbc CI workflow |
| 58 | `apply_lens_self_application_demonstrated` | demonstration | T-Lens-Self-Application | DECLARED | `apply_lens(timing, ci_workflow, Enforce)` |
Expand Down
6 changes: 3 additions & 3 deletions docs/r3-structure.md
Original file line number Diff line number Diff line change
Expand Up @@ -166,12 +166,12 @@ L6 (`l6_structural_form_coverage`) was moved out of this lane during the engine-

- **T-Workflow-As-Data** (NEW 2026-05-04; observation-driven lens-shape class).
- `workflow_substrate_carriers_landed` — workflow grammar in `.dag` (`std.workflow` carriers); supports CI / build / internal-compiler workflows uniformly without per-shape special-casing
- `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 | Missing | Ambiguous | Stale` (fail-closed enforcement on non-observed states per `feedback_fail_closed_discipline`)
- `shared_external_attachment_pattern_documented` — `WorkflowObservationAnchor` factored separately from timing as reusable external-data attachment primitive (serves coverage / logs / failures / artifacts beyond timing); pattern documented in design-timing-lens doc with six invariants (stable subject identity not span; observed-artifact identity/digest; producer/observer/prover identity; attachment timestamp + run id; stale/ambiguous/missing/observed 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)
- `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)
- **T-Lens-Self-Application** (NEW 2026-05-04; demonstrates recursive-flex thesis claim).
- `lens_self_application_demonstrated` — gunbc lenses (cost / complexity / parallelism / timing) applied to gunbc's own build/CI workflow (modeled as `.dag` data per T-Workflow-As-Data); produces `DimensionReport<C>` for each lens; demonstrates that the same lens framework users get also validates the workflow that produces gunbc itself
- `apply_lens_self_application_demonstrated` — `apply_lens(timing, ci_workflow, Enforce { budget: max_ns })` enforced via existing `EnforcedApplication<Output, Budget>` carrier (per T-Lens-Application-Surface §2 + §3.2); fail-closed when observation reports `Missing | Ambiguous | Stale` per timing-lens design; demonstrates that user-authored apply_lens substrate generalizes to project-self-validation use case
- `apply_lens_self_application_demonstrated` — `apply_lens(timing, ci_workflow, Enforce { budget: max_ns })` enforced via existing `EnforcedApplication<Output, Budget>` carrier (per T-Lens-Application-Surface §2 + §3.2); fail-closed when observation reports `Unobserved | Ambiguous | Stale` per timing-lens design; demonstrates that user-authored apply_lens substrate generalizes to project-self-validation use case
- `recursive_flex_demonstration_landed` — narrative-load-bearing thesis claim cashes in worked instance: *"the compiler that compiles gunbc programs validates the workflow that produces gunbc itself."* Compiler-people read this as the categorical move that the lens framework isn't just for user code — it applies recursively to gunbc's own runtime behavior. Either emit-back-to-CI-YAML (bidirectional case via T-Workflow-As-Data) OR direct execution. <1 min CI target tracked as informational SLO; **not a closure gate** (per Director ratification 2026-05-04 — performance metric, not structural commitment)
- **Substrate-gap-class closure** (NEW 2026-05-06; per Brian directive at [gunbc#846](https://github.com/gunb-ai/gunbc/issues/846); closure-criteria over existing lane work, NOT new separate lanes — added without expanding R3 lane count). Five class-level closure gates each closing when **both** (per [`docs/r3-program-plan.md`](r3-program-plan.md) §1.4 conjunctive predicate; Director poke-hole 2026-05-06 finding 1.3 + openai-pro 2026-05-06 finding 2.2): **(a)** representative gap-test executes through v3 cleanly per Pass condition AND **(b)** systematic enumeration of class-bridges shows count = 0 (or any survivors carry explicit Director allocation per `docs/audit/r3-debt-sweep-2026-05-06.md` §3.A STRUCTURAL exception). Single-test-pass alone is sample-of-class, NOT closure-of-class; conjunctive predicate prevents class reading "GREEN" while real bridges in that class persist unexercised by the chosen representative. Per [`docs/r3-program-plan.md`](r3-program-plan.md) §1.4 + §4.
- `substrate_gap_parser_grammar_closed` — v3 substrate models concrete types as the **interaction of independent constraint models** — abstract algebra × machine constraints — with concrete types emerging as consequences (per Brian directive 2026-05-06 at [gunbc#846 inline](https://github.com/gunb-ai/gunbc/pull/1808): *"these concepts should be the interaction of several constraint models i.e. abstract algebra × machine constraints — i64 would naturally emerge as a consequence"*). Refinement syntax `Type<N>` expresses the interaction, NOT a primary entity. Substrate declares abstract algebra (e.g., `Int` as canonical AbelianGroup carrier — design selection pending Option A canonical-primitive vs Option B `GroupCompletion<CommutativeMonoid<Nat>>`; prior `Int = AbelianGroup<Nat>` shorthand was structurally false per P1 axiom paydown 2026-05-06, see [gunbc#1739 issuecomment-4385432940](https://github.com/gunb-ai/gunbc/issues/1739#issuecomment-4385432940)) and machine constraints (e.g., `MachineWidth<bits>`) as **independent** models; concrete types emerge via interaction (e.g., `Int<64>` = `Int × MachineWidth<64>`; target-language `i64` is derived artifact, not primary substrate entity). **Pass condition: concept faithfully modeled** (per Q-MachineConstraint sub-decision 5, Brian directive 2026-05-06: *"3 is not a target, we shouldn't be 'targeting' modeling, we are just doing our best job to faithfully represent the concepts"*) — substrate carries algebra and machine-constraint as independent composing axes with `.dag`-generated interaction substrate (no hand-maintained Rust mirrors); concrete types emerge as derived consequences via parser handling of generic `Compose<...>` interaction syntax. **Minimum existence-proof evidence** (not closure target): 3 algebra×constraint pairs (`Int<64>` / `Real<64>` / `Nat<8>`) lower through stage0 emission without v2-fallback; emitted artifact compiles to expected target primitive (`i64` / `f64` / `u8`) where target primitive is consequence-of-interaction. Closes via T-V2-Retirement parser path + T-Numeric-Construction (algebra side) + Substrate continuation (machine-constraint side; may require new `MachineConstraint<C>` substrate carrier)
Expand Down
Loading