Skip to content

Migrate CI generation to DSL-driven architecture (CG-4) - #90

Closed
briansrls wants to merge 1 commit into
mainfrom
claude/blue-team-tasks-2BERN
Closed

briansrls wants to merge 1 commit into
mainfrom
claude/blue-team-tasks-2BERN

Conversation

@briansrls

Copy link
Copy Markdown
Contributor

Summary

Refactor CI workflow generation from Rust-based template rendering to a pure DSL-driven approach. The cmd_cigen() function now builds and executes a tools/cigen.dag DSL graph instead of directly generating YAML strings in Rust. This aligns with the broader goal of moving codegen logic into the DAG language.

Key Changes

  • Removed Rust-based CI rendering: Deleted ~260 lines of template generation code (generate_github_actions_template, generate_gitlab_ci_template, validation functions, and related helpers) from codegen_cli.rs.

  • Added DSL CI model and rendering: Created two new DSL modules:

    • dsl/std/ci.dag: Type definitions for CI primitives (CiStepKind, CiPermissionLevel, CiProvider) and composition (CiWorkflow, CiConfig)
    • dsl/std/ci_render.dag: Pure rendering functions that convert CiConfig into GitHub Actions and GitLab CI YAML strings
  • Added DSL entry point: Created dsl/tools/cigen.dag that orchestrates CI generation:

    • Calls discover_ci_config() extern function to gather permissions, secrets, env, runner, and tool command from Rust
    • Renders both GitHub and GitLab YAML via pure DSL functions
    • Uses content_upsert pattern to write files with change detection
  • Implemented extern bridge: Added DiscoverCiConfigOp in extern_impls.rs that builds a CiConfig record from existing Rust CI configuration sources (ci_workflow_permissions(), ci_live_test_secrets(), CargoEnv::ci(), etc.).

  • Updated tests:

    • Removed 5 unit tests that validated Rust template generation
    • Added single integration test verifying DSL graph compiles successfully
    • Updated extern symbol baseline and DSL file inventory
  • Fixed cross-module service call cloning: Added regression test and fix in daglang-lower to ensure multiple modules calling the same service operation each get their own cloned transport triplet (_c1, _c2, etc.) instead of sharing edges.

Implementation Details

  • The DSL rendering functions follow the makegen.dag pattern: small composable functions using |> map and |> join("\n") for YAML construction
  • No general YAML serializer; indentation is handled via string literals
  • Execution mode (dry-run vs. real) is passed through to the DSL executor
  • Output status (written/unchanged/dry-run) is extracted from the execution log
  • All CI configuration discovery remains in Rust; only rendering moves to DSL

https://claude.ai/code/session_01RJhmcvqFXK4YDb5zbfaixE

…tion cleanup

BT-E1: Fix cross-module transport node deduplication by moving
endpoint_use_count outside the per-module loop in add_service_call_edges.
Previously, two modules calling the same service operation would both wire
to the shared prepare node, causing "multiple upstream edges" at execution.

CG-1: Add dsl/std/ci.dag — CI model types (CiWorkflow, CiJob, CiStep,
CiConfig, CiPermission, CiCache, CiEnv, CiProvider sum type, data
declarations for shared configs).

CG-2: Add dsl/std/ci_render.dag — pure DSL rendering functions for
GitHub Actions and GitLab CI YAML (render_github_workflow,
render_gitlab_ci, helpers for triggers, permissions, env, cache).

CG-3: Add dsl/tools/cigen.dag — cigen tool entrypoint with
discover_ci_config extern func + Rust bridge in extern_impls.rs.

CG-4: Rewrite cmd_cigen to use DSL tool execution. Delete ~200 lines of
Rust template generation (generate_github_actions_template,
generate_gitlab_ci_template, validate_* functions, CiTemplateKind enum).

CT-4: Mark as done — annotation infrastructure already removed when
compiler switched to typed syntax (commit ba1ce0b).

