Skip to content

Finish ci_runner.dag as the one-binary CI floor + collapse ci.yml shim (LOAD-BEARING; design-sign-first; AWAIT full mandate message from zesty-swift-79 before acting) - #4960

Merged
briansrls merged 43 commits into
mainfrom
ci-runner-one-binary-floor
Jun 15, 2026

Conversation

@briansrls

@briansrls briansrls commented Jun 15, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Part (1) Logging: ci_runner.dag emits modeled GHA LogAnnotations (AnnotationGroup/EndGroup, AnnotationNotice on pass, AnnotationError on fail) via extdeps/github/log_annotations.dag — no raw echo [PASS]/[FAIL].
  • Part (2) Floor model (v2): Four blocking gates — dsl-compile-clean (full-tree v2 parse minus enumerated allowlist), fmt, affected-tests (AffectedTestsGate fail-safe superset battery), ci-floor-parity (DagParityGate). Demote spine dissolved from ci.dag; former demoted jobs run inside gate-3.
  • Part (3) Shim collapse: .github/workflows/ci.yml → infra_isolation + single ci job running gunbc run --source-root dsl --function run_ci_pipeline.

Gate-1 allowlist (by-execution, post file-level folds)

231 dsl files; 2 v2-parser-debt entries remain after folding:

  • todo_service.dag: let → data (file-level)
  • schedule_model.dag: if/then/else → match (file-level)

Grandfathered (dsl/gunbc/parse_allowlist.dag):

  • dsl/gunbc/ci_emission.dag — record-literal Workflow body
  • dsl/std/unicode.dag — fn expression body (= match)

Transport: scripts/v2-dsl-full-tree-parse-gate.sh (shrink-only ratchet).

Notes

  • Gate-3 runs fail-safe superset (scripts/v4-affected-tests-gate.sh) until diff-scoped dispatch lands in the one-binary runner.
  • Branch protection must move to job id ci (+ infra_isolation).

Test plan

  • cargo test -p ci_workflow_ratchet (17/18; workflow_no_path_regex_policy_ci_yml needs git repo cwd)
  • bash scripts/v2-dsl-full-tree-parse-gate.sh → PASS (2 allowlisted files)
  • Local gunbc run … run_ci_pipeline emits ::group:: / ::notice:: / ::error:: wire lines
  • CI on self-hosted fleet after branch protection update

@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review June 15, 2026 16:09
@gunbai-bot
gunbai-bot Bot marked this pull request as draft June 15, 2026 16:10
briansrls added a commit that referenced this pull request Jun 15, 2026
…loor

CI dissolution (#4960, ci-runner-one-binary-floor) collapses ci.yml to one
job running ci_runner.dag; the v4_lens_ci job this step lived in is going
away. Per sunny-crab-863's coordination, drop the raw workflow step here and
re-home the time-affine keystone into the gate-3 AffectedTestsGate battery
(scripts/v4-affected-tests-gate.sh, after the probe-selector keystone) once
#4960 lands. This PR now touches scripts/ + dsl/ only -- zero ci.yml
collision regardless of merge order. The gate script + witnesses are kept;
the one wiring line follows on rebase atop #4960.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@briansrls
briansrls marked this pull request as ready for review June 15, 2026 18:58
briansrls added a commit that referenced this pull request Jun 15, 2026
The M1.c witness is kernel-side and fixtures-only; the v4_lens_ci_perturb
20->30m timeout bump + budget-table edits do not belong here. ci.yml is being
collapsed by #4960 (which deletes v4_lens_ci_perturb), so a timeout patch there
collides with the dissolution. The underlying ~169s resolve cost of
affected_set_ci_runner.dag is routed to sunny-crab-863 for the one-binary floor
gate-3 budget. This PR now touches only the witness .dag.

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

gunbai-bot Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

ci: reopen to re-trigger workflow (stays draft)

@gunbai-bot gunbai-bot Bot closed this Jun 15, 2026
@gunbai-bot gunbai-bot Bot reopened this Jun 15, 2026
@gunbai-bot
gunbai-bot Bot marked this pull request as draft June 15, 2026 20:32
@gunbai-bot gunbai-bot Bot mentioned this pull request Jun 15, 2026
6 tasks
briansrls and others added 17 commits June 15, 2026 21:07
…line)

Replace ~17 parallel jobs with a thin workflow: runner-isolation guard,
checkout/toolchain/cache, and a single gunbc run of run_ci_pipeline.
Gate membership and GHA log annotations remain in dsl/gunbc/{ci,ci_runner}.dag.

Co-authored-by: Cursor <cursoragent@cursor.com>
Apply zesty design feedback: gate-1 full-tree parse minus enumerated
allowlist (2 v2-parser-debt files after folding todo_service +
schedule_model), gate-3 AffectedTestsGate superset battery, gate-4
blocking DagParityGate; dissolve demote spine from ci.dag.

