Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .trinity/seals/igla_own_model.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"built_by": "t27c-bootstrap@0.5.2+4ab200073",
"built_by": "t27c-bootstrap@0.5.2+fd332dfd5",
"closure": [
{
"spec": "specs/t27f/reel.t27",
Expand All @@ -15,16 +15,16 @@
}
],
"config": "gen=c,rust,verilog,zig;tests=zig",
"gen_hash_c": "sha256:7749a3a3eee34f915a1dd07db7b752032481c5abc90a670209c993416aa1773f",
"gen_hash_rust": "sha256:88adf9c918ec50be845725e9cd197b18fb3701004e43e23b225aca912631146b",
"gen_hash_verilog": "sha256:3081084523bf60707644f1a5c073b5d3a5571319408889af08a7b1973ac3c65f",
"gen_hash_zig": "sha256:613a50a9a748b999c289d93274de064d0f30d425a7ec256e00b56fc3f5959811",
"gen_hash_c": "sha256:34f442903c5b74b1ddc28b310d9782b0f61c45098e4ff931771176583341057d",
"gen_hash_rust": "sha256:a0e037fe6d5dd9b82586a2bf2a80c27ff50f6c9ba7b9babe60e9b52349efaa5c",
"gen_hash_verilog": "sha256:64cba74ad08af9252262494d75e1ec94d598f81d5fa4b06bc3bff797d5ca5ad8",
"gen_hash_zig": "sha256:a180869d634e33aeca7c64cde565c2115d43ded528f7613a9ce9ad084ab787be",
"module": "own_model",
"ring": 12,
"seal_schema": 2,
"sealed_at": "2026-10-18T09:41:47Z",
"sealed_at": "2026-10-18T13:33:41Z",
"sealed_by": "t27c-bootstrap@0.5.2",
"spec_hash": "sha256:f7471c56c57c69f08cc607d930968459f470372c17ed6eb75368b6c82a6245c2",
"spec_hash": "sha256:2c3daec9e62ce9123e19cad921e57af75beb25a1870c234230ae5505a7d7ac79",
"spec_path": "specs/igla/own_model.t27",
"tests": {
"failed": 0,
Expand Down
16 changes: 8 additions & 8 deletions .trinity/seals/igla_own_model_board.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"built_by": "t27c-bootstrap@0.5.2+4ab200073",
"built_by": "t27c-bootstrap@0.5.2+fd332dfd5",
"closure": [
{
"spec": "specs/igla/own_model.t27",
"spec_hash": "sha256:f7471c56c57c69f08cc607d930968459f470372c17ed6eb75368b6c82a6245c2"
"spec_hash": "sha256:2c3daec9e62ce9123e19cad921e57af75beb25a1870c234230ae5505a7d7ac79"
},
{
"spec": "specs/t27f/reel.t27",
Expand All @@ -19,16 +19,16 @@
}
],
"config": "gen=c,rust,verilog,zig;tests=zig",
"gen_hash_c": "sha256:9c6f443ba6f6d8214d1e979c90105be99ecba919716e547d0e896d89ed0b75e1",
"gen_hash_rust": "sha256:94f42c2726ffcc3015a5d346b36565f343ce57600604b4931c7430c693cb1158",
"gen_hash_verilog": "sha256:cb284309b32ad27988df63ab1e7696c2ae0b549978afb80a6f83b8c8d1a8972e",
"gen_hash_zig": "sha256:0969cbc653c06569242e3c9a58023b001c5c1a143c276a5e917e12d79924b189",
"gen_hash_c": "sha256:a0125cda52bdb9a87de3b170cc991ad71fc627caf8c60e4bc41a2f4a9a3a86e8",
"gen_hash_rust": "sha256:dc61033d126c3f954f8b6ae3f33c33f773edd8f5eda07530cf3576e56d39dd73",
"gen_hash_verilog": "sha256:0d56c85728676e996f03f9636d7492c02c2901cd034348565c28a657aa86731f",
"gen_hash_zig": "sha256:c742951d611cb908f642a7262478d7219717d0b3b3284c123aebd0d4cd63bff5",
"module": "own_model_board",
"ring": 12,
"seal_schema": 2,
"sealed_at": "2026-10-18T09:41:48Z",
"sealed_at": "2026-10-18T13:33:45Z",
"sealed_by": "t27c-bootstrap@0.5.2",
"spec_hash": "sha256:ba4e797ce2ea44fe5ea6265fb4c54bbbc8117cb914de18f9ff90bf0890109cbb",
"spec_hash": "sha256:69e4e67d00d0a17aed8d5e9ed45d7c745c970d069388db37f7835ff39179adae",
"spec_path": "specs/igla/own_model_board.t27",
"tests": {
"failed": 0,
Expand Down
2 changes: 1 addition & 1 deletion gen/json/igla/own_model_board.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"job":"own_model","stage":"own_model","msg":"3 published, 22 verified, 1 drafts, 1 gaps; 61%","progress":0.61,"metrics":{"lens_pct":[65,70,48],"cells":[{"status":4,"pct":60},{"status":4,"pct":70},{"status":4,"pct":80},{"status":4,"pct":80},{"status":4,"pct":60},{"status":4,"pct":100},{"status":5,"pct":50},{"status":5,"pct":90},{"status":0,"pct":0},{"status":4,"pct":100},{"status":4,"pct":100},{"status":4,"pct":20},{"status":4,"pct":80},{"status":4,"pct":65},{"status":4,"pct":95},{"status":4,"pct":75},{"status":4,"pct":55},{"status":4,"pct":40},{"status":4,"pct":70},{"status":4,"pct":15},{"status":5,"pct":60},{"status":4,"pct":40},{"status":4,"pct":100},{"status":4,"pct":60},{"status":4,"pct":30},{"status":3,"pct":10},{"status":4,"pct":50}]}}
{"job":"own_model","stage":"own_model","msg":"4 published, 22 verified, 1 drafts, 0 gaps; 62%","progress":0.62,"metrics":{"lens_pct":[68,70,48],"cells":[{"status":4,"pct":60},{"status":4,"pct":70},{"status":4,"pct":80},{"status":4,"pct":80},{"status":4,"pct":60},{"status":4,"pct":100},{"status":5,"pct":50},{"status":5,"pct":90},{"status":5,"pct":30},{"status":4,"pct":100},{"status":4,"pct":100},{"status":4,"pct":20},{"status":4,"pct":80},{"status":4,"pct":65},{"status":4,"pct":95},{"status":4,"pct":75},{"status":4,"pct":55},{"status":4,"pct":40},{"status":4,"pct":70},{"status":4,"pct":15},{"status":5,"pct":60},{"status":4,"pct":40},{"status":4,"pct":100},{"status":4,"pct":60},{"status":4,"pct":30},{"status":3,"pct":10},{"status":4,"pct":50}]}}
87 changes: 61 additions & 26 deletions specs/igla/own_model.t27
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
; experiment ledger) and data/wave9/worker-2/hslm_step_10000.bin (the one HSLM checkpoint left).
; - gHashTag/trinity-training at TRAINING_COMMIT: src/hslm, 64 Zig files, the HSLM trainer.
; - gHashTag/trinity-fpga at FPGA_COMMIT: 8 tokens on the AX7203, 7682304/7682304 receipts.
; - gHashTag/igla-coder-gpu at CARD_500M_COMMIT: specs/hf/model_card_500m.t27 (cell 9).
; - gHashTag/t27 at SOURCE_COMMIT: the ML specs named per cell.

