Repository navigation
t27b ledger: eval_hslm and ngram_hslm are unlisted, and two not-pass slots must be freed first #10858
Description
#10467 (b2a33e5) added specs/ml/eval_hslm.t27 and specs/ml/ngram_hslm.t27 to master with no rows in docs/reports/t27b_expectations.json. The reference passes both. t27b blocks both on ExprCall(undeclared fn): each does use ml::train_hslm; and calls into it, which is cross-module use-resolution (lane #9065).
t27b-native-ratchet therefore reports UNLISTED 2 for every PR built on master, even after #10837 lists the other eight drifted specs.
The two rows cannot just be added. The ledger sits at its cap, 139 not-pass rows (138 blocked + 1 codegen) against max_not_pass: 139, and the cap is not raised. Two blocked rows must start to pass first.
Boundary
docs/reports/t27b_expectations.json: add both rows inLC_ALL=Csort order, and keep the not-pass count at or below 139.- Free two not-pass slots by making t27b pass two currently blocked specs honestly, with new logic in a
.t27plan module andcli/t27bglue at net <= 0 hand-written lines. Candidates whose ledger blocker is unique:specs/tri/utils/time.t27:ExprCall(@divFloor). It also uses@modandstd.os.linux.clock_gettime, so check what blocks it next before you choose it.specs/tri/pipeline/builder.t27:ExprCall(@constCast)of&[_]u32{}, an empty slice.- Or
eval_hslmandngram_hslmthemselves, by resolvinguse ml::train_hslmcalls (t27b: resolve cross-module use names - the 28 ml specs #8993 unlocked on the reference #9065).
- Not in scope: raising
max_not_pass, marking either specn/a, deleting or weakening spec tests.
Scenarios
- Today: a PR built on master runs
t27b-native-ratchetand getsUNLISTED 2(eval_hslm, ngram_hslm), red. - After the fix: the same PR gets
UNLISTED 0,OVER CAP 0,UNEXPECTED PASS 0, green, with the cap unchanged.
Requirements
- Two rows:
{"path": "specs/ml/eval_hslm.t27", ...}and{"path": "specs/ml/ngram_hslm.t27", ...}, blocked or pass, sorted. - Two previously blocked rows flip to
pass, each backed by a lab or CI corpus run. - Every new decision has
testblocks in its.t27plan, and a mutant of each new branch is killed.
Criteria
grep -o '"path": "[^"]*"' docs/reports/t27b_expectations.json | LC_ALL=C sort -cexits 0.- Not-pass rows (
blocked+codegen) <= 139, andmax_not_passunchanged or lower. t27b-native-ratchetis green on the PR; its verdict line showsUNLISTED 0.
Follows #10837, which freed one slot (@truncate in specs/tri/utils/utf8.t27) and listed hslm_tokenizer, hslm_corpus and six pass specs.
Success Criteria
grep -o '"path": "[^"]*"' docs/reports/t27b_expectations.json | LC_ALL=C sort -cexits 0jq '[.[] | select(.status=="blocked" or .status=="codegen")] | length' docs/reports/t27b_expectations.jsonoutputs a number ≤ 139jq '.max_not_pass' docs/reports/t27b_expectations.jsonoutputs a number ≤ 139t27b-native-ratchetrun on the PR prints a verdict line containingUNLISTED 0and exits 0- Two specs previously listed as
blockedindocs/reports/t27b_expectations.jsonnow showstatus": "pass"in the same file - Each newly passing spec has at least one
testblock in its.t27plan module and a mutant killed in CI (mutation score 100% for new branches)
Activity
t27b ledger: cap 129 as master has it; eval_hslm and ngram_hslm go ba…
gHashTag commentedon Oct 19, 2026
State after #10853 merged and #10862 was rebuilt on master:
max_not_passstays 129 (master's value). t27b: @truncate lowers, utf8 passes; ledger rows for 8 unlisted specs, cap stays 129 (Closes #10837) #10862 holds 128 not-pass rows, so it leaves one free slot.ml/eval_hslmandml/ngram_hslmboth need a blocked row, which means two slots. One more slot has to be freed (one blocked spec turned into pass) before both rows fit without raising the cap.@divFloorand@constCast. Count before filing:blocked+codegenmust be <= 129.t27b: @truncate lowers, utf8 passes; ledger rows for 8 unlisted specs…
github-actions commentedon Oct 19, 2026
Closed by the issue-shape gate (specs/policy/issue_shape.t27, #7498): an issue must have the template's sections. Edit the body; an edit that passes reopens it.
exit 0, or a backticked commandt27b-loop skill: auto-merge can squash the head before the last push …
t27b-loop skill: a seal conflict behind a lefthook.yml change goes th…
t27b-loop skill: merge-tree against origin/master, FETCH_HEAD and sta…
gHashTag commentedon Oct 19, 2026
Reopened by the self-heal of #11007. The issue-shape gate closed this issue with a queued run that judged an older body from its event payload; the current body passes
gen/c/policy/issue_shape.c, and the gate's own contract is that a passing body stays open. If the work is in fact finished or obsolete, close it as completed.