Co-authored-by: Cursor <cursoragent@cursor.com>
gunbc run without --entry indexes all 232 dsl modules and fails on
allowlisted v2-parser-debt files before any gate runs. CI shim now passes
--entry dsl/gunbc/tools/ci_runner.dag; gate-1 still enforces full-tree
parse via v2-dsl-full-tree-parse-gate.sh.

Co-authored-by: Cursor <cursoragent@cursor.com>
Operator bankruptcy (msg_684c8383): floor is exactly
dsl-compile-clean → fmt → affected-tests. No emit-determinism
4th gate, no reach-proof, no ci_floor freshness/emit preservation.

Co-authored-by: Cursor <cursoragent@cursor.com>
Add scripts/ci-floor-witnesses.sh (gate-1/3/overall RED demos) as a
post-pipeline step in the one-binary ci job so design-sign evidence runs
by-execution in live CI, not local-only.

Co-authored-by: Cursor <cursoragent@cursor.com>
Add scripts/ci-floor-witnesses.sh for gate-1/gate-3/overall +/- witnesses.
Ratchet tests pin 3-gate topology (DslCompileClean, Fmt, AffectedTests).

Co-authored-by: Cursor <cursoragent@cursor.com>
Witness script now supports the ci.yml RED-demo invocation; fixes CI
failure from unknown mode after witness wiring.

Co-authored-by: Cursor <cursoragent@cursor.com>
Include gate-3 perturb-check in the hermetic witness step so collapsed
CI exercises gate-1, gate-3, and overall floor RED assertions.

Co-authored-by: Cursor <cursoragent@cursor.com>
Login shells (sh -lc) reset PATH on self-hosted runners, causing all
floor gate scripts to fail instantly. Also improve witness RED log lines
(PLANTED/OBSERVED/DETECTED) for design-sign log review.

Co-authored-by: Cursor <cursoragent@cursor.com>
gunbc shell.Exec buffers all subprocess stdout/stderr in memory.
Gate-3 runs ~30+ minutes with heavy output; on arm64 CI this likely
OOM-killed the step after ~23m with no useful log. Redirect to
RUNNER_TEMP log and tail last 120 lines; print tail on gate failure.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
infra_isolation de-priv guard removed per operator. sccache server bring-up
will be modeled fail-closed inside the floor binary (next commit); the shim
keeps only CARGO_HOME/RUSTUP_HOME/CARGO_BUILD_JOBS isolation, which must precede
the GHA Setup-Rust/Cache-Cargo steps.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
briansrls and others added 3 commits June 15, 2026 21:57
…nto vendor-agnostic CpuFacts

std/cpu owned a one-vendor SKU enum (AmpereCpuModel) and dispatched cpu_catalog_row
on it — std (a standard library) enumerating one vendor's parts is a purchase order,
not a concept. Path is the discriminator: vendor hardware is an external dependency.

- dsl/std/cpu/ampere.dag -> dsl/extdeps/cpu/ampere.dag (Altra rows as CpuModelCatalogRow
  values carrying the new vendor field; imports the catalog SHAPE from std.cpu).
- std/cpu/types.dag: dissolve AmpereCpuModel + CpuIdentity; CpuModelCatalogRow gains
  vendor: CpuVendor; CpuFacts now { catalog, deployment } (identity-by-part).
- std/cpu.dag: drop cpu_catalog_row SKU dispatch; cpu_vendor / cpu_facts_* project
  straight off cpu.catalog.*. std/cpu is the general CPU concept only.
- integration.rs parser smoke + placement_supply doc-comment repointed.

scratch.txt items 3/4/5. gate-1 full-tree parse PASS.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…stances -> ctrl)

The concrete srv1/srv2 DIMM populations are the operator's deployment, not a gunbc
standard-library fact — re-homed to ctrl plans/models/fabric/operator_fleet.dag
alongside the srv1/srv2/Hetzner ComputeOffers (item 6). No .dag consumed the file;
only a Rust parser-smoke include_str + two doc-comments referenced it.

std/memory keeps the DRAM taxonomy (types) + the SK Hynix catalog DISPATCH — note
that SK Hynix vendor DATA in std/memory/sk_hynix.dag is the same misplacement smell
as the now-moved cpu/ampere (scratch item 10), tracked separately.

scratch.txt items 2 + 6 (gunbc leg). gate-1 full-tree parse PASS.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jun 15, 2026
…frozen)

Revert ci.yml (queue:max, v4_lens_gate 45m), compute_fabric.dag, and
check_ci_timeout_budgets.py to main. CI-infra belongs to CI-floor lane
(#4960/#4997); not pushed until #4997 lands + clean window per zesty.

Keeps: walkthrough, program.dag M1a header, program_runs corpus enrollment.
Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls and others added 2 commits June 15, 2026 22:17
…ot a std primitive)

