From 3c717d8d284ff541d0a501f5d26b11de3be1c4d4 Mon Sep 17 00:00:00 2001 From: Dmitrii Vasilev Date: Mon, 19 Oct 2026 18:37:25 +0700 Subject: [PATCH] t27b ledger steward: record that a run states only the specs of its commit; pin run 2520ee1a5 (Closes #11017) The unlisted analog_cell_ax7203 row on #10752 is a tip race, not a reference disagreement: the lab judged 2520ee1a5, master took the spec in b94c869d2 37 minutes later, and the PR branch was cut one minute after that. The steward rule is correct, so no behaviour changes. The spec now says so, and a test pins run 2520ee1a5 (four rows applied, one timeout refused, nothing for the later spec). Seal refreshed by t27c on the lab. Co-Authored-By: Claude Sonnet 5.5 --- .trinity/seals/t27b_T27bLedgerSteward.json | 20 +++++++-------- specs/tri/t27b/ledger_steward.t27 | 29 ++++++++++++++++++++++ 2 files changed, 39 insertions(+), 10 deletions(-) diff --git a/.trinity/seals/t27b_T27bLedgerSteward.json b/.trinity/seals/t27b_T27bLedgerSteward.json index caeba23233..e94819d124 100644 --- a/.trinity/seals/t27b_T27bLedgerSteward.json +++ b/.trinity/seals/t27b_T27bLedgerSteward.json @@ -1,5 +1,5 @@ { - "built_by": "t27c-bootstrap@0.5.2+063da049b", + "built_by": "t27c-bootstrap@0.5.2+9448ab4be", "closure": [ { "spec": "specs/tri/t27b/steward.t27", @@ -7,27 +7,27 @@ } ], "config": "gen=c,rust,verilog,zig;tests=zig", - "gen_hash_c": "sha256:7f6f95d85401dbb6dbaa7786ebc835a79450218b97ee0e9fa35a066805841e04", - "gen_hash_rust": "sha256:b002afd8a8e09a735fc529b7fde408eec6234131409a67812facd05a45670a31", - "gen_hash_verilog": "sha256:6c380f5e56877102b97dd5e81447238ef664b32598cafba68c3ee45fcafcb798", - "gen_hash_zig": "sha256:07cdd78d6c7a7380a47e7ebbb1047ad8645cf6670349f77af069ad317ef73621", + "gen_hash_c": "sha256:becd7f62aa56e34cf683608403563d674874423cddf741e2b9932749d71bf33c", + "gen_hash_rust": "sha256:d079237a1a807dceb37d6cf0154eac7551345bf65ead4f441b3deba0b4999b6e", + "gen_hash_verilog": "sha256:217a0e713f35c255769e0834f9f09fa31dd92bef12fc847a344cabcd8c8bc10b", + "gen_hash_zig": "sha256:5654e6fc2055335e4e44042f819337dd922f8b4dccd1150df693acdbe6f4aae8", "module": "T27bLedgerSteward", "ring": 12, "seal_schema": 2, - "sealed_at": "2026-10-18T03:55:24Z", + "sealed_at": "2026-10-19T11:37:03Z", "sealed_by": "t27c-bootstrap@0.5.2", - "spec_hash": "sha256:731eca094910d21ec239964b4df2f4e9890babd1d53395d000440df283b3c8b3", + "spec_hash": "sha256:901c576c4cb4fa673d47180b8f3dee27c6a09f9f9d4d6356d0d95a13178e30c5", "spec_path": "specs/tri/t27b/ledger_steward.t27", "tests": { "failed": 0, "failing": [], "forced": false, - "passed": 11, - "total": 11, + "passed": 12, + "total": 12, "vacuous": 0 }, "toolchain": { - "test_runner": "sha256:1982ae948e24d00c5d221ccec12dfce1eb01204b53e37b0f857f93b16d64629d", + "test_runner": "sha256:8512b80da533b79289110fca4a65f3336abd7a059ca4b72ea595d5e33ff8ad10", "zig": "0.16.0" } } \ No newline at end of file diff --git a/specs/tri/t27b/ledger_steward.t27 b/specs/tri/t27b/ledger_steward.t27 index 26733c277c..7e2397363c 100644 --- a/specs/tri/t27b/ledger_steward.t27 +++ b/specs/tri/t27b/ledger_steward.t27 @@ -29,6 +29,15 @@ ; two or three rows (rust_convert, trios-mesh-node crypto, emit_kit) while about 250 safe rows waited ; and sessions wrote them into the ledger by hand 17 times in a day. A run with nothing to apply but a ; refused finding is still refused, and a stale flood or a cap rise still refuses the whole run. +; A run states the specs of ITS commit, and nothing newer (#11017). The lab takes about 25 minutes per +; run and the PR it earns is cut from master's tip when the job opens it, so a spec that lands in +; between has no finding in the run, and the PR's ratchet names it UNLISTED although the steward +; judged its commit rightly: run 2520ee1a5 (tree of 2323 specs, zig 0.16.0 as on CI) gave #10752 five +; findings and none for specs/fpga/analog_cell_ax7203.t27, which master took in b94c869d2 (#10578), +; 37 minutes after 2520ee1a5 and 1 minute before the PR branch was cut. That row is the NEXT run's. +; The steward does not chase the tip: skipping a run because master moved would starve it, since +; master moves faster than a run. Closing that gap is a gate on spec PRs (a row with the spec), not a +; rule here. ; Codes are steward.t27's; the invariant at the end checks the numbering against its entry_code. ; ASCII only (L3). ; phi^2 + 1/phi^2 = 3 | TRINITY @@ -285,6 +294,26 @@ test batch_8646_nine_rows_one_codegen { assert effect_wanted(RV_APPLY, EF_REFUSAL_ISSUE) == false; } +test run_2520ee1a5_applies_four_rows_and_refuses_one_timeout { + // #10752, lab verdict APPLY {"refused":1,"applied":4,"new_not_pass":2}: UNEXPECTED FAILURE 1 + // (suggest_feed, ledger pass, now timeout), UNLISTED 4 (two pass, deps_card and why_card blocked). + // No finding names analog_cell_ax7203: master took it after this run's commit (#11017). + var refused : u32 = tally_refused(0, RC_UNEXPECTED_FAILURE, T_TIMEOUT, 1); + refused = tally_refused(refused, RC_UNLISTED, T_PASS, 2); + refused = tally_refused(refused, RC_UNLISTED, T_BLOCKED, 2); + var applied : u32 = tally_applied(0, RC_UNEXPECTED_FAILURE, T_TIMEOUT, 1); + applied = tally_applied(applied, RC_UNLISTED, T_PASS, 2); + applied = tally_applied(applied, RC_UNLISTED, T_BLOCKED, 2); + var fresh : u32 = tally_new_not_pass(0, RC_UNLISTED, T_PASS, 2); + fresh = tally_new_not_pass(fresh, RC_UNLISTED, T_BLOCKED, 2); + assert refused == 1; + assert applied == 4; + assert fresh == 2; + assert refusal_reason(RC_UNEXPECTED_FAILURE, T_TIMEOUT) == RR_REGRESSION; + assert run_verdict(run_stewardable(true, true, true), refused, applied, 0, true) == RV_APPLY; + assert effect_wanted(RV_APPLY, EF_REFUSAL_ISSUE) == false; +} + test batch_8548_is_refused_for_its_two_failures { // #8548, run c9d36f314: UNLISTED 8 (6 pass, claude_md and trinity_tokenizer blocked), UNEXPECTED // PASS 44 (pass_vacuous -> pass), STALE 4, UNEXPECTED FAILURE 2 (ternary_gates and