; MEASURED on 2026-10-17:
Expand Down Expand Up @@ -90,8 +91,25 @@
; 620c80b642ff87f06f945f6dbedf122e69fd524e93b7b20d1fd9bfcfd3d08300, both run summaries pinned
; by sha256 in its model_card.t27 (14/14 on the lab). Validation bits per byte 0.4722 against
; 0.4217 for the fp twin of the same recipe: the ternary model is the worse of the two.
; - trained on 2026-10-18, cell 9: tern-tc-500m, a 512,881,920-parameter ternary model of the
; same family (n_layer 24, d_model 1280, GQA 20 to 4 heads, d_ff 4096), on the owner's yes to
; 0.5B parameters x 1.2B tokens. RunPod pod pkv4k8xhs8jo2b (RTX PRO 6000 Blackwell, EU-RO-1):
; 2288 steps, 1,199,570,944 tokens, 5.235 h, 69.4k tokens/s at 48 percent MFU, 13.65 USD from the
; balance (LEDGER.md). Validation bits per byte 0.5307 on 2M held-out tokens per language, worse
; than tern-tc-100m's 0.4722 after 10B tokens: more parameters did not make up for 8.3 times
; fewer tokens. final.pt is 2,051,594,699 bytes, sha256
; e6925b7c30e3a6c680fdb3591feeae7a1a99a19fe194405daf51ddbb1d8c15bc. Every number is in
; specs/hf/model_card_500m.t27 of igla-coder-gpu at CARD_500M_COMMIT, 12/12 tests and 0 vacuous on
; the lab; a copy with the byte overhead and the bits per byte each one off fails 2 of the 12. Live
; since 2026-10-18: playra/tern-tc-500m at Hugging Face commit HF_500M_COMMIT, whose final.pt
; carries LFS sha256 e6925b7c...1d8c15bc and whose eight other files match the release machine
; byte for byte. Its evidence went to review in PR REVIEW_500M_PR: review REVIEW_500M_ID is the
; reviewer bee on head 88f47f32d, whose model verdict was approve; the bee posted it as
; NEEDS_PERSON, not APPROVE, because that head changes seal and gen files, and the PR merged over
; that hold under the owner's standing instruction, as #10275 did. Live and reviewed, so the cell
; is published at 30 percent: one run at the low end of 0.5-1.5B, under-trained.
; - live: GET huggingface.co/api/models/playra/tern-tc-9m, .../tern-tc-9m-t27 and
; .../tern-tc-100m returned 200 (tern-tc-100m answered 401 before 2026-10-18).
; .../tern-tc-100m and .../tern-tc-500m returned 200 (tern-tc-100m answered 401 before 2026-10-18).
; GET board-production-2dec.up.railway.app/state returned 200 and a made-up path 404; its
; live jobs include own_model since 2026-10-18 06:33 UTC, the event t27c gen-json makes from
; specs/igla/own_model_board.t27 (it was stale since 2026-10-05 before that).
Expand All @@ -113,7 +131,7 @@
; compute from DDR3, so the cell is a draft at 10 percent, a DELIVER step waiting for its review.
; Cell 26 has no review: its PR, #10248, merged without one, so it stays a draft.
; The engine asks an engineering LEARN step for a source link, a PRACTICE step for a passing test
; and a DELIVER step for a review. So: 3 published, 22 verified, 1 draft, 1 gap.
; and a DELIVER step for a review. So: 4 published, 22 verified, 1 draft, 0 gaps.