https://claude.ai/code/session_01RJhmcvqFXK4YDb5zbfaixE

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2e1ea2d67f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread dsl/std/ci_render.dag
}

fn render_gitlab_cache() -> String {
"cache:\n key: cargo-${{CI_COMMIT_REF_SLUG}}\n paths:\n - .cargo/\n - target/"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Use GitLab variable syntax for cache key

render_gitlab_cache now emits cargo-${{CI_COMMIT_REF_SLUG}}, but GitLab cache keys use CI variable expansion like $CI_COMMIT_REF_SLUG/${CI_COMMIT_REF_SLUG} (the previous generator in this repo used ${CI_COMMIT_REF_SLUG}). With the current string, the branch slug is not interpolated correctly, so caches won’t partition per ref as intended and CI runs lose cache effectiveness.

Useful? React with 👍 / 👎.

Comment on lines +207 to +209
let permissions: Vec<Value> = ci_workflow_permissions()
.into_iter()
.map(|(scope, level)| {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve deterministic permission ordering

ci_workflow_permissions() is a HashMap-backed permission set, and this code iterates it directly into a list without sorting. Because the renderer preserves list order, GitHub permissions: entries can appear in different orders across runs, creating nondeterministic generated YAML churn. The old Rust path sorted permissions (RenderConfig::with_permissions), so this is a regression in generator determinism.

Useful? React with 👍 / 👎.

@briansrls briansrls closed this Feb 28, 2026
briansrls added a commit that referenced this pull request May 9, 2026
…B scope (codex BLOCKING round 1)

codex top-level BLOCKING on PR #2363 sha c3a4b11: 4 findings, 3 of which were new (Finding 2 already addressed at e54d880). Major C2 + C3 corrections:

**Finding 1 — C2 audit relied on grep names instead of locked design authority**:
Prior framing claimed 4c (caller-side effect-set pinning carrier) is NEW substrate-fact-introduction. Verified against locked design at docs/design-effect-enumeration-resource-threading.md §3.2 + §6.2: "The pinning substrate carrier ALREADY EXISTS at src/v3/std/services.dag::Operation. No new top-level carrier is required." §6.2: "Operation already exists. No new substrate type."

Carve doc's "4c is NEW substrate intro required" claim is stale relative to the more recent locked design. C2 is substrate-ready (atomic migration shape per §6.2), not substrate-cliff.

Fix: §2 major rewrite — replaced grep-based assessment with design-doc authority cite. C2 reclassified substrate-ready (same shape as C1). The earlier "(a) full carve-promotion vs (γ) stub" disposition is MOOT — there's no 4c canvas to author since the carrier already exists.

**Finding 3 — C3 readiness treated design sketch as landed substrate**:
Prior framing said "lens_application.dag exists" → "substrate-ready conditional on C1." Codex correct: Slice A landed (#88-#90 PR #2145) but Slice B (#91 per-lens LensEnforcement projection + violation routing) is pending per design §10 step 2.

Fix: §3 corrects scope. C3 cascade-gates on (a) T-LAS Slice B landing + (b) C1 parallelism lens BEHAVIORALLY COMPLETE. Both prerequisites named explicitly.

**Finding 4 — C3 scoped to opt-in parallelism worked example instead of shared lens-application surface lane**:
Prior framing treated #95 as separate carve. Per r3-structure.md:164: #95 is the "fourth worked example (design §4.4)" — a demonstration gate UNDER the T-Lens-Application-Surface lane. It's a worked-example demo, not a separate substrate carve.

Fix: §3 corrects scope alignment with r3-structure.md + design-lens-application-surface.md. #95 promotes as worked-example demo gate; substrate prerequisites (Slice B + C1) tracked in their respective lanes.

**Net audit revision**: all 3 carves substrate-ready (was: 2 ready + 1 cliff). No substrate-cliff in any carve. §0 + §4 + §5 + §6 updated to reflect.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 9, 2026
…odex BLOCKING round 2)

codex review on PR #2363 sha 32afcd3: 2 BLOCKING findings.

**BLOCKING #1 — non-live parent authorities**

Parent docs section listed `r3-pb0-velocity-walk-2026-05-09.md` as
authority but it's not on main (concurrent PR #2358). Codex's broader
"first two parent authority links absent" framing is a tree-visibility
false positive on r4-carve-out-routing.md + r3-program-plan.md (both
exist on main per `git ls-tree origin/main`), but the underlying
finding about authority-chain live-state grounding is valid.

Fix: split parent docs into "Parent docs (live state on main)" vs
"In-flight authorities" sections. On-main set: r4-carve-out-routing.md
+ r3-program-plan.md + r3-structure.md + design-effect-enumeration-
resource-threading.md + design-lens-application-surface.md (each
verified via git ls-tree on origin/main). In-flight: velocity-walk
(PR #2358) cited inline only for routing context — substrate state of
effects.dag + workflow_parallelism.rs is independently verifiable on
main without needing the velocity-walk authority.

**BLOCKING #2 — C3 imports PR/status claims instead of live state**

Prior §3.1 misidentified gate-number → carrier mapping:
- Cited "Slice A landed (#88-#90)" + "Slice B (#91 per-lens
  LensEnforcement projection + violation routing) NOT yet landed"
- Live ledger on main says #90 = lens_enforcement_carrier_landed
  (CONSUMER_LANDED Slice A; parametric carrier landed; per-lens
  data instances pending Slice B per #90 Pass condition); #91 =
  enforce_violation_routing_landed (DECLARED; substrate routing
  surface landed PR #2145; CONSUMER_LANDED requires fold-pass
  consumer per design §10 step 2 — deferred to Slice B)

Fix: replaced grep-based gate-status framing with live-ledger
reading table citing exact §1.8 row content from r3-program-plan.md
on main. What's actually pending for Slice B (per #90 + #91 Pass
conditions on main): per-lens data instances of LensEnforcement
co-located with each lens (parallelism specifically for #95) +
fold-pass consumer for #91 violation routing.

§3.2 Cascade-gating chain rewritten as 4-step ordering with substrate
prerequisite (carrier landing before #95) made explicit per codex
BLOCKING ratification.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 9, 2026
…dex BLOCKING round 3)

codex review on PR #2363 sha 54e4baf: BLOCKING — "Audit still imports
non-live PR/status claims as live authorities → replace the missing
parent docs with live repo authorities and rebase C3 on the current
T-LAS design/readiness docs with carrier landing as a prerequisite."

§3.1 live-ledger table (added at sha 54e4baf) correctly mapped gates
#88/#89/#90/#91 to live blob in src/v3/std/lens_application.dag, but
§0 summary table row C3 + §0 prerequisites bullet still used the
prior PR-status framing that misidentified #91 as
"per-lens LensEnforcement projection + violation routing" — that's
actually #90's Pass condition Slice B requirement (parametric
carrier landed Slice A; per-lens instances pending Slice B).

Fix: cascade §3.1's live-state mapping into §0:
- §0 row C3: cite live blob (`src/v3/std/lens_application.dag`,
  blob `968aa84a` per git ls-tree origin/main) + correct gate-to-Slice
  mapping + Slice B prereqs split (a) per-lens instance per #90 Pass
  condition; (b) fold-pass consumer for #91 violation routing per
  locked design §10 step 2
- §0 prerequisites bullet: same 3-prong split (a)+(b)+(c)
  parallelism BEHAVIORALLY COMPLETE; cross-ref to §3.1 table for
  live-state authority

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 9, 2026
…or-greenlit (α) carve-promotion-IN-R3) (#2363)

* docs(audit): R3 R4-carve substrate-readiness audit (C1/C2/C3) — Director-greenlit per (α) ratification

Per Director ratification at gunbc#846 #issuecomment-4412330468 (2026-05-09): RATIFIED PM (α) carve-promotion-IN-R3 recommendation per operator's 2026-05-09 framing "R3 close = 0 hand-Rust including tests AND stage0; bootstrap is data + self-generated."

Substrate-readiness audit findings:

**C1 #81 parallelism lens**: substrate-ready. effects.dag provides EffectShape/OperationEffect/CompositionVerdict; workflow_parallelism.rs imports map cleanly; port-and-rewire bounded (M-sized lane). RECOMMENDATION: full carve-promotion to R3.

**C2 #82 effect_enumeration lens**: MIXED. 4a/4b/4d bounded (consumer migration + cleanup); 4c (caller-side effect-set pinning carrier) is NEW P1 substrate-fact-introduction not landed at HEAD. RECOMMENDATION: Director disposition between (a) full carve-promotion with 4c canvas authoring in R3 (PM-recommended per strict-zero framing) OR (b) γ .dag-stub-form interim with 4c R4-carved.

**C3 #95 opt-in iteration parallelism via lens application**: substrate-ready conditional on C1. lens_application.dag exists; cascade-gated on C1 BEHAVIORALLY COMPLETE. RECOMMENDATION: full carve-promotion to R3 (cascade post-C1).

Cluster F sequencing folder: #81 + #82 + #95 fold into existing T-LP-Retirement (lens-producer-retirement structural framing). Sub-phase α (#81 port) + β (#82 per disposition) + γ (#95 demo cascade post-α).

Velocity-to-zero update: original 4-6 bulk events → 5-9 bulk events post-carve-promotion. Bounded substrate/cluster work per "staffing not concern."

Out-of-scope follow-ups: UNACCOUNTED entries in non-test census (Director's separate ask) — handled in Task 13 follow-up audit, not this artifact.

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

* fix(audit): §0 + §2.3 — P1 modeling-vs-process layers + decision-state scope clarification (openai-pro REQUEST_CHANGES)

openai-pro review on PR #2363 sha c3a4b11: 2 valid findings.

**Finding 1 — P1 substrate-fact-introduction procedure misrepresented**:
§2.3 line 87 cited "INVARIANTS.md P1 procedure" but listed 4 dispatch/process gates (confirmed bridge consumer / carrier shape ratification / worker brief authoring / substrate-introduction PR). The actual P1 procedure (INVARIANTS.md:94-129) is 3 modeling checks: DAG-ancestor / coproduct-vs-coordinate / primitive-vs-lens-extensible. Folding both into one "P1" label authorizes carve-promotion without proving the new carrier is the right substrate fact.

Fix: §2.3 now explicitly separates two layers — Layer 1 is the actual P1 modeling checks (cited with line references INVARIANTS.md:100-128); Layer 2 is dispatch/process gates. Layer 1 must surface in canvas authoring before carrier shape ratification; Layer 2 is the dispatch sequence. Both required.

**Finding 2 — Decision-state ambiguity (α ratified vs C2 disposition open)**:
Doc said audit is per Director (α) ratification but kept C2 as "Director disposition needed" — read as competing decision states. Cluster F dispatch couldn't tell whether (a) is ratified or γ-stub remains alternative.

Fix: §0 adds explicit scope clarification — (α) thesis (carves dissolve; #81/#82/#95 R3-load-bearing) is RATIFIED at thesis level; C2 #82 sub-disposition (a vs γ-stub) is finer-grain decision *within* (α) framework. Both paths satisfy operator strict-zero framing; they differ on R3 (path (a)) vs R4 (path (γ)) timing of #82's behavioral completion. Two scopes, no contradiction.

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

* fix(audit): C2/C3 substrate-readiness — design-doc authority + Slice B scope (codex BLOCKING round 1)

codex top-level BLOCKING on PR #2363 sha c3a4b11: 4 findings, 3 of which were new (Finding 2 already addressed at e54d880). Major C2 + C3 corrections:

**Finding 1 — C2 audit relied on grep names instead of locked design authority**:
Prior framing claimed 4c (caller-side effect-set pinning carrier) is NEW substrate-fact-introduction. Verified against locked design at docs/design-effect-enumeration-resource-threading.md §3.2 + §6.2: "The pinning substrate carrier ALREADY EXISTS at src/v3/std/services.dag::Operation. No new top-level carrier is required." §6.2: "Operation already exists. No new substrate type."

Carve doc's "4c is NEW substrate intro required" claim is stale relative to the more recent locked design. C2 is substrate-ready (atomic migration shape per §6.2), not substrate-cliff.

Fix: §2 major rewrite — replaced grep-based assessment with design-doc authority cite. C2 reclassified substrate-ready (same shape as C1). The earlier "(a) full carve-promotion vs (γ) stub" disposition is MOOT — there's no 4c canvas to author since the carrier already exists.

**Finding 3 — C3 readiness treated design sketch as landed substrate**:
Prior framing said "lens_application.dag exists" → "substrate-ready conditional on C1." Codex correct: Slice A landed (#88-#90 PR #2145) but Slice B (#91 per-lens LensEnforcement projection + violation routing) is pending per design §10 step 2.

Fix: §3 corrects scope. C3 cascade-gates on (a) T-LAS Slice B landing + (b) C1 parallelism lens BEHAVIORALLY COMPLETE. Both prerequisites named explicitly.

**Finding 4 — C3 scoped to opt-in parallelism worked example instead of shared lens-application surface lane**:
Prior framing treated #95 as separate carve. Per r3-structure.md:164: #95 is the "fourth worked example (design §4.4)" — a demonstration gate UNDER the T-Lens-Application-Surface lane. It's a worked-example demo, not a separate substrate carve.

Fix: §3 corrects scope alignment with r3-structure.md + design-lens-application-surface.md. #95 promotes as worked-example demo gate; substrate prerequisites (Slice B + C1) tracked in their respective lanes.

**Net audit revision**: all 3 carves substrate-ready (was: 2 ready + 1 cliff). No substrate-cliff in any carve. §0 + §4 + §5 + §6 updated to reflect.

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

* fix(audit): §3.1 C3 cascade — distinguish gate-level vs lane-level dependencies (codex BLOCKING)

codex inline BLOCKING @ docs/audit/r3-r4-carve-substrate-readiness-2026-05-09.md:112: prior cascade chain "C3 cascade-gates on parallelism lens BEHAVIORALLY COMPLETE" understated the lane-level dependency.

Per r3-structure.md:61: T-Lens-Application-Surface lane depends on T-Lens-Behavioral-Parity COMPLETE (all 4 in-R3 lenses: complexity #79 + cost #80 + parallelism #81 + effect_enum #82), not only C1.

Fix: §3.1 distinguishes:
- Lane-level (T-LAS Slice B substrate authoring complete): gates on full T-LBP COMPLETE.
- Gate-level (#95 specific demo): gates on parallelism-lens projection within Slice B + parallelism BEHAVIORALLY COMPLETE (C1).

Both dependencies named explicitly. The simplified "cascade-gates on Slice B + C1" framing was correct for #95-specific firing but understated the lane-level closure dependency.

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

* fix(audit): C3 §3.1 live-ledger reading + parent-doc on-main scope (codex BLOCKING round 2)

codex review on PR #2363 sha 32afcd3: 2 BLOCKING findings.

**BLOCKING #1 — non-live parent authorities**

Parent docs section listed `r3-pb0-velocity-walk-2026-05-09.md` as
authority but it's not on main (concurrent PR #2358). Codex's broader
"first two parent authority links absent" framing is a tree-visibility
false positive on r4-carve-out-routing.md + r3-program-plan.md (both
exist on main per `git ls-tree origin/main`), but the underlying
finding about authority-chain live-state grounding is valid.

Fix: split parent docs into "Parent docs (live state on main)" vs
"In-flight authorities" sections. On-main set: r4-carve-out-routing.md
+ r3-program-plan.md + r3-structure.md + design-effect-enumeration-
resource-threading.md + design-lens-application-surface.md (each
verified via git ls-tree on origin/main). In-flight: velocity-walk
(PR #2358) cited inline only for routing context — substrate state of
effects.dag + workflow_parallelism.rs is independently verifiable on
main without needing the velocity-walk authority.

**BLOCKING #2 — C3 imports PR/status claims instead of live state**

Prior §3.1 misidentified gate-number → carrier mapping:
- Cited "Slice A landed (#88-#90)" + "Slice B (#91 per-lens
  LensEnforcement projection + violation routing) NOT yet landed"
- Live ledger on main says #90 = lens_enforcement_carrier_landed
  (CONSUMER_LANDED Slice A; parametric carrier landed; per-lens
  data instances pending Slice B per #90 Pass condition); #91 =
  enforce_violation_routing_landed (DECLARED; substrate routing
  surface landed PR #2145; CONSUMER_LANDED requires fold-pass
  consumer per design §10 step 2 — deferred to Slice B)

Fix: replaced grep-based gate-status framing with live-ledger
reading table citing exact §1.8 row content from r3-program-plan.md
on main. What's actually pending for Slice B (per #90 + #91 Pass
conditions on main): per-lens data instances of LensEnforcement
co-located with each lens (parallelism specifically for #95) +
fold-pass consumer for #91 violation routing.

§3.2 Cascade-gating chain rewritten as 4-step ordering with substrate
prerequisite (carrier landing before #95) made explicit per codex
BLOCKING ratification.

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

* fix(audit): §0 C3 + §0 prerequisites — live-state mapping cascade (codex BLOCKING round 3)

codex review on PR #2363 sha 54e4baf: BLOCKING — "Audit still imports
non-live PR/status claims as live authorities → replace the missing
parent docs with live repo authorities and rebase C3 on the current
T-LAS design/readiness docs with carrier landing as a prerequisite."

§3.1 live-ledger table (added at sha 54e4baf) correctly mapped gates
#88/#89/#90/#91 to live blob in src/v3/std/lens_application.dag, but
§0 summary table row C3 + §0 prerequisites bullet still used the
prior PR-status framing that misidentified #91 as
"per-lens LensEnforcement projection + violation routing" — that's
actually #90's Pass condition Slice B requirement (parametric
carrier landed Slice A; per-lens instances pending Slice B).

Fix: cascade §3.1's live-state mapping into §0:
- §0 row C3: cite live blob (`src/v3/std/lens_application.dag`,
  blob `968aa84a` per git ls-tree origin/main) + correct gate-to-Slice
  mapping + Slice B prereqs split (a) per-lens instance per #90 Pass
  condition; (b) fold-pass consumer for #91 violation routing per
  locked design §10 step 2
- §0 prerequisites bullet: same 3-prong split (a)+(b)+(c)
  parallelism BEHAVIORALLY COMPLETE; cross-ref to §3.1 table for
  live-state authority

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

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request May 14, 2026
briansrls added a commit that referenced this pull request May 14, 2026
- Gate #90 integration test: assert timing LAS bundles via full bootstrap;
  compile complexity.dag and cost.dag standalone (lenses are outside std concat).
- Refresh bootstrap snapshots after removing stale parallelism LAS manifest refs.
- Allow clippy::eq_op on lens_cost_symbolic generated wrapper (regen emits 0==0).
- R3 program plan row #90: document test harness split.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 14, 2026
…ace) (#3125)

* test(T-LAS): CI ratchet for §1.8 gate #88 lens application carriers

- Integration tests lock EnforcedApplication (3 typarams, 5 fields) and
  IntrospectApplication (1 typaram, 3 fields) on generated_full_bootstrap_dag
- SG-0: register new hand-authored test module (sorted after t_las_*)
- r3-program-plan: note harness on row #88; align row #90 with Projected

PR checklist (census net +1): include in PR body verbatim:
SG-0 hand-path delta: +1
SG-0 pairing: (c) substrate dispatch receipts docs/briefs/r3-substrate-t-las-demo-complexity-contract-compile-error-worker.md

Co-authored-by: Cursor <cursoragent@cursor.com>

* ci: prepend SG-0 PR-body pairing for census +1 (#3125)

PR #3125 edits sg0_census_test.rs (+1 EXPECTED_HAND_AUTHORED_TEST) but the GitHub PR
description lacked required SG-0 hand-path delta + pairing, failing the CI job.
ci.yml merges scripts/ci-merge/sg0-pr-body-append.<n>.txt before the discipline gate.

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs(INVARIANTS): P5 receipt for t_lens_application_carrier_test (gate #88)

Register the new EXPECTED_HAND_AUTHORED_TEST path in §SG-0 hand-authored
integration test receipts per Dispatch-Discipline Mechanism (b).

Co-authored-by: Cursor <cursoragent@cursor.com>

* ci: align SG-0 pairing #3125 brief with Slice A gates #88–#91

Pairing cited gate #92 demo brief; executor brief r3-v-t-lens-application-surface-
execution-split-worker.md owns §1.8 gates #88–#91 incl. lens_application_carrier_landed.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 14, 2026
Pair EXPECTED_HAND_AUTHORED_TEST path r3_gate_90_lens_enforcement_carrier_landed_test.rs
with dissolution/interim ratchet text per Dispatch-Discipline Mechanism (b); addresses
cursor/composer-2 REQUEST_CHANGES on PR #3129.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 14, 2026
briansrls added a commit that referenced this pull request May 14, 2026
briansrls added a commit that referenced this pull request May 14, 2026
…ANTS rows)

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request May 14, 2026
…ace) (#3129)

* WIP: R3 gate #90: lens_enforcement_carrier_landed (T-Lens-Application-Surface

* WIP: R3 gate #90: lens_enforcement_carrier_landed (T-Lens-Application-Surface

* fix(gate-90): lens enforcement receipt + bootstrap refresh

- Gate #90 integration test: assert timing LAS bundles via full bootstrap;
  compile complexity.dag and cost.dag standalone (lenses are outside std concat).
- Refresh bootstrap snapshots after removing stale parallelism LAS manifest refs.
- Allow clippy::eq_op on lens_cost_symbolic generated wrapper (regen emits 0==0).
- R3 program plan row #90: document test harness split.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(ci): L-8 + SG-0 for symbolic-cost lens (PR #3129)

- Rename regen output `lens_cost_symbolic_generated.rs` → `cost_symbolic_lens_generated.rs`
  so L-8 (pub fn → bool on lens_*.rs) no longer flags emitted LAS helpers.
- Sync regen.dag, build.rs REGEN_OUTPUTS, lib.rs include!, SG6/PB census paths,
  lens capability register, and bootstrap snapshots (`regen_bootstrap` + `regen_lens cost_symbolic`).
- Add `scripts/ci-merge/sg0-pr-body-append.3129.txt` (+1 hand-authored TEST census pairing).

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs(INVARIANTS): P5 SG-0 receipt row for gate #90 integration harness

Pair EXPECTED_HAND_AUTHORED_TEST path r3_gate_90_lens_enforcement_carrier_landed_test.rs
with dissolution/interim ratchet text per Dispatch-Discipline Mechanism (b); addresses
cursor/composer-2 REQUEST_CHANGES on PR #3129.

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: R3 gate #90: lens_enforcement_carrier_landed (T-Lens-Application-Surface

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
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.

2 participants