You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
tri mutate spec (#6993, #7022, on master since #7043) has been run over the whole of specs/queen/actors.t27 (304 mutants, 6 equivalent) and specs/queen/control.t27 (#7074: 173 mutants, 8 gaps closed, 4 equivalent). The other Queen specs have never had a pass, so nobody knows how many of their functions a test would notice changing. The pass over control.t27 found 8 gaps in 173 mutants, so "every function is called by a test" (0 vacuous in test-report) is not coverage.
Specs, counts printed by grep -c on master:
Spec
pub fn
tests
invariants
in this pass
review_valve.t27
5
8
1
yes
priority.t27
5
8
1
yes
task_analysis.t27
5
7
2
yes
views.t27
18
7
2
yes
lotus.t27, brain_summaries.t27
module X { ... } blocks
yes, if the tool reads that form; otherwise reported
One tri mutate spec run per spec (lab, the shared master build copied into an own dir, one locked foreground run per spec sha, no retry around the launch).
Every survivor classified as a dead line (removed), a test gap (an assert added, the mutant applied by hand first and seen to die, then seen to survive on the parent), or an equivalent mutant (the reason written down, one line each).
Asserts only, in existing tests where one fits; no change to what a function returns.
Acceptance criteria
t27c parse, typecheck, gen-rust, gen-verilog, gen-c exit 0 on every touched spec.
t27c gen F > F.zig && zig test F.zig passes, and t27c test-report F prints vacuous passes 0 of N.
A second tri mutate spec --file F leaves only survivors this issue names as equivalent.
Done in local commit 0f94ad469 on claude/queen-actors-next2. It lands in one PR with #7059 and #7074 after #7060 merges, because one Queen PR at a time keeps the Actions queue short.
tri mutate spec --file, lab, the master build copied into an own dir, --jobs 8, one locked run per spec sha:
spec
master
this commit
asserts added
survivors left
review_valve.t27
34 / 37
37 / 37
2
0
priority.t27
24 / 31
27 / 31
3
4, equivalent
task_analysis.t27
33 / 35
35 / 35
2
0
views.t27
67 / 76
76 / 76
9
0
17 of the 21 survivors were test gaps. They share one shape: each test asserted only the false side of a rule. Examples are holds_files(CLOSE / RELEASE), may_bind(NUMBER_ONLY), accept_answer(3, 4) and shows_number(false). Two of the gaps are a comparator that let an item outrank itself (priority and task_analysis outranks at equal index); a sort needs a strict order. One is a score where 1 - p/4 -> 1 + p/4 kept every bound the test checked.
The 4 equivalent survivors are all in effective_level in priority.t27:
level <= LEVEL_HIGH -> <, steps > MAX_AGING_STEPS -> >= and steps >= gap -> >: both sides return the same value at equality.
gap = level - HIGH -> level + HIGH: with MAX_AGING_STEPS == 1, which the levels_are_ordered invariant pins, the clamp returns what the fall-through returns. It must be checked again if that constant changes.
7 gap mutants were also applied by hand. Each was killed on the commit and SURVIVED on its parent.
task_analysis.t27 and views.t27 are sealed, so their three seal files are re-saved with the lab's master compiler. Before the re-save, that compiler printed all hashes MATCH on the old seals. T27_SEAL_SKIP_GEN=1 tools/check_seal_coverage.py: OK.
lotus.t27 and brain_summaries.t27 are out of this pass because their generated zig does not compile on master, so no mutant can be judged. Both are already tracked:
Activity
gHashTag commentedon Oct 6, 2026
Done in local commit
0f94ad469onclaude/queen-actors-next2. It lands in one PR with #7059 and #7074 after #7060 merges, because one Queen PR at a time keeps the Actions queue short.tri mutate spec --file, lab, the master build copied into an own dir,--jobs 8, one locked run per spec sha:17 of the 21 survivors were test gaps. They share one shape: each test asserted only the
falseside of a rule. Examples areholds_files(CLOSE / RELEASE),may_bind(NUMBER_ONLY),accept_answer(3, 4)andshows_number(false). Two of the gaps are a comparator that let an item outrank itself (priority and task_analysisoutranksat equal index); a sort needs a strict order. One is a score where1 - p/4->1 + p/4kept every bound the test checked.The 4 equivalent survivors are all in
effective_levelin priority.t27:level <= LEVEL_HIGH-><,steps > MAX_AGING_STEPS->>=andsteps >= gap->>: both sides return the same value at equality.gap = level - HIGH->level + HIGH: withMAX_AGING_STEPS == 1, which thelevels_are_orderedinvariant pins, the clamp returns what the fall-through returns. It must be checked again if that constant changes.7 gap mutants were also applied by hand. Each was killed on the commit and SURVIVED on its parent.
task_analysis.t27 and views.t27 are sealed, so their three seal files are re-saved with the lab's master compiler. Before the re-save, that compiler printed
all hashes MATCHon the old seals.T27_SEAL_SKIP_GEN=1 tools/check_seal_coverage.py: OK.lotus.t27 and brain_summaries.t27 are out of this pass because their generated zig does not compile on master, so no mutant can be judged. Both are already tracked:
thenundeclared).gen(queen): regenerate the C copies of priority.t27 and review_valve.…
spec(queen): bound an effect's re-runs; close the mutation gaps in fi…