Skip to content

t27b: bare sqrt lowers as @sqrt; ledger rows for hslm_tokenizer and hslm_corpus, cap 139 -> 129 (Closes #10837) - #10853

Merged
gHashTag merged 2 commits into
masterfrom
t27b-bare-sqrt-10837
Oct 19, 2026
Merged

gHashTag merged 2 commits into
masterfrom
t27b-bare-sqrt-10837

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Closes #10837

Master's t27b ledger lacks rows for specs/nn/hslm_tokenizer.t27 and specs/ml/hslm_corpus.t27 (added by #10380), so every PR built on master gets UNLISTED 2 in t27b-native-ratchet. The ledger sat exactly at its cap (139), so a blocked hslm_corpus row needed a slot.

What changed

  • cli/t27b: a bare sqrt(x) with no fn sqrt declared lowers as @sqrt(x), mirroring t27c's Zig backend (declared_fns guard), next to the existing bare abs. A declared fn sqrt still wins. Net -1 hand-written Rust line (foreign-budget gate green).
  • Eleven blocked specs were blocked only by that call and now pass t27b's JIT (checked under qemu-aarch64: all tests pass): hslm/forward_pass, igla/coder/kill_rule, ml/layers/{batchnorm,embedding}_layer, ml/loss/contrastive_loss, ml/optimizer/{adagrad,adam,adamw,lamb}, ml/rl/advantage_estimator, nn/ternary_ste. Their rows flip to pass.
  • New rows: hslm_tokenizer = pass; hslm_corpus = blocked. Its blocker is not use-resolution as the issue guessed: it calls host_open/host_read/host_write/host_close (undeclared, rewritten by t27c to __t27_host_*). Follow-up, not in this PR.
  • max_not_pass 139 -> 129 (128 blocked + 1 codegen). Rows stay in LC_ALL=C order. The cap is lowered, never raised; no spec or test is touched.

🤖 Generated with Claude Code

gHashTag and others added 2 commits October 19, 2026 11:40
…c's Zig backend prints it (Refs #10837)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… on host I/O), 11 sqrt specs flip to pass, cap 139 -> 129 (Closes #10837)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
gHashTag added a commit that referenced this pull request Oct 19, 2026
…rifted rows)

Both PRs close #10837 and each one alone stays red on t27b-native-ratchet:
#10853 has UNLISTED 8 and MOVED 2, and #10862 cannot list eval_hslm and
ngram_hslm without two free slots. Together they free 12 slots, list
all 10 drifted specs, and move two blockers to what native CI reports:

- specs/ml/pathway/mlp.t27: ExprArrayLiteral(repeat count)
- specs/nn/gla.t27: ConstDecl

eval_hslm and ngram_hslm are listed blocked (ExprCall(undeclared fn)).
Not-pass rows: 129 blocked + 1 codegen = 130, and max_not_pass goes from
master's 139 to 130. That lowers the cap; it never rises above master.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gHashTag added a commit that referenced this pull request Oct 19, 2026
…efs #10837)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@gHashTag
gHashTag enabled auto-merge (squash) October 19, 2026 05:18
@gHashTag
gHashTag merged commit 775b8b8 into master Oct 19, 2026
36 of 42 checks passed
gHashTag added a commit that referenced this pull request Oct 19, 2026
…ck to #10858 (Refs #10837)

#10853 merged on its own with max_not_pass 129, the exact count, so
master has no room for eval_hslm and ngram_hslm. With @truncate freeing
utf8, keeping both rows would need 130 and raise master's cap. This
branch drops them and takes master's 129: 128 not-pass rows, one slot
free for #10858. The cap line now matches master's, so the branch
merges without conflict.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gHashTag added a commit that referenced this pull request Oct 19, 2026
…, cap stays 129 (Closes #10837) (#10862)

* t27b: a bare sqrt(x) with no fn sqrt declared lowers as @sqrt, as t27c's Zig backend prints it (Refs #10837)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* ledger(t27b): rows for hslm_tokenizer (pass) and hslm_corpus (blocked on host I/O), 11 sqrt specs flip to pass, cap 139 -> 129 (Closes #10837)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* t27b: @truncate by truncate_plan, which frees a ledger slot for #10380's two unlisted hslm specs (Closes #10837)

#10380 merged specs/nn/hslm_tokenizer.t27 and specs/ml/hslm_corpus.t27
with no ledger rows, so every PR built on master got UNLISTED 2 from
t27b-native-ratchet. hslm_corpus is blocked (cross-module
use-resolution), and the ledger already sat at max_not_pass 139: its row
would have been the 140th not-pass row, which reads as OVER CAP. The cap
stays where it is. This change frees a slot instead.

specs/tri/utils/utf8.t27 was blocked only by ExprCall(@truncate).
@truncate now lowers through int_cast_plan.t27:
- truncate_plan is plan in wrap mode, so it keeps the low bits and never
  traps;
- a comptime operand folds with wrap;
- a result type wider than the operand is refused (REFUSE_WIDER), as Zig
  refuses it;
- from_destination now names @truncate, so `x = @truncate(e)` takes x's
  type.
lower.rs is glue only, net 0 lines: int_cast takes a trunc flag that picks ic::truncate_plan
and the @truncate site texts. gen/rust/tri/t27b/int_cast_plan.rs is
regenerated by t27c gen-rust, and the seal is re-saved.

Ledger: utf8 -> pass, hslm_tokenizer pass, hslm_corpus blocked. That
leaves 138 blocked + 1 codegen = 139, at the cap, which is unchanged.

The t27b-loop skill records four traps: the cap trap, the x86 lab
without a qemu runner, the full /data volume, and old negative tests
that flip.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* ledger: rows for six specs master merged unlisted, all pass under t27b (Refs #10837)

mos_psp103, mos_psp103_data, sar_switch (specs/analog), idea_factory,
particle_ds, petal_menu (specs/t27f) landed on master with no rows in
docs/reports/t27b_expectations.json. t27b passes all six on the lab
(qemu-aarch64 corpus on 535334d), so they cost no not-pass slot: the
ledger stays at 139 not-pass rows, the cap.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* t27b-loop skill: three traps from consolidating #10853 into #10862 (Refs #10837)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* t27b ledger: pass rows for analog/sar_logic and policy/secret_gate (Refs #10837)

Master added both specs after this branch's last ledger update; the
native ratchet on 7ab095a reported them UNLISTED, with every other
count at 0. Both pass under t27b, so the not-pass count stays 130.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* t27b ledger: cap 129 as master has it; eval_hslm and ngram_hslm go back to #10858 (Refs #10837)

#10853 merged on its own with max_not_pass 129, the exact count, so
master has no room for eval_hslm and ngram_hslm. With @truncate freeing
utf8, keeping both rows would need 130 and raise master's cap. This
branch drops them and takes master's 129: 128 not-pass rows, one slot
free for #10858. The cap line now matches master's, so the branch
merges without conflict.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* t27b-loop skill: a master merge touching lefthook.yml is refused; match master and check merge-tree (Refs #10837)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5.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.

t27b ledger: #10380's hslm_corpus and hslm_tokenizer are unlisted, and the ledger is at its cap -- every PR's t27b-native-ratchet is red

1 participant