diff --git a/.claude/skills/ci-gates/SKILL.md b/.claude/skills/ci-gates/SKILL.md index 21a20167e3..a38736cb19 100644 --- a/.claude/skills/ci-gates/SKILL.md +++ b/.claude/skills/ci-gates/SKILL.md @@ -9086,3 +9086,39 @@ looked, and I looked while chasing something else. **A count you wrote while working on another problem is a sample, not a census.** Re-enumerate before building on it. + +## 363. The census names the first occurrence, not the population + +Two rows in the work queue needed no owner decision: a closing brace with +nothing open (4 specs) and a statement terminated twice (2). Fixing the line the +census pointed at moved each error a few lines forward and recovered **nothing** +-- because the same typo repeats. + +Fixing every occurrence of the SAME form: pubsub 2, mac_tb 6, uart_tb 5. All +three parse. 615 -> 618 specs. + +**A census points at one instance per file, because that is all the compiler +reports.** After the first repair, ask whether the form recurs before concluding +the file needs something else. + +## 364. Two edits withdrawn + +`hybrid_arithmetic.t27` and `relay_observer.t27` took the same repair, advanced +by seven lines each, and still do not parse -- they hit a different construct. +The edits also made their seals STALE, and `check_seal_coverage.py` went red. + +Reverted. An edit that buys no measurable change and costs a re-seal is not a +repair, and carrying it into the PR would have traded a green gate for nothing. + +The tell was the gate, not my judgement: I would have shipped those two. + +## 365. The guard that refused, correctly + +`tri ledgers audit` reported red mid-iteration -- because a ledger had +uncommitted changes and the command refuses to run in that state, since it +rewrites and restores what it touches. + +That is the guard working, not a defect, and it is worth stating in a report +rather than quietly re-running later: **a tool that refuses is not the same as a +tool that fails**, and a summary that lists both as RED is one line away from +being wrong. diff --git a/.trinity/seals/MAC_Testbench.json b/.trinity/seals/MAC_Testbench.json index 653ed265f7..b8dcd1e2a8 100644 --- a/.trinity/seals/MAC_Testbench.json +++ b/.trinity/seals/MAC_Testbench.json @@ -1,11 +1,11 @@ { - "gen_hash_c": "none", - "gen_hash_rust": "none", - "gen_hash_verilog": "none", - "gen_hash_zig": "none", + "gen_hash_c": "sha256:218e4b3d7c71ce53319f827d12348cc5b5686af821a096d8ae845a24e14af10a", + "gen_hash_rust": "sha256:29f39ed5f82681d2ec52fb8fb190db67d81f9e6194db0c9bab1349688d55ea17", + "gen_hash_verilog": "sha256:85a771ac9b82d59dc7ffd9e310e7cbddc5566a0e82357d93d299aa38725b16d6", + "gen_hash_zig": "sha256:0bfc14b17d207d49e2c70f68c49abe5395cf8fd383232f7ec7b6b14a9dc1b911", "module": "MAC_Testbench", "ring": 12, "sealed_at": "2026-08-28T00:21:37Z", - "spec_hash": "sha256:4717da276ff7317cd27f2a565069b7e52f086975abcd2a82cde6419d9d464a89", + "spec_hash": "sha256:af060b6e5cdb2ffe1de0a47995b2c621139367174cf85237d8217aa929af10f7", "spec_path": "specs/fpga/testbench/mac_tb.t27" } diff --git a/.trinity/seals/UART_Testbench.json b/.trinity/seals/UART_Testbench.json index 598e2e1509..1fa2bf30f6 100644 --- a/.trinity/seals/UART_Testbench.json +++ b/.trinity/seals/UART_Testbench.json @@ -1,11 +1,11 @@ { - "gen_hash_c": "none", - "gen_hash_rust": "none", - "gen_hash_verilog": "none", - "gen_hash_zig": "none", + "gen_hash_c": "sha256:160c467289a2176b57b2e70cd2004bb9e42d88c2d7d1a53f685d64e8972785bc", + "gen_hash_rust": "sha256:2f2f64388abb02e8dfff9e8727e9856ac60615f5571247fa889ff8da5bf791a1", + "gen_hash_verilog": "sha256:d78a8cf66594934278057aa96d438c038d93cce08a39c7c0ff73af15e3c09430", + "gen_hash_zig": "sha256:4b4597c7179db7541e8b8ff768cd70ddaa6a0a94ca6d65a4e031cdf57dbafafe", "module": "UART_Testbench", "ring": 12, "sealed_at": "2026-08-28T00:21:37Z", - "spec_hash": "sha256:ec468f4f302a4feb9b3ec4d1f7a29f5f76353c6dbc4c5456d9a29f7ca8bfa08f", + "spec_hash": "sha256:bcdf9d0b6752e6bf13d1bbd5114f9531f8f31b06ec9bb817aa192f8d918010ad", "spec_path": "specs/fpga/testbench/uart_tb.t27" } diff --git a/.trinity/seals/bus-pubsub.json b/.trinity/seals/bus-pubsub.json index 4bd03119da..4daa3527b1 100644 --- a/.trinity/seals/bus-pubsub.json +++ b/.trinity/seals/bus-pubsub.json @@ -1,11 +1,11 @@ { - "gen_hash_c": "none", - "gen_hash_rust": "none", - "gen_hash_verilog": "none", - "gen_hash_zig": "none", + "gen_hash_c": "sha256:279a865bd9933889ffa9ea3207effad4cfaafc8db0aa5d2cca9e99def4587203", + "gen_hash_rust": "sha256:7b53af2eecc3b5893f95bdf4b48a687ce69601fde9d966e8d50f78101ba47b8f", + "gen_hash_verilog": "sha256:cbf977fc76e2de2ae0bad6495c8359ca9d6166a3578f495260d5b2c62621f202", + "gen_hash_zig": "sha256:412b35971c2ce885b5de7392281eb6f3c11595e89a056e74ba6656150942e1e5", "module": "bus-pubsub", "ring": 12, "sealed_at": "2026-08-28T00:22:25Z", - "spec_hash": "sha256:c796df935c9b483af021d3805456b7c8370eb781a07159ec56f48a5c64e7919d", + "spec_hash": "sha256:7f2793c56bd3d880115c90604b5dbf1fa7f130d30c6065df06a364290ef10b9b", "spec_path": "specs/bus/pubsub.t27" } diff --git a/.trinity/seals/bus_bus-pubsub.json b/.trinity/seals/bus_bus-pubsub.json index 4bd03119da..b29a03a6e7 100644 --- a/.trinity/seals/bus_bus-pubsub.json +++ b/.trinity/seals/bus_bus-pubsub.json @@ -1,11 +1,12 @@ { - "gen_hash_c": "none", - "gen_hash_rust": "none", - "gen_hash_verilog": "none", - "gen_hash_zig": "none", + "gen_hash_c": "sha256:279a865bd9933889ffa9ea3207effad4cfaafc8db0aa5d2cca9e99def4587203", + "gen_hash_rust": "sha256:7b53af2eecc3b5893f95bdf4b48a687ce69601fde9d966e8d50f78101ba47b8f", + "gen_hash_verilog": "sha256:cbf977fc76e2de2ae0bad6495c8359ca9d6166a3578f495260d5b2c62621f202", + "gen_hash_zig": "sha256:412b35971c2ce885b5de7392281eb6f3c11595e89a056e74ba6656150942e1e5", "module": "bus-pubsub", "ring": 12, - "sealed_at": "2026-08-28T00:22:25Z", - "spec_hash": "sha256:c796df935c9b483af021d3805456b7c8370eb781a07159ec56f48a5c64e7919d", + "sealed_at": "2026-08-29T23:52:04Z", + "sealed_by": "t27c-bootstrap@0.2.0", + "spec_hash": "sha256:7f2793c56bd3d880115c90604b5dbf1fa7f130d30c6065df06a364290ef10b9b", "spec_path": "specs/bus/pubsub.t27" -} +} \ No newline at end of file diff --git a/.trinity/seals/testbench_MAC_Testbench.json b/.trinity/seals/testbench_MAC_Testbench.json index 653ed265f7..268abe032c 100644 --- a/.trinity/seals/testbench_MAC_Testbench.json +++ b/.trinity/seals/testbench_MAC_Testbench.json @@ -1,11 +1,12 @@ { - "gen_hash_c": "none", - "gen_hash_rust": "none", - "gen_hash_verilog": "none", - "gen_hash_zig": "none", + "gen_hash_c": "sha256:218e4b3d7c71ce53319f827d12348cc5b5686af821a096d8ae845a24e14af10a", + "gen_hash_rust": "sha256:29f39ed5f82681d2ec52fb8fb190db67d81f9e6194db0c9bab1349688d55ea17", + "gen_hash_verilog": "sha256:85a771ac9b82d59dc7ffd9e310e7cbddc5566a0e82357d93d299aa38725b16d6", + "gen_hash_zig": "sha256:0bfc14b17d207d49e2c70f68c49abe5395cf8fd383232f7ec7b6b14a9dc1b911", "module": "MAC_Testbench", "ring": 12, - "sealed_at": "2026-08-28T00:21:37Z", - "spec_hash": "sha256:4717da276ff7317cd27f2a565069b7e52f086975abcd2a82cde6419d9d464a89", + "sealed_at": "2026-08-29T23:52:04Z", + "sealed_by": "t27c-bootstrap@0.2.0", + "spec_hash": "sha256:af060b6e5cdb2ffe1de0a47995b2c621139367174cf85237d8217aa929af10f7", "spec_path": "specs/fpga/testbench/mac_tb.t27" -} +} \ No newline at end of file diff --git a/.trinity/seals/testbench_UART_Testbench.json b/.trinity/seals/testbench_UART_Testbench.json index 598e2e1509..0535b2e3a6 100644 --- a/.trinity/seals/testbench_UART_Testbench.json +++ b/.trinity/seals/testbench_UART_Testbench.json @@ -1,11 +1,12 @@ { - "gen_hash_c": "none", - "gen_hash_rust": "none", - "gen_hash_verilog": "none", - "gen_hash_zig": "none", + "gen_hash_c": "sha256:160c467289a2176b57b2e70cd2004bb9e42d88c2d7d1a53f685d64e8972785bc", + "gen_hash_rust": "sha256:2f2f64388abb02e8dfff9e8727e9856ac60615f5571247fa889ff8da5bf791a1", + "gen_hash_verilog": "sha256:d78a8cf66594934278057aa96d438c038d93cce08a39c7c0ff73af15e3c09430", + "gen_hash_zig": "sha256:4b4597c7179db7541e8b8ff768cd70ddaa6a0a94ca6d65a4e031cdf57dbafafe", "module": "UART_Testbench", "ring": 12, - "sealed_at": "2026-08-28T00:21:37Z", - "spec_hash": "sha256:ec468f4f302a4feb9b3ec4d1f7a29f5f76353c6dbc4c5456d9a29f7ca8bfa08f", + "sealed_at": "2026-08-29T23:52:04Z", + "sealed_by": "t27c-bootstrap@0.2.0", + "spec_hash": "sha256:bcdf9d0b6752e6bf13d1bbd5114f9531f8f31b06ec9bb817aa192f8d918010ad", "spec_path": "specs/fpga/testbench/uart_tb.t27" -} +} \ No newline at end of file diff --git a/bootstrap/src/codegen_python.t27 b/bootstrap/src/codegen_python.t27 index d4b1e3a7d2..0598b42d5d 100644 --- a/bootstrap/src/codegen_python.t27 +++ b/bootstrap/src/codegen_python.t27 @@ -33,7 +33,7 @@ module codegen_python { return "bool"; } else { return "int"; // For unknown, use int (0 or 1) - }; + } } /// T27 array → Python list diff --git a/docs/now/2026-08-30-six-stray-semicolons-three-specs-recovered-and-two-edits-wit.md b/docs/now/2026-08-30-six-stray-semicolons-three-specs-recovered-and-two-edits-wit.md new file mode 100644 index 0000000000..ddea388d35 --- /dev/null +++ b/docs/now/2026-08-30-six-stray-semicolons-three-specs-recovered-and-two-edits-wit.md @@ -0,0 +1,8 @@ +# NOW -- Six stray semicolons, three specs recovered, and two edits withdrawn (2026-08-30) + +## Six stray semicolons, three specs recovered, and two edits withdrawn (Refs #2864) + +- The census's work queue had two rows needing no owner decision: a closing brace with nothing open (4 specs) and a statement terminated twice (2). Both probed: 'struct X { };' and '} else { };' and 'print(x);;' each fail, and each parses with the extra semicolon removed. +- The census names only the FIRST occurrence. Fixing every occurrence of the same form: pubsub 2, mac_tb 6, uart_tb 5 -- all three now parse. 615 -> 618 specs, zero regressions, 21 lines changed and every one is exactly one character shorter. +- Two edits WITHDRAWN. hybrid_arithmetic and relay_observer advanced but still do not parse, and the edit made their seals stale for no gain. Reverted rather than carried: an edit that buys nothing and costs a re-seal is not a repair. +- The corpus ratchet caught the three fixed specs immediately as UNEXPECTED PASS -- yesterday's lesson working. Entries removed, max_entries 150 -> 147. git grep over the three names found four more files that mention them; none is read by any gate, so they are snapshots, not ledgers. diff --git a/docs/reports/suite_expectations.json b/docs/reports/suite_expectations.json index 85546353b6..bfaa040009 100644 --- a/docs/reports/suite_expectations.json +++ b/docs/reports/suite_expectations.json @@ -2,7 +2,7 @@ "schema_version": 1, "generated_by": "t27c suite --bless-expectations", "max_gate_failures": 2, - "max_entries": 150, + "max_entries": 147, "entries": [ { "path": "specs/account/repo.t27", @@ -102,13 +102,6 @@ "issue": 1959, "expires": "2026-11-30" }, - { - "path": "specs/bus/pubsub.t27", - "phase": "parse", - "reason": "parse error in fn near line N: Unexpected token in expression: Semicolon (';')", - "issue": 1959, - "expires": "2026-11-30" - }, { "path": "specs/compiler/parser.t27", "phase": "parse", @@ -239,20 +232,6 @@ "clause-junk": 1 } }, - { - "path": "specs/fpga/testbench/mac_tb.t27", - "phase": "parse", - "reason": "parse error in fn near line N: Unexpected token in expression: Semicolon (';')", - "issue": 1959, - "expires": "2026-11-30" - }, - { - "path": "specs/fpga/testbench/uart_tb.t27", - "phase": "parse", - "reason": "parse error in fn near line N: Unexpected token in expression: Semicolon (';')", - "issue": 1959, - "expires": "2026-11-30" - }, { "path": "specs/fpga/top_level.t27", "phase": "parse-no-discard", diff --git a/specs/bus/pubsub.t27 b/specs/bus/pubsub.t27 index c7abd82822..fa2f7f49d6 100644 --- a/specs/bus/pubsub.t27 +++ b/specs/bus/pubsub.t27 @@ -386,7 +386,7 @@ pub fn publish_result_to_string(result: PublishResult) []u8 { return "success"; } else { return "error: " ++ result.error; - }; + } } /// Get subscribe result string @@ -395,7 +395,7 @@ pub fn subscribe_result_to_string(result: SubscribeResult) []u8 { return "success"; } else { return "error: " ++ result.error; - }; + } } /// Get unsubscribe result string @@ -404,7 +404,7 @@ pub fn unsubscribe_result_to_string(result: UnsubscribeResult) []u8 { return "success"; } else { return "error: " ++ result.error; - }; + } } // ============================================================================ diff --git a/specs/fpga/testbench/mac_tb.t27 b/specs/fpga/testbench/mac_tb.t27 index 4de4a81ea1..a2122cbf74 100644 --- a/specs/fpga/testbench/mac_tb.t27 +++ b/specs/fpga/testbench/mac_tb.t27 @@ -350,11 +350,11 @@ module MAC_Testbench { // run_tests() → void // Run all test sequences fn run_tests() -> void { - print(" t27 MAC TESTBENCH ");; + print(" t27 MAC TESTBENCH "); print("║ t27 MAC TESTBENCH ║"); - print(" 01 + 1/23 = 3 | TRINITY ");; + print(" 01 + 1/23 = 3 | TRINITY "); print("║ φ² + 1/φ² = 3 | TRINITY ║"); - print(" Running 15 test sequences...");; + print(" Running 15 test sequences..."); // Apply reset mac_reset_all(); @@ -424,17 +424,17 @@ module MAC_Testbench { print(" [PASS]"); // Summary - print(" Simulation complete.");; + print(" Simulation complete."); print("║ SIMULATION RESULTS ║"); - print(" Collecting results...");; - print(" Passed: ");; + print(" Collecting results..."); + print(" Passed: "); print("║ Failed: ", test_failed, " ║"); if (test_failed == 0) { print("║ STATUS: ✓ ALL TESTS PASSED ║"); } else { print("║ STATUS: ✗ SOME TESTS FAILED ║"); } - print(" =================================");; + print(" ================================="); } // TDD-Inside-Spec: Invariants for MAC_Testbench diff --git a/specs/fpga/testbench/uart_tb.t27 b/specs/fpga/testbench/uart_tb.t27 index eb07fa96a2..76a5c120ac 100644 --- a/specs/fpga/testbench/uart_tb.t27 +++ b/specs/fpga/testbench/uart_tb.t27 @@ -253,11 +253,11 @@ module UART_Testbench { // run_tests() → void // Run all test sequences fn run_tests() -> void { - print(" t27 UART TESTBENCH");; + print(" t27 UART TESTBENCH"); print("║ t27 UART TESTBENCH ║"); - print(" 01 + 1/23 = 3 | TRINITY");; + print(" 01 + 1/23 = 3 | TRINITY"); print("║ φ² + 1/φ² = 3 | TRINITY ║"); - print(" Running test sequences...");; + print(" Running test sequences..."); // Apply reset rst_n = false; @@ -294,9 +294,9 @@ module UART_Testbench { print(" [PASS]"); // Summary - print(" Simulation complete.");; + print(" Simulation complete."); print("║ SIMULATION RESULTS ║"); - print(" Collecting results...");; + print(" Collecting results..."); print("║ Passed: ", test_passed, " ║"); print("║ Failed: ", test_failed, " ║"); if (test_failed == 0) { @@ -304,7 +304,7 @@ module UART_Testbench { } else { print("║ STATUS: ✗ SOME TESTS FAILED ║"); } - print(" Done.");; + print(" Done."); } // TDD-Inside-Spec: Invariants for UART_Testbench diff --git a/tools/specs_generate_baseline.txt b/tools/specs_generate_baseline.txt index cc68e9660e..d07ec9d9f9 100644 --- a/tools/specs_generate_baseline.txt +++ b/tools/specs_generate_baseline.txt @@ -1,6 +1,6 @@ # Specs that do not generate with ANY backend. Each line is a debt. # Remove the line when the spec compiles; the gate then holds it compiling. -bootstrap/src/codegen_python.t27 | Error: Compile error: parse error in fn 'map_trit_to_python_type' near line 36: Unexpected token in expression: Semicolon (';') at line 36:10 +bootstrap/src/codegen_python.t27 | Error: Compile error: parse error in fn 'map_trit_to_python_type' near line 176: unexpected token after expression statement: Ident bootstrap/tests/goldring/cap_test.t27 | Error: Compile error: nested fn 'inner' inside 'outer' captures enclosing locals ["scale"] -- hoisting would unbind them; lift them to parameters or m compiler/cli/git.t27 | Error: Compile error: parse error in fn 'git_commit' near line 38: Unexpected token in expression: Pipe ('|') at line 38:45 compiler/cli/spec.t27 | Error: Compile error: parse error in fn 'validate_tdd_compliance' near line 268: Unexpected token in expression: KwConst ('const') at line 268:38 @@ -20,7 +20,6 @@ specs/ar/ternary_logic.t27 | Error: Compile error: parse error at module level n specs/auth/config.t27 | Error: Compile error: Expected LBrace, got LParen ('(') at line 60:16 specs/benchmarks/bench_nn.t27 | Error: Compile error: parse error at module level near line 6: unexpected token after expression statement: Ident specs/benchmarks/gf16_bfloat16_nmse.t27 | Error: Compile error: parse error at module level near line 6: unexpected token after expression statement: Ident -specs/bus/pubsub.t27 | Error: Compile error: parse error in fn 'publish_result_to_string' near line 389: Unexpected token in expression: Semicolon (';') at line 389:6 specs/compiler/parser.t27 | Error: Compile error: parse error in fn 'parse_module_body' near line 1500: parse error near line 1500: parse error near line 1500: parse error near l specs/compiler/typechecker.t27 | Error: Compile error: parse error in fn 'check_stmt' near line 373: parse error near line 373: parse error near line 373: Unexpected token in expressi specs/config/load.t27 | Error: Compile error: Expected LBrace, got Minus ('-') at line 217:74 @@ -29,8 +28,6 @@ specs/conformance/e2e_scenarios.t27 | Error: Compile error: parse error at modul specs/enrichment/audio_overview.t27 | Error: Compile error: Expected LBrace, got Semicolon (';') at line 76:102 specs/enrichment/youtube_transcript.t27 | Error: Compile error: parse error in fn 'extract_video_id' near line 109: parse error near line 109: Unexpected token in expression: Semicolon (';') a specs/file/watcher.t27 | Error: Compile error: Expected LBrace, got LParen ('(') at line 14:21 -specs/fpga/testbench/mac_tb.t27 | Error: Compile error: parse error in fn 'run_tests' near line 353: Unexpected token in expression: Semicolon (';') at line 353:69 -specs/fpga/testbench/uart_tb.t27 | Error: Compile error: parse error in fn 'run_tests' near line 256: Unexpected token in expression: Semicolon (';') at line 256:39 specs/graph/knowledge_graph.t27 | Error: Compile error: Expected LBrace, got Semicolon (';') at line 101:59 specs/hslm/forward_pass.t27 | Error: Compile error: Expected LBrace, got Semicolon (';') at line 82:134 specs/interop/gf_cross_language.t27 | Error: Compile error: parse error at module level near line 7: unexpected token after expression statement: Ident @@ -51,7 +48,7 @@ specs/physics/hslm_benchmark.t27 | Error: Compile error: parse error at module l specs/physics/lqg_cs_bridge.t27 | Error: Compile error: unterminated string literal opened at line 74:86 specs/physics/p2_brain_physics.t27 | Error: Compile error: Expected LBrace, got Semicolon (';') at line 53:55 specs/pins/parser.t27 | Error: Compile error: unterminated string literal opened at line 596:24 -specs/portable/relay_observer.t27 | Error: Compile error: parse error at module level near line 53: Unexpected token in expression: Semicolon (';') at line 53:2 +specs/portable/relay_observer.t27 | Error: Compile error: Expected LBrace, got Ident ('WebSocketState') at line 66:45 specs/provider/adapters.t27 | Error: Compile error: parse error in fn 'adapter_config_create' near line 208: Unexpected token in expression: LBrace ('{') at line 208:55 specs/provider/schema.t27 | Error: Compile error: parse error in fn 'provider_config_create' near line 267: Unexpected token in expression: LBrace ('{') at line 267:55 specs/runtime/execute.t27 | Error: Compile error: Expected LBrace, got RParen (')') at line 238:77 @@ -69,7 +66,7 @@ specs/shell/process.t27 | Error: Compile error: Expected LBrace, got LParen ('(' specs/shell/schema.t27 | Error: Compile error: parse error in fn 'process_options_full' near line 235: Unexpected token in expression: LBrace ('{') at line 235:31 specs/storage/kv.t27 | Error: Compile error: Expected LParen, got Lt ('<') at line 15:12 specs/sync/index.t27 | Error: Compile error: parse error in fn 'delta_replay' near line 338: Unexpected token in expression: DotDot ('..') at line 338:29 -specs/ternary/hybrid_arithmetic.t27 | Error: Compile error: parse error at module level near line 49: Unexpected token in expression: Semicolon (';') at line 49:6 +specs/ternary/hybrid_arithmetic.t27 | Error: Compile error: Expected LBrace, got Semicolon (';') at line 66:34 specs/ternary/hybrid_bigint.t27 | Error: Compile error: parse error at module level near line 10: unexpected token after expression statement: Ident specs/ternary/packed_trit.t27 | Error: Compile error: Expected LBrace, got Semicolon (';') at line 75:61 specs/test_framework/core.t27 | Error: Compile error: unterminated string literal opened at line 316:31