diff --git a/docs/now/2026-08-28-answer-nothing-to-check-before-the-tool-is-missing.md b/docs/now/2026-08-28-answer-nothing-to-check-before-the-tool-is-missing.md new file mode 100644 index 0000000000..0d6b95feda --- /dev/null +++ b/docs/now/2026-08-28-answer-nothing-to-check-before-the-tool-is-missing.md @@ -0,0 +1,6 @@ +# NOW -- Answer nothing-to-check before the-tool-is-missing (2026-08-28) + +## Answer nothing-to-check before the-tool-is-missing (Refs #2161) + +- #2746 ordered the compiler requirement first, so an empty tree reported the wrong diagnosis +- caught by check_gate_preconditions.py one commit later -- the loud-failure gate doing its job diff --git a/tools/check_seal_coverage.py b/tools/check_seal_coverage.py index fe85a708de..4698f8f7b5 100755 --- a/tools/check_seal_coverage.py +++ b/tools/check_seal_coverage.py @@ -521,16 +521,27 @@ def main(): # compiler, and they exercise the ledger, not the gen_hash comparison. skip_gen = os.environ.get("T27_SEAL_SKIP_GEN") == "1" t27c = None if skip_gen else _find_t27c(ROOT) + + # NOTHING TO CHECK is answered before MISSING TOOL. An empty tree needs no + # compiler -- there is nothing to recompute -- and the loud-failure gate + # asks this file what it says when handed one. Ordering the compiler check + # first made it answer "the compiler is not built", which is true and is + # not the diagnosis: the path is wrong. Found by fpga-conformance on the + # commit after #2746, which is the gate doing exactly its job. + if t27c is None and not skip_gen: + import glob as _g + total, bad = len(_g.glob(str(ROOT / ".trinity/seals/*.json"))), [] + else: + total, bad = scan(t27c=t27c) + if total == 0: + print("FAIL: no seals found at all -- the path is wrong, not the tree") + return 1 if t27c is None and not skip_gen: print("check_seal_coverage: the compiler is not built, so the four") print(" gen_hashes in every seal could not be recomputed. Reporting") print(" nothing rather than reporting a pass this run did not earn:") print(" build it with `cargo build --release -p t27c` and run again.") return 2 - total, bad = scan(t27c=t27c) - if total == 0: - print("FAIL: no seals found at all -- the path is wrong, not the tree") - return 1 if "--update-baseline" in sys.argv: BASELINE.write_text(