From 9dc80f47d09eeb41b652ea9b1043a2cab99d20f9 Mon Sep 17 00:00:00 2001 From: Dmitrii Vasilev Date: Sun, 18 Oct 2026 18:28:10 +0700 Subject: [PATCH 1/5] igla cell 9: ground tern-tc-500m as a draft (Closes #10420) Cell 9 ("Scale-up to 0.5-1.5B") was the last gap of epic #10024. The 0.5B ternary run now exists: 512,881,920 parameters, 1.2B tokens, val bpb 0.5307, final.pt sha256 e6925b7c...8c15bc, all pinned by specs/hf/model_card_500m.t27 in gHashTag/igla-coder-gpu at 511c131. GROUNDED[8] true, SOURCES[8] names the card, MISSING[8] empty, STATUS[8] draft, PCT[8] 30. REVIEWED[8] and LIVE[8] stay false. Tally: 3 published, 22 verified, 2 drafts, 0 gaps; 62%. Lab: own_model 10/10, own_model_board 6/6, 0 vacuous. Negative control (STATUS[8]=4 without review) fails 2 tests. Both specs resealed. Co-Authored-By: Claude Opus 5.5 --- .trinity/seals/igla_own_model.json | 14 +++--- .trinity/seals/igla_own_model_board.json | 16 +++---- specs/igla/own_model.t27 | 60 ++++++++++++++++-------- specs/igla/own_model_board.t27 | 42 +++++++++-------- 4 files changed, 77 insertions(+), 55 deletions(-) diff --git a/.trinity/seals/igla_own_model.json b/.trinity/seals/igla_own_model.json index 6ee1451b5d..30851fb5d7 100644 --- a/.trinity/seals/igla_own_model.json +++ b/.trinity/seals/igla_own_model.json @@ -1,5 +1,5 @@ { - "built_by": "t27c-bootstrap@0.5.2+4ab200073", + "built_by": "t27c-bootstrap@0.5.2+9448ab4be", "closure": [ { "spec": "specs/t27f/reel.t27", @@ -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:4740fd487f0f6b63f3d0079e03a0c17bddb5281ee897a5a6c19fd8d8c77e8bea", + "gen_hash_rust": "sha256:03059c49a7b41158742509631983fb87f0f38cb58128b9fecf3baf847b5eecb7", + "gen_hash_verilog": "sha256:a41fb9e79c31654d2739feeecd4c03a174ecd9fc4d2860c80ed4f1278a69b038", + "gen_hash_zig": "sha256:e71facd75a3500056eaeb0e930d5d9c7cc96fa2c62d15de76f33b1610bbb9e18", "module": "own_model", "ring": 12, "seal_schema": 2, - "sealed_at": "2026-10-18T09:41:47Z", + "sealed_at": "2026-10-18T11:26:36Z", "sealed_by": "t27c-bootstrap@0.5.2", - "spec_hash": "sha256:f7471c56c57c69f08cc607d930968459f470372c17ed6eb75368b6c82a6245c2", + "spec_hash": "sha256:313cdb16b767c6b5e8aa7520e6a9c10bc04a51167bc9f71d0ac1509aac52f535", "spec_path": "specs/igla/own_model.t27", "tests": { "failed": 0, diff --git a/.trinity/seals/igla_own_model_board.json b/.trinity/seals/igla_own_model_board.json index 934c8a75a9..cd8c1a895a 100644 --- a/.trinity/seals/igla_own_model_board.json +++ b/.trinity/seals/igla_own_model_board.json @@ -1,9 +1,9 @@ { - "built_by": "t27c-bootstrap@0.5.2+4ab200073", + "built_by": "t27c-bootstrap@0.5.2+9448ab4be", "closure": [ { "spec": "specs/igla/own_model.t27", - "spec_hash": "sha256:f7471c56c57c69f08cc607d930968459f470372c17ed6eb75368b6c82a6245c2" + "spec_hash": "sha256:313cdb16b767c6b5e8aa7520e6a9c10bc04a51167bc9f71d0ac1509aac52f535" }, { "spec": "specs/t27f/reel.t27", @@ -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:bf9857ce4a617ec1b2f37030ba84bae725d2b0b135ad736310fe208d9b3e4a6e", + "gen_hash_rust": "sha256:94ed1324b95138cecf8a29343e2265e219667ed6cff959e04d35dd87e3b6e102", + "gen_hash_verilog": "sha256:7d19a48d6c0b36a7393a8a61082bff19abe70fa4e28077451b341668e8d836a6", + "gen_hash_zig": "sha256:18bb74e6f6a24275da7dcd84cf808afff963f09dc92e0817004caf522e5a3476", "module": "own_model_board", "ring": 12, "seal_schema": 2, - "sealed_at": "2026-10-18T09:41:48Z", + "sealed_at": "2026-10-18T11:26:37Z", "sealed_by": "t27c-bootstrap@0.5.2", - "spec_hash": "sha256:ba4e797ce2ea44fe5ea6265fb4c54bbbc8117cb914de18f9ff90bf0890109cbb", + "spec_hash": "sha256:8c82db3d83f3bd8d072022914f470ac391938e33074c75631acdb85ea3337603", "spec_path": "specs/igla/own_model_board.t27", "tests": { "failed": 0, diff --git a/specs/igla/own_model.t27 b/specs/igla/own_model.t27 index 2d9c5d8bc8..4c9eb9f054 100644 --- a/specs/igla/own_model.t27 +++ b/specs/igla/own_model.t27 @@ -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: @@ -90,6 +91,19 @@ ; 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. Not +; yet live: playra/tern-tc-500m is not uploaded (the release machine has no Hugging Face login). +; Evidence for a DELIVER step, so the cell is a draft at 30 percent until it is reviewed: one run +; at the low end of 0.5-1.5B, under-trained, and not public. ; - 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). ; GET board-production-2dec.up.railway.app/state returned 200 and a made-up path 404; its @@ -113,7 +127,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: 3 published, 22 verified, 2 drafts, 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 @@ -126,7 +140,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 trained (1.2B tokens, weaker than the 100M one) and not yet public. ; Not claimed: no model quality beyond the numbers in SOURCES; no GIF or MP4, stills only. ; phi^2 + 1/phi^2 = 3 | TRINITY @@ -166,6 +180,8 @@ 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 = "511c131fe4a1359b72932e61934c11dd8cccb327"; /// 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"; @@ -217,7 +233,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", @@ -242,7 +258,7 @@ pub const SOURCES : [27]str = [ pub const MISSING : [27]str = [ "", "", "", "", "", "", "", "", - "any run past 100M parameters: none exists", + "", "", "", "", "", "", "", "", "", "", @@ -254,7 +270,7 @@ 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]; /// The approving review behind REVIEWED: PR and review id on gHashTag/t27 (5561941493: t27-bees @@ -264,11 +280,11 @@ 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]; /// 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, 3, 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; @@ -293,8 +309,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", + "3 published, 22 verified, 2 drafts", + "0 gaps, about 62 percent overall", "Batched f32 HSLM trainer", "Shadow weights for the whole model", "A whole-model training binary", @@ -350,7 +366,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); @@ -364,11 +380,11 @@ 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" + // the evidence slide's "3 published, 22 verified, 2 drafts" and "0 gaps" assert count_status(STATUS, STATUS_PUBLISHED) == 3; assert count_status(STATUS, STATUS_VERIFIED) == 22; - assert count_status(STATUS, STATUS_DRAFT) == 1; - assert count_status(STATUS, STATUS_GAP) == 1; + assert count_status(STATUS, STATUS_DRAFT) == 2; + assert count_status(STATUS, STATUS_GAP) == 0; assert count_true(REVIEWED) == 7; // 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 @@ -403,23 +419,27 @@ test a_status_is_earned_not_chosen { 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 + // grounded DELIVER cell except step 9, whose evidence is new in this change and not yet + // reviewed, and step 26, whose evidence came in a PR with no review assert REVIEW_PR == 10275; assert REVIEW_ID.len > 0; var c : i32 = 0; while (c < CELL_COUNT) { const i : usize = @intCast(c); var want : bool = false; - if (step_stage(@intCast(c)) == STAGE_DELIVER and GROUNDED[i] and c != 25) { + if (step_stage(@intCast(c)) == STAGE_DELIVER and GROUNDED[i] and c != 8 and c != 25) { want = true; } 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 waits for a review: a draft + assert CARD_500M_COMMIT.len == 40; assert step_stage(8) == STAGE_DELIVER; - assert GROUNDED[8] == false; + assert GROUNDED[8]; assert REVIEWED[8] == false; + assert LIVE[8] == false; + assert STATUS[8] == STATUS_DRAFT; // step 26 is grounded but not reviewed, so it stays a draft assert step_stage(25) == STAGE_DELIVER; assert GROUNDED[25]; @@ -453,11 +473,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 { diff --git a/specs/igla/own_model_board.t27 b/specs/igla/own_model_board.t27 index 92f824a653..cf92f1836f 100644 --- a/specs/igla/own_model_board.t27 +++ b/specs/igla/own_model_board.t27 @@ -48,23 +48,23 @@ pub const LENS_CELLS : i32 = 9; pub const JOB : str = "own_model"; pub const STAGE : str = "own_model"; -pub const MSG : str = "3 published, 22 verified, 1 drafts, 1 gaps; 61%"; +pub const MSG : str = "3 published, 22 verified, 2 drafts, 0 gaps; 62%"; /// What MSG says once its numbers are taken out. pub const MSG_WORDS : str = " published, verified, drafts, gaps; %"; -pub const OVERALL_PCT : u8 = 61; -pub const PROGRESS : f64 = 0.61; +pub const OVERALL_PCT : u8 = 62; +pub const PROGRESS : f64 = 0.62; pub const KEY_LENS : str = "lens_pct"; pub const KEY_CELLS : str = "cells"; pub const KEY_STATUS : str = "status"; pub const KEY_PCT : str = "pct"; -pub const LENS_PCT : [3]u8 = [65, 70, 48]; -pub const CELL_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 CELL_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 LENS_PCT : [3]u8 = [68, 70, 48]; +pub const CELL_STATUS : [27]u8 = [4, 4, 4, 4, 4, 4, 5, 5, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 3, 4]; +pub const CELL_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 size of the compact metrics object, in bytes, computed from the keys and values above. -pub const METRICS_BYTES : i32 = 630; +pub const METRICS_BYTES : i32 = 631; pub fn is_digit(ch: u8) -> bool { return ch >= '0' and ch <= '9'; @@ -245,11 +245,13 @@ test a_gap_cell_is_never_above_zero_percent { assert CELL_PCT[i] <= 100; c = c + 1; } - // the run past 100M parameters, cell 8, is a gap: drawn at 10 percent it is refused - assert CELL_STATUS[8] == STATUS_GAP; - var wrong : [27]u8 = CELL_PCT; - wrong[8] = 10; - assert gaps_at_zero(CELL_STATUS, wrong) == false; + // no cell is a gap any more; the run past 100M parameters, cell 8, drawn as a gap at its + // 30 percent is refused + assert count_status(CELL_STATUS, STATUS_GAP) == 0; + assert CELL_STATUS[8] == STATUS_DRAFT; + var wrong : [27]u8 = CELL_STATUS; + wrong[8] = STATUS_GAP; + assert gaps_at_zero(wrong, CELL_PCT) == false; } test the_tally_sums_to_twenty_seven { @@ -262,8 +264,8 @@ test the_tally_sums_to_twenty_seven { assert published + verified + drafts + gaps == CELL_COUNT; assert published == 3; assert verified == 22; - assert drafts == 1; - assert gaps == 1; + assert drafts == 2; + assert gaps == 0; } test the_message_is_the_tally { @@ -273,12 +275,12 @@ test the_message_is_the_tally { const n : i32 = @intCast(MSG.len); assert n <= MSG_MAX; // one number wrong, a word changed, or a number added: each refused - assert msg_matches("3 published, 22 verified, 0 drafts, 1 gaps; 61%", STATUS, overall) == false; - assert msg_matches("3 published, 22 verified, 1 drafts, 1 holes; 61%", STATUS, overall) == false; - assert msg_matches("3 published, 22 verified, 1 drafts, 1 gaps; 61% of 100", STATUS, overall) == false; - assert msg_matches(MSG, STATUS, 60) == false; - assert nth_number(MSG, 2) == 1; - assert nth_number(MSG, 4) == 61; + assert msg_matches("3 published, 22 verified, 1 drafts, 0 gaps; 62%", STATUS, overall) == false; + assert msg_matches("3 published, 22 verified, 2 drafts, 0 holes; 62%", STATUS, overall) == false; + assert msg_matches("3 published, 22 verified, 2 drafts, 0 gaps; 62% of 100", STATUS, overall) == false; + assert msg_matches(MSG, STATUS, 61) == false; + assert nth_number(MSG, 2) == 2; + assert nth_number(MSG, 4) == 62; assert nth_number(MSG, 5) == -1; } From 9ae66dc0da9bce4c6553139be2dbb2c7e834407d Mon Sep 17 00:00:00 2001 From: Dmitrii Vasilev Date: Sun, 18 Oct 2026 18:58:56 +0700 Subject: [PATCH 2/5] igla cell 9: regenerate gen/json/igla/own_model_board.json from the grounded board spec (Closes #10420) t27c gen-json on the Railway lab; byte-identical to what spec-guards and L1 generate (754 bytes, 2 drafts, 0 gaps; 62%). Co-Authored-By: Claude Opus 5.5 --- gen/json/igla/own_model_board.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen/json/igla/own_model_board.json b/gen/json/igla/own_model_board.json index 441d3752c8..8fe10e100c 100644 --- a/gen/json/igla/own_model_board.json +++ b/gen/json/igla/own_model_board.json @@ -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":"3 published, 22 verified, 2 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":3,"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}]}} From 705899529843c70ae93f06c942a836acc07a9d98 Mon Sep 17 00:00:00 2001 From: Dmitrii Vasilev Date: Sun, 18 Oct 2026 19:31:50 +0700 Subject: [PATCH 3/5] igla cell 9: tern-tc-500m is live on Hugging Face -- LIVE[8] true, still a draft until reviewed (Closes #10420) playra/tern-tc-500m went up as Hugging Face commit 7f203b66 (HF_500M_COMMIT). final.pt there carries LFS sha256 e6925b7c...1d8c15bc, and the eight other files were fetched back at that commit and match the release machine byte for byte. GET /api/models/playra/tern-tc-500m returns 200. CARD_500M_COMMIT moves to igla-coder-gpu 510a22c7, whose card says STATUS published (12/12 on the lab, t27c ef7781b52). LIVE[8] turns true; REVIEWED[8] stays false, so earned_status keeps STATUS[8] a draft: live without review does not publish a DELIVER cell. Tally unchanged. Co-Authored-By: Claude Opus 5.5 --- specs/igla/own_model.t27 | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/specs/igla/own_model.t27 b/specs/igla/own_model.t27 index 4c9eb9f054..f2b26b9d04 100644 --- a/specs/igla/own_model.t27 +++ b/specs/igla/own_model.t27 @@ -100,12 +100,13 @@ ; 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. Not -; yet live: playra/tern-tc-500m is not uploaded (the release machine has no Hugging Face login). -; Evidence for a DELIVER step, so the cell is a draft at 30 percent until it is reviewed: one run -; at the low end of 0.5-1.5B, under-trained, and not public. +; 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. Evidence for a DELIVER step that is live but not reviewed, so the cell stays a +; draft at 30 percent until it is: 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). @@ -140,7 +141,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; a 0.5B ternary model is trained (1.2B tokens, weaker than the 100M one) and not yet public. +; (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 @@ -181,7 +182,9 @@ 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 = "511c131fe4a1359b72932e61934c11dd8cccb327"; +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"; @@ -277,7 +280,7 @@ pub const REVIEWED : [27]bool = [false, false, false, false, false, false, true, /// 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]; +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, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 3, 4]; @@ -433,12 +436,14 @@ test a_review_is_named_not_assumed { assert REVIEWED[i] == want; c = c + 1; } - // step 9, the 0.5B run, is grounded by its model card (a full commit id) and waits for a review: a draft + // 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), but waits for a review: live without review stays a draft assert CARD_500M_COMMIT.len == 40; + assert HF_500M_COMMIT.len == 40; assert step_stage(8) == STAGE_DELIVER; assert GROUNDED[8]; assert REVIEWED[8] == false; - assert LIVE[8] == false; + assert LIVE[8]; assert STATUS[8] == STATUS_DRAFT; // step 26 is grounded but not reviewed, so it stays a draft assert step_stage(25) == STAGE_DELIVER; From 6b3e92e34e63d43ebecdefbb835fdae59c7b8bc2 Mon Sep 17 00:00:00 2001 From: Dmitrii Vasilev Date: Sun, 18 Oct 2026 19:34:30 +0700 Subject: [PATCH 4/5] igla cell 9: reseal own_model and own_model_board after LIVE[8] (Closes #10420) Lab, t27c fd332dfd5 (reproduces the saved board seal byte for byte), zig 0.16.0: own_model 10/10, own_model_board 6/6; with LIVE[8] put back to false one test fails (a_review_is_named_not_assumed). gen-json of own_model_board is unchanged. Co-Authored-By: Claude Opus 5.5 --- .trinity/seals/igla_own_model.json | 14 +++++++------- .trinity/seals/igla_own_model_board.json | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.trinity/seals/igla_own_model.json b/.trinity/seals/igla_own_model.json index 30851fb5d7..9bfa0bf4f0 100644 --- a/.trinity/seals/igla_own_model.json +++ b/.trinity/seals/igla_own_model.json @@ -1,5 +1,5 @@ { - "built_by": "t27c-bootstrap@0.5.2+9448ab4be", + "built_by": "t27c-bootstrap@0.5.2+fd332dfd5", "closure": [ { "spec": "specs/t27f/reel.t27", @@ -15,16 +15,16 @@ } ], "config": "gen=c,rust,verilog,zig;tests=zig", - "gen_hash_c": "sha256:4740fd487f0f6b63f3d0079e03a0c17bddb5281ee897a5a6c19fd8d8c77e8bea", - "gen_hash_rust": "sha256:03059c49a7b41158742509631983fb87f0f38cb58128b9fecf3baf847b5eecb7", - "gen_hash_verilog": "sha256:a41fb9e79c31654d2739feeecd4c03a174ecd9fc4d2860c80ed4f1278a69b038", - "gen_hash_zig": "sha256:e71facd75a3500056eaeb0e930d5d9c7cc96fa2c62d15de76f33b1610bbb9e18", + "gen_hash_c": "sha256:0833adb2e08b70a438743ad1b0506abd41b735730c60215289556a054581b0d9", + "gen_hash_rust": "sha256:552dccc6571ed9c1eb69715377eaef8f932b8d704bd86ca59aa530bc76df986b", + "gen_hash_verilog": "sha256:452e61f47c273ce82fc419dfc2605ae93b5a2d7fb43f18d1568022c18577b510", + "gen_hash_zig": "sha256:63e6e4f9265aed322a1fbc931b795086b6031d0bbe4b0f09333ae44b08cadd91", "module": "own_model", "ring": 12, "seal_schema": 2, - "sealed_at": "2026-10-18T11:26:36Z", + "sealed_at": "2026-10-18T12:33:56Z", "sealed_by": "t27c-bootstrap@0.5.2", - "spec_hash": "sha256:313cdb16b767c6b5e8aa7520e6a9c10bc04a51167bc9f71d0ac1509aac52f535", + "spec_hash": "sha256:89cb12f9c0229c4dcca1ff1b233dd4c5ff2cce9c6afce29a9431450951a799a4", "spec_path": "specs/igla/own_model.t27", "tests": { "failed": 0, diff --git a/.trinity/seals/igla_own_model_board.json b/.trinity/seals/igla_own_model_board.json index cd8c1a895a..a6f5228aa9 100644 --- a/.trinity/seals/igla_own_model_board.json +++ b/.trinity/seals/igla_own_model_board.json @@ -1,9 +1,9 @@ { - "built_by": "t27c-bootstrap@0.5.2+9448ab4be", + "built_by": "t27c-bootstrap@0.5.2+fd332dfd5", "closure": [ { "spec": "specs/igla/own_model.t27", - "spec_hash": "sha256:313cdb16b767c6b5e8aa7520e6a9c10bc04a51167bc9f71d0ac1509aac52f535" + "spec_hash": "sha256:89cb12f9c0229c4dcca1ff1b233dd4c5ff2cce9c6afce29a9431450951a799a4" }, { "spec": "specs/t27f/reel.t27", @@ -26,7 +26,7 @@ "module": "own_model_board", "ring": 12, "seal_schema": 2, - "sealed_at": "2026-10-18T11:26:37Z", + "sealed_at": "2026-10-18T12:33:59Z", "sealed_by": "t27c-bootstrap@0.5.2", "spec_hash": "sha256:8c82db3d83f3bd8d072022914f470ac391938e33074c75631acdb85ea3337603", "spec_path": "specs/igla/own_model_board.t27", From ae4e7490b7650c72af0dcf28cafab67e2e2916a1 Mon Sep 17 00:00:00 2001 From: Dmitrii Vasilev Date: Sun, 18 Oct 2026 20:34:43 +0700 Subject: [PATCH 5/5] igla cell 9: REVIEWED[8] names review 5563181513 -- tern-tc-500m is published (Closes #10420) REVIEW_500M_PR 10428 and REVIEW_500M_ID 5563181513: 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; the spec says so in the doc comment. Live and reviewed, cell 9 earns published: the tally is 4 published, 22 verified, 1 draft, 0 gaps; the overall percent stays 62 (PCT[8] is still 30). Lab (t27c fd332dfd5): own_model 10/10, own_model_board 6/6, 0 vacuous. Negative control: REVIEWED[8] false fails 2 tests. Both seals resaved and MATCH; gen/json/igla/own_model_board.json regenerated by gen-json. Co-Authored-By: Claude Opus 5.5 --- .trinity/seals/igla_own_model.json | 12 +++---- .trinity/seals/igla_own_model_board.json | 14 ++++---- gen/json/igla/own_model_board.json | 2 +- specs/igla/own_model.t27 | 46 ++++++++++++++---------- specs/igla/own_model_board.t27 | 18 +++++----- 5 files changed, 51 insertions(+), 41 deletions(-) diff --git a/.trinity/seals/igla_own_model.json b/.trinity/seals/igla_own_model.json index 9bfa0bf4f0..74393654fd 100644 --- a/.trinity/seals/igla_own_model.json +++ b/.trinity/seals/igla_own_model.json @@ -15,16 +15,16 @@ } ], "config": "gen=c,rust,verilog,zig;tests=zig", - "gen_hash_c": "sha256:0833adb2e08b70a438743ad1b0506abd41b735730c60215289556a054581b0d9", - "gen_hash_rust": "sha256:552dccc6571ed9c1eb69715377eaef8f932b8d704bd86ca59aa530bc76df986b", - "gen_hash_verilog": "sha256:452e61f47c273ce82fc419dfc2605ae93b5a2d7fb43f18d1568022c18577b510", - "gen_hash_zig": "sha256:63e6e4f9265aed322a1fbc931b795086b6031d0bbe4b0f09333ae44b08cadd91", + "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-18T12:33:56Z", + "sealed_at": "2026-10-18T13:33:41Z", "sealed_by": "t27c-bootstrap@0.5.2", - "spec_hash": "sha256:89cb12f9c0229c4dcca1ff1b233dd4c5ff2cce9c6afce29a9431450951a799a4", + "spec_hash": "sha256:2c3daec9e62ce9123e19cad921e57af75beb25a1870c234230ae5505a7d7ac79", "spec_path": "specs/igla/own_model.t27", "tests": { "failed": 0, diff --git a/.trinity/seals/igla_own_model_board.json b/.trinity/seals/igla_own_model_board.json index a6f5228aa9..20c6c66218 100644 --- a/.trinity/seals/igla_own_model_board.json +++ b/.trinity/seals/igla_own_model_board.json @@ -3,7 +3,7 @@ "closure": [ { "spec": "specs/igla/own_model.t27", - "spec_hash": "sha256:89cb12f9c0229c4dcca1ff1b233dd4c5ff2cce9c6afce29a9431450951a799a4" + "spec_hash": "sha256:2c3daec9e62ce9123e19cad921e57af75beb25a1870c234230ae5505a7d7ac79" }, { "spec": "specs/t27f/reel.t27", @@ -19,16 +19,16 @@ } ], "config": "gen=c,rust,verilog,zig;tests=zig", - "gen_hash_c": "sha256:bf9857ce4a617ec1b2f37030ba84bae725d2b0b135ad736310fe208d9b3e4a6e", - "gen_hash_rust": "sha256:94ed1324b95138cecf8a29343e2265e219667ed6cff959e04d35dd87e3b6e102", - "gen_hash_verilog": "sha256:7d19a48d6c0b36a7393a8a61082bff19abe70fa4e28077451b341668e8d836a6", - "gen_hash_zig": "sha256:18bb74e6f6a24275da7dcd84cf808afff963f09dc92e0817004caf522e5a3476", + "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-18T12:33:59Z", + "sealed_at": "2026-10-18T13:33:45Z", "sealed_by": "t27c-bootstrap@0.5.2", - "spec_hash": "sha256:8c82db3d83f3bd8d072022914f470ac391938e33074c75631acdb85ea3337603", + "spec_hash": "sha256:69e4e67d00d0a17aed8d5e9ed45d7c745c970d069388db37f7835ff39179adae", "spec_path": "specs/igla/own_model_board.t27", "tests": { "failed": 0, diff --git a/gen/json/igla/own_model_board.json b/gen/json/igla/own_model_board.json index 8fe10e100c..4303344605 100644 --- a/gen/json/igla/own_model_board.json +++ b/gen/json/igla/own_model_board.json @@ -1 +1 @@ -{"job":"own_model","stage":"own_model","msg":"3 published, 22 verified, 2 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":3,"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}]}} +{"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}]}} diff --git a/specs/igla/own_model.t27 b/specs/igla/own_model.t27 index f2b26b9d04..4bde11faa8 100644 --- a/specs/igla/own_model.t27 +++ b/specs/igla/own_model.t27 @@ -103,8 +103,11 @@ ; 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. Evidence for a DELIVER step that is live but not reviewed, so the cell stays a -; draft at 30 percent until it is: one run at the low end of 0.5-1.5B, under-trained. +; 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 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 @@ -128,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, 2 drafts, 0 gaps. +; 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 @@ -275,15 +278,20 @@ 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, 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"; +/// 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, 3, 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. @@ -312,7 +320,7 @@ 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, 2 drafts", + "4 published, 22 verified, 1 draft", "0 gaps, about 62 percent overall", "Batched f32 HSLM trainer", "Shadow weights for the whole model", @@ -383,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, 2 drafts" and "0 gaps" - 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) == 2; + assert count_status(STATUS, STATUS_DRAFT) == 1; assert count_status(STATUS, STATUS_GAP) == 0; - assert count_true(REVIEWED) == 7; + 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) @@ -416,35 +424,37 @@ 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 9, whose evidence is new in this change and not yet - // reviewed, and 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); var want : bool = false; - if (step_stage(@intCast(c)) == STAGE_DELIVER and GROUNDED[i] and c != 8 and c != 25) { + if (step_stage(@intCast(c)) == STAGE_DELIVER and GROUNDED[i] and c != 25) { want = true; } assert REVIEWED[i] == want; c = c + 1; } // 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), but waits for a review: live without review stays a draft + // 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]; - assert REVIEWED[8] == false; + assert REVIEWED[8]; assert LIVE[8]; - assert STATUS[8] == STATUS_DRAFT; + 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]; diff --git a/specs/igla/own_model_board.t27 b/specs/igla/own_model_board.t27 index cf92f1836f..451fbe3164 100644 --- a/specs/igla/own_model_board.t27 +++ b/specs/igla/own_model_board.t27 @@ -48,7 +48,7 @@ pub const LENS_CELLS : i32 = 9; pub const JOB : str = "own_model"; pub const STAGE : str = "own_model"; -pub const MSG : str = "3 published, 22 verified, 2 drafts, 0 gaps; 62%"; +pub const MSG : str = "4 published, 22 verified, 1 drafts, 0 gaps; 62%"; /// What MSG says once its numbers are taken out. pub const MSG_WORDS : str = " published, verified, drafts, gaps; %"; pub const OVERALL_PCT : u8 = 62; @@ -60,7 +60,7 @@ pub const KEY_STATUS : str = "status"; pub const KEY_PCT : str = "pct"; pub const LENS_PCT : [3]u8 = [68, 70, 48]; -pub const CELL_STATUS : [27]u8 = [4, 4, 4, 4, 4, 4, 5, 5, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 3, 4]; +pub const CELL_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 CELL_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 size of the compact metrics object, in bytes, computed from the keys and values above. @@ -248,7 +248,7 @@ test a_gap_cell_is_never_above_zero_percent { // no cell is a gap any more; the run past 100M parameters, cell 8, drawn as a gap at its // 30 percent is refused assert count_status(CELL_STATUS, STATUS_GAP) == 0; - assert CELL_STATUS[8] == STATUS_DRAFT; + assert CELL_STATUS[8] == STATUS_PUBLISHED; var wrong : [27]u8 = CELL_STATUS; wrong[8] = STATUS_GAP; assert gaps_at_zero(wrong, CELL_PCT) == false; @@ -262,9 +262,9 @@ test the_tally_sums_to_twenty_seven { assert count_status(CELL_STATUS, STATUS_LOCKED) == 0; assert count_status(CELL_STATUS, STATUS_OPEN) == 0; assert published + verified + drafts + gaps == CELL_COUNT; - assert published == 3; + assert published == 4; assert verified == 22; - assert drafts == 2; + assert drafts == 1; assert gaps == 0; } @@ -275,11 +275,11 @@ test the_message_is_the_tally { const n : i32 = @intCast(MSG.len); assert n <= MSG_MAX; // one number wrong, a word changed, or a number added: each refused - assert msg_matches("3 published, 22 verified, 1 drafts, 0 gaps; 62%", STATUS, overall) == false; - assert msg_matches("3 published, 22 verified, 2 drafts, 0 holes; 62%", STATUS, overall) == false; - assert msg_matches("3 published, 22 verified, 2 drafts, 0 gaps; 62% of 100", STATUS, overall) == false; + assert msg_matches("4 published, 22 verified, 2 drafts, 0 gaps; 62%", STATUS, overall) == false; + assert msg_matches("4 published, 22 verified, 1 drafts, 0 holes; 62%", STATUS, overall) == false; + assert msg_matches("4 published, 22 verified, 1 drafts, 0 gaps; 62% of 100", STATUS, overall) == false; assert msg_matches(MSG, STATUS, 61) == false; - assert nth_number(MSG, 2) == 2; + assert nth_number(MSG, 2) == 1; assert nth_number(MSG, 4) == 62; assert nth_number(MSG, 5) == -1; }