Skip to content

spec(hslm): nn/hslm and hslm/forward_pass compile and pass; own_model counts it (Closes #7778) - #10055

Merged
gHashTag merged 5 commits into
masterfrom
fix/hslm-forward-compile
Oct 17, 2026
Merged

gHashTag merged 5 commits into
masterfrom
fix/hslm-forward-compile

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Closes #7778

What

specs/nn/hslm.t27 (BLOCKED: undeclared identifier constants) and specs/hslm/forward_pass.t27 (BLOCKED: undeclared identifier q_role) now compile and pass. The causes were defects in the specs, not t27c codegen bugs, so only .t27 files and seals change.

  • nn/hslm.t27: now self-contained, with only use base::types. The backward pass is real, not placeholders. The FFN, norm and attention gradients are each checked against a finite difference or a trit flip. The old hash put every character in the same mod-9 trit column; a multiplicative hash replaces it.
  • hslm/forward_pass.t27: rewritten as dense 500-trit role hypervectors: bind, bundle, permute, multi-head attention, Hebbian decode, a direct role with perceptron refinement, and generation. The trit hash runs three squaring rounds mod 1000003; a linear hash would correlate the character vectors. resonatorTrainStep was deliberately left out (the header explains why).
  • igla/own_model.t27: the forward cell (14) is verified. TEST_PASS[14] is true, ML_SPECS_COMPILING is 6, and PCT[14]/[15]/[22] are 60/40/35. The tally is now 1 published, 12 verified, 7 drafts, 7 gaps (about 42 percent), and the header and slide rows follow.
  • igla/own_model_board.t27 (landed on master meanwhile): its mirrored literals follow own_model: message, 42 percent, progress 0.42, lens means 45/51/30, cell arrays and metrics byte count. The negative controls are still wrong against the new values.
  • Seals re-made on the lab for HSLM, nn_HSLM, ForwardPass and hslm_ForwardPass. The old ones had stale spec hashes.

Measured (Railway lab, t27c test-report, zig 0.15)

spec pass FAIL vacuous
nn/hslm.t27 26/26 0 0
hslm/forward_pass.t27 14/14 0 0
igla/own_model.t27 8/8 0 0
igla/own_model_board.t27 6/6 0 0

The spec is not the trained model

The spec and the HSLM that trinity-training actually trained (src/hslm) differ:

spec (nn/hslm.t27) trained model
depth NUM_LAYERS 6 DEFAULT_BLOCKS 3
context CONTEXT_LEN 81 best run at ctx 27 (PPL 2.96)
FFN 243-972-243, GELU, no bias 243-729-243, ReLU, TWN alpha scale, biases
embedding / head none token embedding and vocab-729 head

Attention matches: 3 heads x 81, pre-RMSNorm, sacred scale, residual. This PR makes the spec compile and pass as written. Aligning it with the trained model is the next row on the own-model board ("Match the spec to the trained HSLM").

🤖 Generated with Claude Code

gHashTag and others added 5 commits October 18, 2026 00:01
…10026)

One map for IGLA CODER, HSLM in t27 and the harness, through the T27F topic
workflow: statuses earned by topic_engine::earned_status from measurements
taken 2026-10-17 on the Railway lab (4 of 17 ML specs compile, 0 of 9
IGLA CODER specs), Hugging Face and the IGLA board. 1 published, 11
verified, 8 drafts, 7 gaps; about 39 percent overall, equal weight per
cell. Epic #10024.

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

nn/hslm.t27 was BLOCKED on 'constants' (via nn/attention). It is now
self-contained, with a real backward pass: every weight, gamma and input
gradient is checked against a finite difference or a trit flip. 26/26 pass,
0 vacuous, on the Railway lab.

hslm/forward_pass.t27 was BLOCKED on undeclared q_role. It is rewritten on
dense ternary hypervectors: bind, bundle, permute, hard attention over
positioned context, Hebbian counts and a learned direct role. 14/14 pass,
0 vacuous.

own_model.t27: cell 14 (forward pass) now has a passing test and is
VERIFIED; 6 of 17 ML specs compile; percents and slides follow. Seals for
both specs re-sealed on the lab.

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

# Conflicts:
#	specs/igla/own_model.t27
…7778)

own_model now counts the HSLM forward cell as verified: 1 published,
12 verified, 7 drafts, 7 gaps, 42 percent overall, lens means 45/51/30.
The board's message, percent, progress, cell arrays and metrics byte
count follow; negative controls stay wrong against the new values.
Lab: own_model_board 6/6, own_model 8/8, 0 vacuous.

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

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-17 17:41:08 UTC

Summary

Status Count
Total Open PRs 50
PRs with Failing Checks 49
PRs with All Checks Green 1
READY 0
FAILING 49
PENDING 0
NO CHECKS YET 0

These columns do not partition: 0 + 49 + 0 + 0 = 49, and there are 50 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=e769ef021713 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag
gHashTag enabled auto-merge (squash) October 17, 2026 17:42
@gHashTag
gHashTag merged commit 87648ec into master Oct 17, 2026
25 of 29 checks passed
gHashTag added a commit that referenced this pull request Oct 17, 2026
…0071) (#10078)

#10055 made specs/nn/hslm.t27 parse with no discarded tokens, so the
corpus ratchet on master reports it as an UNEXPECTED PASS (and as a
DISCARD WORSENED with no reading). The pin is dropped and max_entries
follows the count down, 82 -> 81.

The entries match the ledger's own bless command, run on the Railway lab,
byte for byte; the bless serializer would also drop the hand-written
_why_entries_fell/_why_entries_rose fields, so they are kept and the diff
is the one entry plus the cap line.

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

Implement part 1 of 1 of the empty bodies in specs/nn/hslm.t27 (4 functions)

1 participant