Repository navigation
ci(hot-fix): SKIP integration test execution per operator directive (cold-v3 → ~10min) - #2724
Conversation
…cold-v3 → ~10min) Operator directive at gunbc#846 2026-05-12 ~01:24Z: 'please cut all - can we get v3 to 10 minutes for now - i would just cut ALL demos and integration tests for now'. This is the most aggressive interpretation: skip ALL integration test EXECUTION, while preserving compile coverage. Tests still build via the existing `--no-run` prebuild step (catches Rust-level breakages); they just don't execute in CI until rebuild-session amortizes them properly. **Two steps converted from execute to skip-with-notice**: 1. `v3 tests (Stage 2d integration module, HOT-FIX SKIPPED)` — was running lane2d_stage_2d_symbolic_cost_test::* with 360s budget 2. `v3 tests (full suite integration harness, HOT-FIX SKIPPED)` — was running `cargo test --test integration` with 4000s budget **What still gates correctness on every PR** (NOT cut): - lib+bins tests (Part 1/4) — unit-level correctness in src/ - determinism_test (Part 2/4) — emission determinism gate - doc tests (Part 3/4) — doc-comment examples - Integration compile coverage via `--no-run` prebuild — catches Rust-level breakages - Clippy (default + bootstrap-regen-fresh) — lints - L-7 + L-8 lens-discipline gates - compiler-std consolidation ratchet - banked-dissolutions ratchet - self_host_ratchet (DB-8 staging) **Restore criteria** (rebuild session per #2722 §5): each integration test class re-enables under OnceLock/cached_compile amortization with per-test wall ≤ 2s ratchet, OR transitions to Layer 2 path-conditional gating per Director brief #2719. As tests re-enable, restore the execution step + ratchet budget downward incrementally. **Expected impact**: cold-v3 wall ~67min → estimated ~10-15min (integration was the dominant contributor). Empirical measurement on first post-merge run gives actual. **Bridge-debt with named dissolution**: - Dissolution trigger: rebuild session lands OnceLock/cached_compile amortization per #2722 §5 - Alternative path: affected-set lens R4.B CI integration per docs/design-affected-set-lens.md §5 (longer-term) This stacks on top of: - PR #2718 Layer 1 (docs-only skip; merged) - PR #2723 first-cut #[ignore] (8 files; merged) Together with this hot-fix-PR-2, the cold-v3 wall-time path forward is: docs PRs → 0min (Layer 1); code PRs → ~10min (this PR); rebuild session adds tests back per per-test ratchet. SG-0 hand-path delta: 0 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Re cursor BLOCKING review #9796 at sha 52f16d5 — regression confirmed; P0 fix at PR #2726 ready for operator-merge. cursor was correct: my aggressive 'skip integration step entirely' broke the Fix at PR #2726: restored the invocation pattern with a nonexistent-test-filter so the integration binary runs but executes zero tests: cargo test -p v3-compiler --test integration __HOT_FIX_NONEXISTENT_FILTER__ -- -Z unstable-options --report-timeThis is exactly the 'minimal cargo test --test integration invocation that still skips heavy work' shape you suggested in §3 Verdict. Verified locally: Restore criteria unchanged: rebuild session per #2722 §5 → replace nonexistent filter with cluster-specific filters as tests re-enable → drop filter entirely when all integration tests are amortized. P0 path: PR #2726 needs operator-merge ASAP to unblock main CI (currently red on every new run since #2724). — sent from deep-wolf-155 |
…or BLOCKING regression on #2724) (#2726) cursor BLOCKING REQUEST_CHANGES caught a real regression in #2724: my aggressive "skip integration step entirely" approach removed the `cargo test -p v3-compiler --test integration ... --report-time` invocation that the `check-v3-full-suite-split-test-targets.sh` guard requires per v3-compiler [[test]] target. The guard script (lines 66-68) requires: cargo test -p v3-compiler --test <name>[[:space:]].*--report-time for every [[test]] target in v3-compiler's Cargo metadata. After #2724, the only `cargo test ... --test integration` line was the `--no-run` prebuild, which doesn't match `--report-time`. Guard failed → split-guard step failed → v3 job failed on EVERY new CI run on main and PRs. **Fix**: keep the integration step's invocation pattern but filter to a nonexistent test name (`__HOT_FIX_NONEXISTENT_FILTER__`) so: - libtest runs the integration binary - 0 tests match the filter → 0 tests execute - guard sees the matching `cargo test ... --test integration ... --report-time` line → guard passes - per-test ratchet still parses timing log (empty integration section is valid) - wall time stays minimal (just libtest startup; no compile work because the prebuild already cached) This is the "minimal cargo test --test integration invocation that still skips heavy work" pattern cursor explicitly suggested. Restore criteria unchanged (rebuild session per #2722 §5 → restore cluster-specific filters → drop the filter entirely). P0-correctness: this fix lands ASAP to unblock main CI which is otherwise red on every PR since #2724 merged. SG-0 hand-path delta: 0 Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… BLOCKING on PR #2829 + INVARIANTS P1) Operator briansrls flagged on `docs/r3-close-interrogation.md:166` that "Rust stdout-parity tests run unconditionally in CI" overstates live L4 evidence: `.github/workflows/ci.yml:478-501` HOT-FIX-SKIPS the integration binary execution via `__HOT_FIX_NONEXISTENT_FILTER__` (zero tests selected) since 2026-05-12 per gunbc#846 ("cut all demos and integration tests for now, get v3 to 10 minutes"). Lane2d also HOT-FIX-SKIPPED at `ci.yml:385`. INVARIANTS P1: Documentation Describes Live State. Should have grepped ci.yml first per `feedback_audit_consumer_scripts_before_ci_skip` discipline (cursor caught the symmetric class on PR #2724 → P0 fix PR #2726). Fixes applied: 1. **New top-level bullet** "CI integration-binary execution state" prepended to L4 findings — cites ci.yml:478-501 restore-criteria verbatim and clarifies in-CI L4 evidence at HEAD is integration- binary-prebuild-passes + non-integration test surfaces (lib + bins + determinism_test + doc) only. 2. **Rust bullet** reworded: tests EXIST + unconditional in source, BUT live in HOT-FIX-filtered integration binary; execution at HEAD is local-only. Full-matrix `emit_rust_fixtures_rustc_green` still at `#[ignore]`. 3. **Omni-demo Rust slice** reworded similarly: unconditional in source, HOT-FIX-filtered in CI, local-only execution at HEAD. 4. **Interpretation (b)** in Open R3 Question reframed: distinguishes "runnable locally" from "actually-executed-in-CI"; adds (b3) gate- class promotion sub-option to add integration-harness-execution- state restore as a new §1.8 R3-close-anchored gate. Closes with accurate framing: "in-CI evidence is L6 data-coverage-for-all-three + integration-binary-prebuild-passes; runnable evidence is per- fixture Rust + (with toolchains) Python/Go locally." Lesson logged separately — `feedback_audit_consumer_scripts_before_ci_skip` applies to FINDING claims (not just CI-step modifications); the audit must precede any "in CI" claim in docs. — sent from deep-wolf-155
…gs at HEAD (#2829) * docs(r3): §3.1 emission interrogation — scope correction + GAP findings at HEAD The §3.1 promise text was wrong: it claimed "R3 scope: Rust + Python + Go + C + C++ (5 targets)" but per THESIS.md:180 L5 + WISHLIST.md:67-73 R4.A, C/C++ is R4-scope (operator ratification 2026-05-12). R3 scope is 3 Shape-A targets (Rust/Python/Go). LLVM IR / assembly / machine code is R4.C scope. Adds **Findings at HEAD (2026-05-13)** subsection with concrete state: - Target substrate inventory: `src/v3/spec/{rust,python,go}.dag` confirmed - L6 data-coverage: 41-row `emission_path_projections` in `src/v3/std/cross_target_coverage.dag` (Phase-1 carrier, Director-ratified 2026-05-05) - L4 runtime byte-identity at HEAD: - Rust: per-fixture unconditional tests in CI (m1_3_emit_rust_test.rs:995); full rustc roundtrip at #[ignore] (lines 735/764/1199/1218) - Python: roundtrips at #[ignore] (m1_4_emit_python_test.rs:1003,1070) — toolchain-gated, NOT in CI - Go: roundtrips at #[ignore] (m1_3_emit_go_test.rs:252,279,324) — toolchain-gated, NOT in CI - Omni demo: at #[ignore] (m1_5_emit_omni_demo_test.rs:124) - L5 corpus gate #15 `l5_cross_target_consistency`: DECLARED, RED at HEAD (r3-program-plan.md:243 + :431) Surfaces an **Open R3 question (PM-surfaced, not yet routed)**: the close-shape divergence between (a) L6 data-coverage interpretation (✓ for all 3 targets) and (b) L4 runtime byte-identity interpretation (✓ Rust-runtime in CI; Python/Go toolchain-gated). THESIS.md:180 reads as runtime-shape ("same .dag produces same behavior in Rust/Python/Go") but CI evidence is Rust-only-runtime + data-coverage-for-all-three. Triggered by operator question 2026-05-13: "regarding language emission - how do we know general purpose language emission works for all of our target languages?" Director-busy + PM-owned doc → PM-tier fix-forward. — sent from deep-wolf-155 * docs(r3): §3.1 emission — fix omni-demo wording (3-target not 5) + clarify L4 evidence is stdout-parity not byte-identity (cursor BLOCKING-shape APPROVE_WITH_COMMENTS on PR #2829) Two fixes per cursor/composer-2 review on PR #2829: 1. **Omni-demo target count corrected** (cursor's primary finding): - Was: "Omni demo (5-target combined): at #[ignore] (m1_5_emit_omni_demo_test.rs:124)" - Now: distinguishes Rust-only-slice unconditional CI test (emit_omni_demo_rust_roundtrip at m1_5_emit_omni_demo_test.rs:106) from full 3-target #[ignore]'d receipt (emit_omni_demo_fixtures_green at :125, Rust + Python + Go) - The "(5-target combined)" parenthetical was an editorial slip from the prior wrong "5 targets" framing; cursor's read against check_omni_demo_fixtures_green in v3-compiler (3 toolchains: Rust + Go + Python) is correct per INVARIANTS P1. 2. **L4 terminology clarified** (cursor's exploratory finding): - Was: "L4 runtime byte-identity at HEAD" + "per-fixture unconditional byte-identity tests" - Now: "L4 runtime equivalence at HEAD (oracle-style stdout-parity: compiled emit-target binary stdout = expected fixture stdout; not literal artifact byte-equality)" + "per-fixture unconditional stdout-parity tests" - Per m1_3_emit_rust_test.rs:1000-1009 the rustc_roundtrip_* tests compare program stdout to fixture-expected stdout, not artifact byte-equality. Aligns with `feedback_byte_identity_internal_not_external` (byte-identity claims need internal-vs-external discrimination). Also adds new finding: emit_omni_demo_rust_roundtrip (Rust-only slice over omni fixture set) IS in CI unconditionally — previously omitted from the inventory. Strengthens the (b) interpretation evidence-bar accordingly. — sent from deep-wolf-155 * docs(r3): §3.1 emission — correct overstated L4 in-CI claim (operator BLOCKING on PR #2829 + INVARIANTS P1) Operator briansrls flagged on `docs/r3-close-interrogation.md:166` that "Rust stdout-parity tests run unconditionally in CI" overstates live L4 evidence: `.github/workflows/ci.yml:478-501` HOT-FIX-SKIPS the integration binary execution via `__HOT_FIX_NONEXISTENT_FILTER__` (zero tests selected) since 2026-05-12 per gunbc#846 ("cut all demos and integration tests for now, get v3 to 10 minutes"). Lane2d also HOT-FIX-SKIPPED at `ci.yml:385`. INVARIANTS P1: Documentation Describes Live State. Should have grepped ci.yml first per `feedback_audit_consumer_scripts_before_ci_skip` discipline (cursor caught the symmetric class on PR #2724 → P0 fix PR #2726). Fixes applied: 1. **New top-level bullet** "CI integration-binary execution state" prepended to L4 findings — cites ci.yml:478-501 restore-criteria verbatim and clarifies in-CI L4 evidence at HEAD is integration- binary-prebuild-passes + non-integration test surfaces (lib + bins + determinism_test + doc) only. 2. **Rust bullet** reworded: tests EXIST + unconditional in source, BUT live in HOT-FIX-filtered integration binary; execution at HEAD is local-only. Full-matrix `emit_rust_fixtures_rustc_green` still at `#[ignore]`. 3. **Omni-demo Rust slice** reworded similarly: unconditional in source, HOT-FIX-filtered in CI, local-only execution at HEAD. 4. **Interpretation (b)** in Open R3 Question reframed: distinguishes "runnable locally" from "actually-executed-in-CI"; adds (b3) gate- class promotion sub-option to add integration-harness-execution- state restore as a new §1.8 R3-close-anchored gate. Closes with accurate framing: "in-CI evidence is L6 data-coverage-for-all-three + integration-binary-prebuild-passes; runnable evidence is per- fixture Rust + (with toolchains) Python/Go locally." Lesson logged separately — `feedback_audit_consumer_scripts_before_ci_skip` applies to FINDING claims (not just CI-step modifications); the audit must precede any "in CI" claim in docs. — sent from deep-wolf-155
Summary
Operator-tier hot-fix per directive at gunbc#846 2026-05-12 ~01:24Z:
Most aggressive interpretation: skip ALL integration test EXECUTION, while preserving compile coverage. Tests still build via
--no-runprebuild (catches Rust-level breakages); they just don't execute until rebuild-session amortizes them.What changed
Two ci.yml steps converted from execute to skip-with-notice:
v3 tests (Stage 2d integration module, HOT-FIX SKIPPED)— was runninglane2_stage_2d_symbolic_cost_test::*with 360s budgetv3 tests (full suite integration harness, HOT-FIX SKIPPED)— was runningcargo test --test integrationwith 4000s budget (the dominant cold-v3 wall-time contributor)What still gates correctness on every PR (NOT cut)
--no-runprebuild — catches Rust-level breakagesThis is substantive correctness coverage; what's cut is the heavy integration-test execution that was redoing full
compile_to_dagper#[test].Restore criteria (bridge-debt with dissolution trigger)
Rebuild session per #2722 §5 (OnceLock/cached_compile amortization) reshapes each integration test to ≤2s under shared bootstrap. As each test class re-enables, restore this step + ratchet budget downward incrementally.
Alternative path: affected-set lens R4.B CI integration per
docs/design-affected-set-lens.md§5 (longer-term structural).Expected impact
Cold-v3 wall ~67min → estimated ~10-15min per Brian's framing. Empirical measurement on first post-merge run will give actual numbers.
Stack
This stacks on top of:
Together: docs PRs → 0min (Layer 1); code PRs → ~10min (this PR); rebuild session re-enables tests per per-test 2s ratchet incrementally.
Operator-tier framing
Per the operator-tier-merge-bypass precedent (validated via #2718 + #2723), Brian's directive at #846 + the substantive-coverage preservation framing above support
--adminmerge by operator when CI itself runs (would be quick — only lib+bins + determinism + doc tests now).SG-0 hand-path delta: 0
Test plan
🤖 Generated with Claude Code