std/ is a standard library of universal primitives; the compute fabric is a
supply/demand/placement MARKET — a domain/product model. It imports std/ only and
sits as a product peer alongside the existing non-core trees (gunbc/, demos/, ctrl/),
so this does NOT alter the INVARIANTS §P2 core DAG (std->extdeps->compiler->workflow).

- dsl/std/compute_fabric.dag -> dsl/product/compute_fabric.dag; module std.compute_fabric
  -> product.compute_fabric.
- Functional blast radius was one real import (probe_selector repro witness) + one Rust
  include_str parser-smoke; both repointed. All other references were comments, updated
  for coherence (skipped crisp-bear-37's in-flight corpus file + dated docs/planning notes).

scratch.txt item 7. gate-1 full-tree parse PASS.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ose CpuSocket string

Two modeling smells from the audit (scratch items 10, 11):

item 10 (mirror of the cpu/ampere dissolution): SK Hynix vendor catalog was baked
into std/, with std.memory dispatching on an owned-SKU enum.
- dsl/std/memory/sk_hynix.dag -> dsl/extdeps/memory/sk_hynix.dag (rows as
  DramModuleCatalogRow values; vendor data is an external dependency).
- Dissolve DramModuleIdentity + SkHynixDdr4Module SKU enums and the
  std.memory.dram_module_catalog_row dispatch. MemoryPopulationRow now carries
   directly; std/memory imports no vendor catalog.

item 11 (stringly atom): socket: "LGA4926" decomposed into a grounded type.
- New std.cpu.types CpuSocket { package: SocketPackage, contact_count: Int };
  SocketPackage = LandGridArray | PinGridArray | BallGridArray. LGA = Land Grid
  Array, 4926 = land/contact count — the trailing number is now a grounded Int,
  not an opaque token. Anchor cited (Wikipedia CPU socket).
- extdeps/cpu/ampere rows construct CpuSocket { package: LandGridArray, contact_count: 4926 }.

integration.rs parser-smoke repointed (sk_hynix). gate-1 full-tree parse PASS.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jun 15, 2026
The M1.c witness is kernel-side and fixtures-only; the v4_lens_ci_perturb
20->30m timeout bump + budget-table edits do not belong here. ci.yml is being
collapsed by #4960 (which deletes v4_lens_ci_perturb), so a timeout patch there
collides with the dissolution. The underlying ~169s resolve cost of
affected_set_ci_runner.dag is routed to sunny-crab-863 for the one-binary floor
gate-3 budget. This PR now touches only the witness .dag.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
briansrls and others added 3 commits June 15, 2026 22:41
…floor

# Conflicts:
#	.github/workflows/ci.yml
#	dsl/product/compute_fabric.dag
…endor closed-enum-in-std)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…gn pass

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review June 15, 2026 22:52
briansrls and others added 2 commits June 15, 2026 23:04
…verer gap) + item 14 (CI gates are bash scripts; same root cause)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jun 15, 2026
The M1.c witness is kernel-side and fixtures-only; the v4_lens_ci_perturb
20->30m timeout bump + budget-table edits do not belong here. ci.yml is being
collapsed by #4960 (which deletes v4_lens_ci_perturb), so a timeout patch there
collides with the dissolution. The underlying ~169s resolve cost of
affected_set_ci_runner.dag is routed to sunny-crab-863 for the one-binary floor
gate-3 budget. This PR now touches only the witness .dag.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@briansrls
briansrls merged commit 87ae7c4 into main Jun 15, 2026
1 check failed
@briansrls
briansrls deleted the ci-runner-one-binary-floor branch June 15, 2026 23:18
briansrls added a commit that referenced this pull request Jun 15, 2026
Stack modeled ci_base_build_graph pre-warm onto merged one-binary floor
(#4960): runs after sccache_upsert_preflight, before gate fan-out.
Re-homes gate-3 consumers (doc_refs, timeout_budgets, bootstrap ratchets),
threads SourceRoot/allowlist authority, and fixes log annotation rendering.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jun 15, 2026
Drop carried CI-infra commits (sccache EAGAIN, perturb timeout, concurrency
comment) that collided with #4960 ci.yml collapse; OCI enrollment only.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jun 15, 2026
…eipts (#4978)

Apply budget-script ceilings only (no ci.yml touch post-#4960 collapse).

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jun 15, 2026
#4960 ci.yml has only the `ci` job; remove infra_isolation from the
timeout budget table so gate-3 check passes. Apply cargo fmt to ratchet test.

Co-authored-by: Cursor <cursoragent@cursor.com>
gunbai-bot Bot pushed a commit that referenced this pull request Jun 25, 2026
…abric.dag, dsl/std/cpu/types.dag)

These files do not exist in origin/main (compute_fabric moved to dsl/product/ in #4960;
cpu/types.dag later dissolved). They were swept into this branch by a previous auto-commit
that captured unmerged index state. Removing them keeps the PR diff scoped to wiring-liveness
changes only.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.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.

1 participant