; PERCENT is a second, separate number per cell: an estimate of how much of that part exists, with
; its basis in SOURCES. It never feeds a status. The lens and overall figures are plain means, every
Expand All @@ -126,7 +144,7 @@
; and checkpoint layout now pass too, on a model slice and on bytes; heap and file I/O are t27
; (ml/arena_heap, ml/file_io_contract, ml/host_io_model) and `t27c --backend ml` lowers them to a
; binary that writes a real file, and to a training binary for one head slice
; (ml/train_slice_model); the STE and a training binary over the whole model are not done. A 100M ternary model is public; nothing past 100M parameters is.
; (ml/train_slice_model); the STE and a training binary over the whole model are not done. A 100M ternary model is public; a 0.5B ternary model is public too (1.2B tokens, weaker than the 100M one) and not yet reviewed.

; Not claimed: no model quality beyond the numbers in SOURCES; no GIF or MP4, stills only.
; phi^2 + 1/phi^2 = 3 | TRINITY
Expand Down Expand Up @@ -166,6 +184,10 @@ pub const CODER_COMMIT : str = "f60ac0c623e5ac24d74fdcde2dccb2d8e55e6d83";
pub const TRINITY_COMMIT : str = "ee512359254bcd7438bb6a79c8a4a7f8b554b620";
pub const TRAINING_COMMIT : str = "3e9648c1817a97c5f9b8c727b0f8e2291928eead";
pub const FPGA_COMMIT : str = "b2bd5a30cefe32eb7e57e9f2025626f6f0cf4b25";
/// igla-coder-gpu branch hf/card-tern-tc-500m: the commit whose card pins the 0.5B run (cell 9).
pub const CARD_500M_COMMIT : str = "510a22c7520df01e9c768b972ed79ae58eaadead";
/// playra/tern-tc-500m on Hugging Face: the commit that put the 0.5B release live (cell 9).
pub const HF_500M_COMMIT : str = "7f203b66d53459f8edcfbc5c39c0e0060914875f";
/// The realtime harness: the IGLA board's state endpoint, which trinity compiles in the browser.
pub const LIVE_STATE_URL : str = "https://board-production-2dec.up.railway.app/state";
pub const MEASURED_ON : str = "2026-10-17";
Expand Down Expand Up @@ -217,7 +239,7 @@ pub const SOURCES : [27]str = [
"t27 specs/igla/coder/*.t27: 9 of 9 compile",
"huggingface.co/playra/tern-tc-9m",
"huggingface.co/playra/tern-tc-100m, final.pt sha256 620c80b6...d08300",
"",
"igla-coder-gpu specs/hf/model_card_500m.t27: 0.5B ternary, 1.2B tokens, bpb 0.5307, final.pt sha256 e6925b7c...8c15bc",
"trinity docs/experiments/FOUND_EXPERIMENTS_SUMMARY.md",
"trinity-training src/hslm, 64 Zig files",
"trinity data/wave9/worker-2/hslm_step_10000.bin",
Expand All @@ -242,7 +264,7 @@ pub const SOURCES : [27]str = [
pub const MISSING : [27]str = [
"", "", "", "", "", "", "",
"",
"any run past 100M parameters: none exists",
"",
"", "", "", "", "", "", "",
"",
"",
Expand All @@ -254,21 +276,26 @@ pub const MISSING : [27]str = [
];

/// The measurements per cell (see the header for how each was taken).
pub const GROUNDED : [27]bool = [true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true];
pub const GROUNDED : [27]bool = [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true];
pub const TEST_PASS : [27]bool = [false, false, false, true, true, true, false, false, false, false, false, false, true, true, true, false, false, false, false, false, false, true, true, true, false, false, false];
pub const REVIEWED : [27]bool = [false, false, false, false, false, false, true, true, false, false, false, false, false, false, false, true, true, true, false, false, false, false, false, false, true, false, true];
pub const REVIEWED : [27]bool = [false, false, false, false, false, false, true, true, true, false, false, false, false, false, false, true, true, true, false, false, false, false, false, false, true, false, true];
/// The approving review behind REVIEWED: PR and review id on gHashTag/t27 (5561941493: t27-bees
/// APPROVE of 014a34d21, glm-4.7-flash and glm-4.5-flash independently, 2026-10-18 07:28 UTC).
pub const REVIEW_PR : i32 = 10275;
pub const REVIEW_ID : str = "5561941493";
pub const LIVE : [27]bool = [false, false, false, false, false, false, true, true, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false];
/// The review behind REVIEWED[8], cell 9: PR and review id on gHashTag/t27 (5563181513: t27-bees on
/// 88f47f32d, 2026-10-18 13:29 UTC, model verdict approve, posted as NEEDS_PERSON because the head
/// changes .trinity/seals and gen/json files; merged over that hold on the owner's instruction).
pub const REVIEW_500M_PR : i32 = 10428;
pub const REVIEW_500M_ID : str = "5563181513";
pub const LIVE : [27]bool = [false, false, false, false, false, false, true, true, true, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false];

/// What a host passes the viewer, per cell: the earned status code and the step number as a label.
pub const STATUS : [27]u8 = [4, 4, 4, 4, 4, 4, 5, 5, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 3, 4];
pub const STATUS : [27]u8 = [4, 4, 4, 4, 4, 4, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 3, 4];
pub const LABELS : [27]str = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27"];

/// Percent of each part that exists, estimated from its source (see the header). Never a status.
pub const PCT : [27]u8 = [60, 70, 80, 80, 60, 100, 50, 90, 0, 100, 100, 20, 80, 65, 95, 75, 55, 40, 70, 15, 60, 40, 100, 60, 30, 10, 50];
pub const PCT : [27]u8 = [60, 70, 80, 80, 60, 100, 50, 90, 30, 100, 100, 20, 80, 65, 95, 75, 55, 40, 70, 15, 60, 40, 100, 60, 30, 10, 50];

/// The t27c test-report counts the PRACTICE cells quote.
pub const ML_SPECS_MEASURED : i32 = 17;
Expand All @@ -293,8 +320,8 @@ pub const ROWS : [20]str = [
"In t27: loss, optimizers, HSLM pass",
"17 of 17 ML specs compile on the lab",
"9 of 9 IGLA CODER specs compile",
"3 published, 22 verified, 1 draft",
"1 gap, about 61 percent overall",
"4 published, 22 verified, 1 draft",
"0 gaps, about 62 percent overall",
"Batched f32 HSLM trainer",
"Shadow weights for the whole model",
"A whole-model training binary",
Expand Down Expand Up @@ -350,7 +377,7 @@ test every_step_is_a_cell {

test a_gap_is_named_not_filled {
assert gaps_are_named(SOURCES, MISSING, GROUNDED);
assert count_true(GROUNDED) == 26;
assert count_true(GROUNDED) == 27;
var c : i32 = 0;
while (c < CELL_COUNT) {
const i : usize = @intCast(c);
Expand All @@ -364,12 +391,12 @@ test a_gap_is_named_not_filled {

test a_status_is_earned_not_chosen {
assert statuses_earned(STATUS, DOMAIN, GROUNDED, TEST_PASS, REVIEWED, LIVE);
// the evidence slide's "3 published, 22 verified, 1 draft" and "1 gap"
assert count_status(STATUS, STATUS_PUBLISHED) == 3;
// the evidence slide's "4 published, 22 verified, 1 draft" and "0 gaps"
assert count_status(STATUS, STATUS_PUBLISHED) == 4;
assert count_status(STATUS, STATUS_VERIFIED) == 22;
assert count_status(STATUS, STATUS_DRAFT) == 1;
assert count_status(STATUS, STATUS_GAP) == 1;
assert count_true(REVIEWED) == 7;
assert count_status(STATUS, STATUS_GAP) == 0;
assert count_true(REVIEWED) == 8;
// every passing test is a PRACTICE step: the t27 bench, MultiPL-E and coder specs (cells 4 to
// 6), loss, optimizers, forward pass, matvec, the ML specs that compile (cell 23) and the
// file I/O t27c lowers (cell 24)
Expand Down Expand Up @@ -397,15 +424,18 @@ test a_status_is_earned_not_chosen {
assert LIVE[24] == false;
assert step_stage(24) == STAGE_DELIVER;
assert STATUS[24] == STATUS_VERIFIED;
// the board is live and was sourced: the third published cell
// the board is live and was sourced: a third published cell
assert STATUS[20] == STATUS_PUBLISHED;
}

test a_review_is_named_not_assumed {
// REVIEWED is true exactly at the grounded DELIVER cells PR REVIEW_PR put to review: every
// grounded DELIVER cell except step 26, whose evidence came in a PR with no review
// REVIEWED is true exactly at the grounded DELIVER cells put to review: the seven of PR
// REVIEW_PR, step 9 from PR REVIEW_500M_PR, and not step 26, whose evidence came in a PR with
// no review
assert REVIEW_PR == 10275;
assert REVIEW_ID.len > 0;
assert REVIEW_500M_PR == 10428;
assert REVIEW_500M_ID.len > 0;
var c : i32 = 0;
while (c < CELL_COUNT) {
const i : usize = @intCast(c);
Expand All @@ -416,10 +446,15 @@ test a_review_is_named_not_assumed {
assert REVIEWED[i] == want;
c = c + 1;
}
// the gap, step 9, is a DELIVER step with nothing to review
// step 9, the 0.5B run, is grounded by its model card (a full commit id) and live on Hugging
// Face (a full commit id), and reviewed in PR REVIEW_500M_PR: live and reviewed is published
assert CARD_500M_COMMIT.len == 40;
assert HF_500M_COMMIT.len == 40;
assert step_stage(8) == STAGE_DELIVER;
assert GROUNDED[8] == false;
assert REVIEWED[8] == false;
assert GROUNDED[8];
assert REVIEWED[8];
assert LIVE[8];
assert STATUS[8] == STATUS_PUBLISHED;
// step 26 is grounded but not reviewed, so it stays a draft
assert step_stage(25) == STAGE_DELIVER;
assert GROUNDED[25];
Expand Down Expand Up @@ -453,11 +488,11 @@ test the_compile_counts_are_the_measured_ones {
}

test percent_per_lens_is_a_plain_mean {
assert mean_pct(0, 9) == 65;
assert mean_pct(0, 9) == 68;
assert mean_pct(9, 9) == 70;
assert mean_pct(18, 9) == 48;
// the evidence slide's "about 61 percent overall"
assert mean_pct(0, CELL_COUNT) == 61;
// the evidence slide's "about 62 percent overall"
assert mean_pct(0, CELL_COUNT) == 62;
}

test the_training_step_cells_are_verified_once_reviewed {
Expand Down
Loading
Loading