Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
dac80e9
split(#4502 PR-1): PVL rows fresh from main — PMAT-4199 EV-6b, PMAT-4…
noahgift Sep 28, 2026
14d79ed
split(#4502 PR-1): aprender-contracts-macros from 0be7 (contract_env_…
noahgift Sep 28, 2026
ade1d7b
split(#4502 PR-1): contracts/ from 0be7 (bindings the new macros requ…
noahgift Sep 28, 2026
dacbb04
split(#4502 PR-1): #4369 build_helper::env_key — every binding build.…
noahgift Sep 28, 2026
82b7304
split(#4502 PR-1): the #4369 build-dep in the 4 remaining crates
noahgift Sep 28, 2026
2bc64c8
fix(present-cli): drop unused std::path::Path import in build.rs (#45…
noahgift Sep 28, 2026
b4ebf93
style(#4502): rustfmt kani_assume_tests.rs — include!d, so cargo fmt …
noahgift Sep 28, 2026
c3b7aec
fix(split #4502 PR-1): Cargo.lock — add the #4369 build-dep edges (CI…
noahgift Sep 28, 2026
0839174
fix(split #4502 PR-1): wire the contracts-cli test targets PR-1 adds …
noahgift Sep 28, 2026
9125cd0
fix(split #4502 PR-1): carry the ont test fixtures + fb row 4 (binary…
noahgift Sep 28, 2026
e13e9eb
batch: regenerate the generated set once (batch_fold.sh --regen)
Sep 28, 2026
178d705
fix(test): archive_fails_when_tar_cannot_write targets a path under a…
noahgift Sep 28, 2026
2457d8c
fix(ci): shard pins the event's base as origin/main so the refinement…
noahgift Sep 28, 2026
057b962
fix(split #4502 PR-1): track the ONT-2c/PVL generated artifacts the c…
noahgift Sep 28, 2026
58cb2c7
fix(ci): give the ont8 evidence-gate and pvl-comparator fragments fre…
noahgift Sep 28, 2026
483cc76
fix(4502): contracts-cli gates 290 + 430 — VS-COUNT-001 Case row; ref…
noahgift Sep 28, 2026
4f01e3f
fix(4502): contracts-cli gates 338 + 343 + 430 (rest) — 0-bin workspa…
noahgift Sep 28, 2026
83e7c80
fix(split #4502 PR-1): regenerate Axioms.lean from the PR-1 contracts…
noahgift Sep 28, 2026
6bf1954
fix(split #4502 PR-1): keep-leaf split artifacts — FUSION-006 call_si…
noahgift Sep 28, 2026
8981d46
fix(dogfood): PR-1 ledger matches its cli.rs — 144/886, T2 pairing re…
noahgift Sep 28, 2026
601334e
fix(#4502): delete the dead cooperative-matrix GEMM chain (#4347)
noahgift Sep 27, 2026
de069f1
fix(shapes): PR-1 carried main's README/CLAUDE/Makefile — restore the…
noahgift Sep 28, 2026
2bf1355
fix(shapes): regenerate evidence/binary/snapshot.jsonl for PR-1's own…
noahgift Sep 28, 2026
1e1f109
fix(split): move 29 contracts whose tests or bins live in PR-2 out of…
noahgift Sep 28, 2026
65b9387
chore(lean): regenerate Axioms.lean (pv discharge gen-axioms; --check…
noahgift Sep 28, 2026
f51e38e
batch: regenerate the generated set once (census, contracts.nt, shape…
noahgift Sep 28, 2026
3c2a40a
fix(ev11): unpaired_theorem_modules 130 -> 129, the measured count af…
noahgift Sep 28, 2026
60d4786
fix(split #4502 PR-1): apr-dogfood-coverage total_obligations 16 -> 9…
noahgift Sep 28, 2026
5d652fb
fix(split #4502 PR-1): add evidence/github snapshots from 0be7 — arme…
noahgift Sep 28, 2026
0c3b96b
fix(split #4502 PR-1): ont4d/ont4f fixtures declare entity_type_targe…
noahgift Sep 28, 2026
0e84873
batch: regenerate the generated set once (batch_fold.sh --regen)
noahgift Sep 28, 2026
5150871
fix(ratchets #4502 PR-1): lint-baseline carries the measured ont coun…
Sep 28, 2026
1e30c5a
fix(split #4502 PR-1): ont4b shapes_n 66 -> 48, the measured count af…
noahgift Sep 28, 2026
3c971b0
fix(ont-consistency #4502 PR-1): regenerate the pv-sat witness for th…
Sep 28, 2026
ff8ba23
chore(pr-review): receipt for #4587 at 3c971b0b39 (reviewer claude-so…
noahgift Sep 28, 2026
3806b29
chore(facades): refresh crates/facades/Cargo.lock (R5 stale on run 36…
noahgift Sep 28, 2026
7311ce0
fix(split #4502 PR-1): drop the ptx-debug CLI row; its command moved …
noahgift Sep 28, 2026
e85da1a
test(pvl leanchecker #4199): stub rows run --leanchecker-unscoped; th…
noahgift Sep 28, 2026
f17e625
merge origin/main into split/pvl-rows-0.70 (single merge, R8)
noahgift Sep 28, 2026
8a3f065
fix(ci #4587): lib-test container trusts /workspace so the pinned ori…
noahgift Sep 28, 2026
b6e8be0
release(pv #4604): C2 bump — pv set at 0.69.4, update-check + build-s…
noahgift Sep 28, 2026
d052ab4
release(pv #4604): 6-crate set — aprender-build-sha + aprender-update…
noahgift Sep 28, 2026
8c2192e
ci(binary-release #4604): release pv with --features update-check,bui…
noahgift Sep 28, 2026
4a1ec56
fix(shapes #4587): the #3610 exemption moves off the shape so the fle…
noahgift Sep 28, 2026
f766fc7
merge origin/main into split/pvl-rows-0.70 (brings #4512 signing-key …
noahgift Sep 28, 2026
81cd662
fix(#4587): x86-main reds from run 36462668621 — contracts recipe and…
noahgift Sep 28, 2026
ff5c834
fix(facade guard #4587): exact scoped allowlist — only the declared #…
noahgift Sep 28, 2026
7356870
fix(make #4587): no PR-1 recipe calls a script only PR-2 carries
noahgift Sep 28, 2026
d57f897
fix(dogfood #4587): re-derive per_binary/band/cluster baselines for P…
noahgift Sep 28, 2026
c1e4d19
fix(guards #4587): mutation sets for the three guards PR-1 adds, and …
noahgift Sep 28, 2026
ba09f72
fix(version #4587): a facade pin must name the crate it re-exports, n…
noahgift Sep 28, 2026
7eb3314
evidence(pr-review #4587): Sonnet review receipt for head ba09f72af5,…
noahgift Sep 28, 2026
7cc5f7d
fix(ci #4587): the lean-guards step runs each guard under setsid --wait
noahgift Sep 28, 2026
7218961
evidence(models #4587): re-derive supported.yaml after the README edit
noahgift Sep 29, 2026
00d9872
evidence(pr-review): commit the CI signer's .minisig for #4587's ba09…
noahgift Sep 29, 2026
293425f
evidence(pr-review #4587): Sonnet review receipt for head 7218961ef9,…
noahgift Sep 29, 2026
54b99df
evidence(pr-review #4587): cuda consultation is unreachable, not cons…
noahgift Sep 29, 2026
92aac9b
fix(guard): C13 read a present release asset as MISSING (printf into …
noahgift Sep 29, 2026
35d852f
evidence(pr-review #4587): Sonnet receipt for code head 92aac9b4e3 (B…
noahgift Sep 29, 2026
d7b36ad
evidence(pr-review #4587): cuda consultation run for real (consulted,…
noahgift Sep 29, 2026
a79535b
ci(mutants): A' survivor table -- CI matrix shards bound to head sha …
noahgift Sep 29, 2026
0a5c132
fix(mutants-table): an equivalent's receipt must be a pr-review state…
noahgift Sep 29, 2026
b132bf3
fix(mutants-table): an equivalent needs a CI-signed receipt, verified…
noahgift Sep 29, 2026
15d393d
evidence(pr-review #4587): Sonnet receipt for code head b132bf3c34 (A…
noahgift Sep 29, 2026
8a51611
test(cli_roles): kill the 14 M1 shard-4 survivors (PR-1 #4587)
Sep 29, 2026
05c9e6f
fix(mutants-table): feature-gated files run with their feature, not a…
noahgift Sep 29, 2026
1c3c237
evidence(pr-review #4587): Sonnet receipt for code head 05c9e6f2d9 (f…
noahgift Sep 29, 2026
69050e6
test(ontology): kill CellsError::file -> String::new() survivor (M1 s…
noahgift Sep 29, 2026
38cabdb
test(ontology): kill version_key || -> && and v_star > -> >= survivor…
noahgift Sep 29, 2026
aba60e6
evidence(pr-review #4587): Sonnet receipt for code head 38cabdb8af (+…
noahgift Sep 29, 2026
1028fdf
fix(release): publish-order.txt omits aprender-build-sha and aprender…
noahgift Sep 29, 2026
8a3abba
evidence(pr-review #4587): Sonnet receipt for code head 1028fdf9f9 (+…
noahgift Sep 29, 2026
13939b0
fix(mutants-table): main.rs group runs the pv binary tests, not --lib…
noahgift Sep 29, 2026
83b3049
fix(mutants-table): scratch copies keep .git (--copy-vcs true); every…
noahgift Sep 29, 2026
b82f36e
fix(ci): PR-1 run 36543136454 guard-tree + pr-review-sign reds (PR-in…
noahgift Sep 29, 2026
fad4fb0
roadmap(#4502 PR-1): carry the entries for PR-1's own rows
noahgift Sep 29, 2026
1f2a8f5
roadmap(#4502 PR-1): rows for folded #4604 and #4369; regenerate the …
noahgift Sep 29, 2026
586e205
merge origin/main 00052c0128 (#4632) into split/pvl-rows-0.70 (C53)
noahgift Sep 29, 2026
1569d1a
roadmap(#4502 PR-1): AC rows for the #4587 A' survivor table and the …
noahgift Sep 29, 2026
5dfa5e7
census: drop the batch-regen census edit; README contract_count back …
noahgift Sep 29, 2026
c253b41
test(contracts): kill the MISSED mutants CI's survivor table found on…
noahgift Sep 29, 2026
4402048
test(refines): pin refines_pairs so deleting the counter field is caught
noahgift Sep 29, 2026
d8ebfd2
census: regenerate to the tree — n_files 1860, README contract_count …
noahgift Sep 29, 2026
d399186
test(contracts): make the equivalent mutants killable, then kill them
noahgift Sep 29, 2026
6bb547c
evidence(pr-review): #4587 non-author receipt for d3991868d2
noahgift Sep 29, 2026
55835bd
test(contracts): kill the compute_proof_depth L3/L4 and pair_mismatch…
noahgift Sep 30, 2026
f090675
evidence(pr-review): #4587 non-author receipt for 55835bd46b
noahgift Sep 30, 2026
0d18132
fix(ont4b): regen the tracked graph — two verifiedCommand literals we…
noahgift Sep 30, 2026
14e1e33
test(contracts): kill the 3 MISSED mutants in section glob + summary_…
noahgift Sep 30, 2026
3003548
evidence(pr-review): #4587 non-author receipt for 14e1e3335c
noahgift Sep 30, 2026
5a716cf
test(#4587): C127 — relocate test-location mutants to cli rows, kill …
noahgift Sep 30, 2026
4f31986
test(contracts): kill the 38 MISSED release_crux mutants (swarm #4587)
noahgift Sep 30, 2026
bb5c773
test(#4587): kill 27 MISSED mutants in release_evidence (18), extract…
noahgift Sep 30, 2026
d5992f0
test(discharge): find_word fail-fast asserts first so a bad resume of…
noahgift Sep 30, 2026
c6799ec
test(#4587): kill the review's MISSED release_crux + project mutants
noahgift Sep 30, 2026
99da330
test(#4587): kill the c6799 shard survivors in the ontology extractors
noahgift Sep 30, 2026
b316b2b
fix(#4587): fence_close slices m bytes, as fence_open does — the fenc…
noahgift Sep 30, 2026
5296a9f
fix(ci): #4587 green on its own base — tree_reader_tests drift + muta…
noahgift Oct 1, 2026
32fc88e
ci(gate): the ratchet comment says where the baseline lands (#4647) a…
noahgift Oct 1, 2026
ee9d92b
evidence(pr-review): non-author receipt for #4587 at 32fc88e6f5
noahgift Oct 1, 2026
2077f24
test(#4587): kill C147 rerun survivors — K10 subsumption/ratchet_gate…
noahgift Oct 1, 2026
b270bc7
Merge remote-tracking branch 'origin/split/pvl-rows-0.70' into split/…
noahgift Oct 1, 2026
6c62691
merge origin/main into #4587 — ci.yml: main's mutants-debt comment fo…
noahgift Oct 1, 2026
af891a9
evidence(pr-review): non-author receipt for #4587 at 6c626919fb
noahgift Oct 1, 2026
e1a39a1
ci(mutants): option (a) — empty ci/mutants-table-refs.txt; PR-1/PR-2 …
noahgift Oct 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .claude/skills/apr-dogfood/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -1591,7 +1591,7 @@ The nine clusters at zero, largest first: `http-orchestrate-banco` (95),
`test-harness` (49), `rag-eval` (44), `qa-cgp` (37), `simulation` (18),
`orchestrate-pacha-secrets` (17).

**Report both numbers or neither (T2).** "5 of 14 clusters gated (35.7%)" without "144 of 864 features gated (16.7%)" beside it is a proxy masquerading as coverage, and the gate refuses to emit it — *on this line too*.
**Report both numbers or neither (T2).** "5 of 14 clusters gated (35.7%)" without "144 of 886 features gated (16.3%)" beside it is a proxy masquerading as coverage, and the gate refuses to emit it — *on this line too*.

The rule is about the NUMBER, not about a phrasing, and it is enforced on every
surface that can emit one: the gate's own report, the receipt, the output of
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/binary-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ jobs:
esac
ldd --version | head -1 > /workspace/target/BUILDER_GLIBC
rustc --version > /workspace/target/BUILDER_RUSTC
cargo build --release --locked --bin pv -p aprender-contracts-cli --target "$T"
cargo build --release --locked --bin pv -p aprender-contracts-cli --features update-check,build-sha --target "$T"
strip "/workspace/target/$T/release/pv"'
mkdir -p "target/$T/release"
cp "$CACHE/target/$T/release/pv" "target/$T/release/pv"
Expand Down
184 changes: 183 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -407,6 +407,173 @@ jobs:
python3 scripts/ci/sigma_executed.py explicit --kind "explicit (3 shards)" "${l[@]}" --step "Integration tests" --list "$d/sigma-shard-1/explicit.list.txt" || rc=1
exit "$rc"

# #4587 A' (operator 2026-09-29 06:36Z, via the cop): "CI generates the survivor table itself: the
# split runs become CI matrix jobs (run IDs), each bound to PR-1's head sha and diff hash ... The gate
# verifies before trusting it ... Any gap -> RED." Scope: the head refs in ci/mutants-table-refs.txt
# (PR-1 and PR-2 of 0.70) and nothing else; every other PR keeps the one-job `mutants` section and its
# 60-mutant cap. For a listed ref that section hands over, and `gate` requires mutants-table.
mutants-table-scope:
runs-on: [self-hosted, Linux, clean-room]
timeout-minutes: 10
if: github.event_name == 'pull_request'
outputs:
in_scope: ${{ steps.decide.outputs.in_scope }}
steps:
- uses: actions/checkout@v7
with:
ref: ${{ github.event.pull_request.head.sha }}
# minisign for the equivalents-signature rows (pinned + digest-checked, per-run private bin dir).
- name: Install minisign (the checker refuses an unverifiable equivalent)
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
set -euo pipefail
bash scripts/install_pr_review_tools.sh "$RUNNER_TEMP/pr-review-tools/bin"
echo "$RUNNER_TEMP/pr-review-tools/bin" >> "$GITHUB_PATH"
# Every PR re-proves the gate's survivor-table rule and the checker's case table (planted defects RED).
# The checker's case table needs the minisign installed above, so this guard is wired HERE with its input
# named (guard_tree.sh rule 1 then leaves it to this step); the sovereign-ci image has no minisign.
- name: The survivor-table gate rule and checker still turn RED
env:
GATE_RULE_WORKFLOW: .github/workflows/ci.yml
run: |
set -euo pipefail
setsid --wait bash scripts/check_ci_gate_mutants_table_rule.sh --self-test
setsid --wait bash scripts/check_ci_gate_mutants_table_rule.sh
- name: The mutants feature groups cover every feature-gated module
run: setsid --wait bash scripts/check_mutants_feature_groups.sh
- name: Is this head ref judged by the survivor table?
id: decide
env:
HEAD_REF: ${{ github.head_ref }}
run: |
set -euo pipefail
if grep -v '^#' ci/mutants-table-refs.txt | grep -qxF -- "$HEAD_REF"; then v=true; else v=false; fi
echo "head ref $HEAD_REF -> in_scope=$v"
echo "in_scope=$v" >> "$GITHUB_OUTPUT"

# One shard of the diff's mutants per job, on the PR HEAD sha (not the merge commit), cap 0.
mutants-shard:
runs-on: [self-hosted, Linux, clean-room]
timeout-minutes: 720
needs: [mutants-table-scope]
if: needs.mutants-table-scope.outputs.in_scope == 'true'
strategy:
fail-fast: false
matrix:
shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
env:
IMAGE: localhost:5000/sovereign-ci:stable
SHARDS: '16'
MUTANTS_TABLE_JOBS: ${{ vars.MUTANTS_TABLE_JOBS || '2' }}
steps:
- name: Pre-checkout ownership restore (EACCES self-heal)
run: |
if docker image inspect "$IMAGE" > /dev/null 2>&1; then
docker run --rm -v "${GITHUB_WORKSPACE}:/workspace" "$IMAGE" \
bash -c 'chown -R 1000:1000 /workspace 2>/dev/null || true'
fi
- uses: actions/checkout@v7
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
- name: The PR diff this shard is bound to
run: bash scripts/mutants_table_diff.sh "${{ github.event.pull_request.base.ref }}" pr.diff
- name: Pull sovereign-ci image (with retry + local-cache fallback)
run: |
if docker image inspect "$IMAGE" > /dev/null 2>&1; then exit 0; fi
for i in $(seq 1 15); do
docker pull "$IMAGE" && exit 0
sleep $((4 + 6 * i))
done
echo "::error::Registry localhost:5000 unreachable after 15 attempts AND image not in local cache"
exit 1
- name: Shard ${{ matrix.shard }} of the survivor table
run: |
set -euo pipefail
docker run --rm \
-e CI -e GITHUB_ACTIONS -e GITHUB_RUN_ID -e GITHUB_RUN_ATTEMPT -e SHARDS -e MUTANTS_TABLE_JOBS \
-e SHARD=${{ matrix.shard }} \
-v "${GITHUB_WORKSPACE}:/workspace" -w /workspace "$IMAGE" \
bash -c '
set -uo pipefail
export CARGO_INSTALL_ROOT=/usr/local/cargo-mutants-root
export PATH="$CARGO_INSTALL_ROOT/bin:$PATH"
if ! cargo mutants --version > /dev/null 2>&1; then
cargo install cargo-mutants --locked --version 27.1.0 > /tmp/mi.log 2>&1 || {
echo "::error::cargo-mutants install failed; the shard cannot run"; tail -20 /tmp/mi.log; exit 1; }
fi
cargo mutants --version || { echo "::error::cargo-mutants not runnable after install"; exit 1; }
# The same exclusions as the mutants section: derived from the workspace-test nextest line.
EXCL=$(grep -m1 -E "^[[:space:]]+cargo nextest run --profile ci --workspace --lib" ci/sections.yml \
| grep -oE -- "--exclude [a-z0-9_-]+" | sed "s/^--exclude /--exclude-crate /" | tr "\n" " ")
[ -n "$EXCL" ] || { echo "::error::no --exclude list found on the workspace-test nextest line"; exit 1; }
# shellcheck disable=SC2086
bash scripts/mutants_table_shard.sh pr.diff "$SHARD" "$SHARDS" "$MUTANTS_TABLE_JOBS" \
"mutants-shard-$SHARD" $EXCL
'
- uses: actions/upload-artifact@v7
if: always()
with:
name: mutants-shard-${{ matrix.shard }}
path: |
mutants-shard-${{ matrix.shard }}/meta.json
mutants-shard-${{ matrix.shard }}/list.txt
mutants-shard-${{ matrix.shard }}/outcomes.json
if-no-files-found: error

# The verifier: trusts no shard until scripts/ci/mutants_survivor_table.py has checked the union.
mutants-table:
runs-on: [self-hosted, Linux, clean-room]
timeout-minutes: 20
needs: [mutants-table-scope, mutants-shard]
if: always() && needs.mutants-table-scope.outputs.in_scope == 'true'
steps:
- name: Every shard ran to the end
env:
SHARD_RESULT: ${{ needs.mutants-shard.result }}
run: |
echo "mutants-shard matrix result: $SHARD_RESULT"
[ "$SHARD_RESULT" = success ] || { echo "::error::mutants-table: shard matrix result is '$SHARD_RESULT' (a dead, cancelled or skipped shard is not a pass)"; exit 1; }
- uses: actions/checkout@v7
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
- uses: actions/download-artifact@v4
with:
pattern: mutants-shard-*
path: ${{ runner.temp }}/mt
# minisign for the equivalents-signature rows (pinned + digest-checked, per-run private bin dir).
- name: Install minisign (the checker refuses an unverifiable equivalent)
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
set -euo pipefail
bash scripts/install_pr_review_tools.sh "$RUNNER_TEMP/pr-review-tools/bin"
echo "$RUNNER_TEMP/pr-review-tools/bin" >> "$GITHUB_PATH"
- name: The checker's case table must still turn RED
run: python3 scripts/ci/mutants_survivor_table.py --self-test
- name: "Survivor table: every listed mutant judged once, on the PR head + diff (#4587 A')"
env:
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
PR: ${{ github.event.pull_request.number }}
MUTANTS_MAX_MISSED: ${{ vars.MUTANTS_MAX_MISSED || '0' }}
run: |
set -euo pipefail
bash scripts/mutants_table_diff.sh "${{ github.event.pull_request.base.ref }}" pr.diff
# The key an equivalent's receipt must verify against comes from the BASE branch: the PR's own copy
# of .github/pr-review.pub is editable by the PR, so trusting it would let a PR sign its own proof.
git show "origin/${{ github.event.pull_request.base.ref }}:.github/pr-review.pub" > "$RUNNER_TEMP/base-pr-review.pub"
python3 scripts/ci/mutants_survivor_table.py check --dir "$RUNNER_TEMP/mt" --shards 16 \
--head-sha "$HEAD_SHA" --diff pr.diff --equiv "evidence/mutants-equiv/$PR.tsv" \
--max-missed "$MUTANTS_MAX_MISSED" --repo . --pubkey "$RUNNER_TEMP/base-pr-review.pub" --table "$RUNNER_TEMP/mt/survivor-table.tsv"
- uses: actions/upload-artifact@v7
if: always()
with:
name: mutants-survivor-table
path: ${{ runner.temp }}/mt/survivor-table.tsv
if-no-files-found: ignore

ci-gate:
name: ci / gate
runs-on: [self-hosted, Linux, clean-room]
Expand All @@ -426,7 +593,7 @@ jobs:
gate:
runs-on: [self-hosted, Linux, clean-room] # arch-neutral: intel, yoga or gx10 (#3100)
timeout-minutes: 22
needs: [x86-main, workspace-test, determinism] # as on main: the GPU jobs are advisory (68-C3 / 68-D2)
needs: [x86-main, workspace-test, determinism, mutants-table-scope, mutants-table] # as on main: the GPU jobs are advisory (68-C3 / 68-D2)
if: always()
steps:
- name: Check required sections
Expand All @@ -435,6 +602,9 @@ jobs:
DET: ${{ needs.determinism.outputs.results }}
WT: ${{ needs.workspace-test.result }}
EVT: ${{ github.event_name }}
SCOPE: ${{ needs.mutants-table-scope.result }}
IN_SCOPE: ${{ needs.mutants-table-scope.outputs.in_scope }}
TABLE: ${{ needs.mutants-table.result }}
run: |
set -euo pipefail
res() { printf '%s' "${1:-null}" | SEC="$2" jq -r '(. // {})[env.SEC].result // "missing"'; }
Expand Down Expand Up @@ -480,4 +650,16 @@ jobs:
*) echo "mutants (diff-scoped mutation) on $EVT: $MUT"; exit 1 ;;
esac
# --- GATE-MUTANTS-RULE-END ---
# --- GATE-MUTANTS-TABLE-RULE-BEGIN (#4587 A'; scripts/check_ci_gate_mutants_table_rule.sh runs this block) ---
# For a head ref in ci/mutants-table-refs.txt the mutants section hands over, so here the survivor
# table must have RUN and succeeded. The scope decision itself must have run on every pull_request:
# a missing decision would let a listed ref pass on the section's hand-over alone.
case "$EVT:$SCOPE:$IN_SCOPE:$TABLE" in
pull_request:success:true:success) echo "mutants-table: survivor table GREEN" ;;
pull_request:success:false:skipped) echo "mutants-table: not in scope (the mutants section judged this PR)" ;;
pull_request:*) echo "mutants-table on a pull_request: scope=$SCOPE in_scope=$IN_SCOPE table=$TABLE"; exit 1 ;;
*:skipped::skipped) echo "mutants-table: skipped on $EVT (pull_request only)" ;;
*) echo "mutants-table on $EVT: scope=$SCOPE in_scope=$IN_SCOPE table=$TABLE"; exit 1 ;;
esac
# --- GATE-MUTANTS-TABLE-RULE-END ---
echo "All required sections passed"
Loading
Loading