Skip to content

Remove rust_tests job from CI (free a runner slot; drop the 37 GiB job) - #6466

Merged
briansrls merged 22 commits into
mainfrom
session/merry-owl-649
Jul 11, 2026
Merged

briansrls merged 22 commits into
mainfrom
session/merry-owl-649

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

What

Removes the rust_tests CI job entirely (operator directive: free runner capacity). The v1 fmt+nextest gate was non-required and red on main (it tests the v1 seed, which is being deleted per §7), and at ~37 GiB it was CI's single largest memory job — so removing it frees a runner slot and the fleet's biggest memory consumer. Formatting stays enforced by the pre-push cargo fmt hook.

Done as a complete removal, not a half-measure: rather than leave orphaned coproduct variants (which a completeness witness would flag red — the tolerated-red anti-pattern), the removal is clean through the model.

Changes

  • ci.yml: rust_tests job gone (−107 lines); regenerated via main_wet, drift-clean. CI is now ci + ci_regen.
  • Gate / surface coproducts: removed the now-orphan RustMonolithGate gate and GithubActionsRustTestsJob surface variants and every match arm (ci_gate, ci_floor_plan, merge_admission, floor_materialization, commit_workflow), the roster enrollment + projection, and the dead gate-runner wrappers (ci_gates, floor_effect_gate_witness).
  • Materialization: re-homed the fresh-effect cgroup-measurement from the retired rust_tests step to the ci-job floor peak reads; bumped the step-count pins (uses 9→6, run-natures 20→14) and the placement-grain duplicate-computation flagship to the surviving 2 sibling jobs (still >1, still discharged by sccache).
  • Witnesses: updated realization-binding count (3→2) and a drive-by fix of a pre-existing stale golden (affected set processing #6453 added floor_skip_discovery_witness to the build-verify list but left this unenrolled witness's golden stale).

Also includes docs/plans/space-lens-minimal-project.md (a plan doc already on this branch).

Verification (green by execution)

main_wet regen passes (proves the coproduct removal resolves in the emit closure). Ran the affected witnesses locally: ci_spec_witnesses, commit_workflow_witnesses, ci_floor_plan_witnesses, floor_materialization, the ci_materialization count pins (6/14/≥2), and the placement-grain flagship (ci_build_across_two_jobs_is_one_violation) — all PASS, including witness_gate_roster_matches_coproduct_arms (confirms every remaining Gate variant is still enrolled).

Follow-up

The now-dead dag/tools/rust_gates_ci.dag tool module is orphaned (no importers) and can be deleted in a follow-up.

🤖 Generated with Claude Code

briansrls and others added 22 commits July 9, 2026 22:17
A temporary red probe (union_resolve_receipts_test.rs) used to characterize the
width==1 typecheck-compute-counter semantics was captured by the auto-committer
in 533e473 while it sat in the working tree. It asserts a deliberate RED, so it
fails rust_tests. It was never intended to land.

Restores the file to its state at 674381f.

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

`typecheck_compute_count()` counts typecheck cache MISSES on the current thread and
is never reset in production (only tests reset it), so it equals a closure size only
from a cold start. The measurement window cannot assume that:

  - width == 1 returns `run_discovery_rows` on the discovery thread, which has already
    resolved every changed file via `floor_diff_edits_from_line_ranges` plus both prefix
    entries. The reported count was therefore |closure(changed files) u closure(prefix)
    u closure(rows)| -- a function of the diff under test, not of the roster.
  - `floor_skip_discovery_witness` calls run_discovery_corpus three times on one thread,
    so the 2nd and 3rd calls read a counter warmed by the 1st.

Count the union of authored module names across the graphs the shard actually resolves
(prefix contexts + each roster entry) instead. That is a property of the source closure:
independent of cache warmth, resolve order, and the diff. Prefix modules stay counted --
they are resident for the shard's lifetime, so they belong in the memory pairing.

Note the parallel path was never the problem: run_walk dispatches DiscoveryBatch via
thread::spawn, so shards do start cold. The defect was the pre-row work on the discovery
thread, which shards never repeat.

Adds a discriminating control: a prior same-thread resolve moves the compute counter
(asserted, so the control stays discriminating) but must not move the closure count.

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

The host OOM is systematic, not intermittent: a width==1 shard is killed by
host-level oversubscription under its own slot cap, so narrowing width cannot
help. The per-shard prediction therefore feeds TWO knobs — within-job width and
cross-job packing/admission — and the systematic case is served by admission-
refusal, not width. Records RSS-at-kill as a lower-bound calibration point.

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

Frees a runner slot and drops CI's largest memory job (~37 GiB). The v1 rust
fmt+nextest gate was non-required and red on main (v1 seed being deleted, §7);
formatting stays covered by the pre-push hook. Removes the job, its roster
enrollment, the now-orphan Gate/surface coproduct variants and all their match
arms, the dead gate-runner wrappers, and updates the placement-grain duplicate
-computation flagship to the surviving 2 sibling jobs (still >1, still discharged).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…den (#6453 added floor_skip_discovery_witness)

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

Addresses PR review (cursor/composer-2.5): records the v1 fmt+nextest removal as
intentional with rationale (non-required + red on main, v1 seed being deleted §7,
fmt stays on pre-push) and its no-return trigger, rather than a silent coverage drop.

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

gunbai-bot Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor Author

Thanks — the coverage-drop concern is valid and I've addressed it with option (b); one factual correction on the framing.

Correction — it was not a required gate. On the gunbc main ruleset, only the ci job is protection-required; rust_tests (and ci_regen) are not protection-required, and rust_tests was in fact red on main (it exercises the v1 seed, which is being deleted under §7). So this isn't a required-merge-protection regression — it's the removal of a non-required, already-red gate. That's precisely why the operator ruled to delete it rather than keep tolerating a permanent non-required red (§5), and it was the fleet's single largest CI memory job at ~37 GiB.

Why not (a) re-enroll on the ci floor: that would move the ~37 GiB red job into the required gate — the opposite of the intent, and it would make the required ci job inherit the v1 seed's redness. Explicitly rejected.

Fix — option (b), pushed in 78bc01b: a declared Terminal disposition (commit_gate_rust_suite_removed_disposition) at commit_gate_roster — the discoverable home for "why is there no rust gate?" — recording the removal as intentional with its rationale and its no-return trigger: the suite does not re-enroll; it is retired with the v1 seed and deleted at §7 terminal collapse. Coverage after removal is stated explicitly: cargo fmt stays enforced by the pre-push hook (CommitCargoFmtCheck), cargo nextest run -p v1-compiler-tests runs locally, and compile-level seed breakage is still caught by the required floor's DagCompileCleanGate + RegenVerifyGate — only the seed's runtime test behavior moves local.

— sent from merry-owl-649

@briansrls
briansrls merged commit 5f23179 into main Jul 11, 2026
1 of 2 checks passed
@briansrls
briansrls deleted the session/merry-owl-649 branch July 11, 2026 01:10
briansrls added a commit that referenced this pull request Jul 11, 2026
…flushed raw markers)

All six conflicted files take origin/main verbatim: HEAD side was stale
pre-#6453/#6463/#6466 session WIP; main carries the merged truth.

Co-Authored-By: Claude Fable 5 <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