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
18 changes: 18 additions & 0 deletions tools/check-freshness.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,24 @@
change and cannot speak to now. Re-running is what produces current evidence;
this only refuses to let old evidence pose as it.
"""

# NO-SELF-TEST: controlled by tools/test_check_freshness.py, which the CI glob gates and which
# passes on main — 28 controls, counted by AST (ast.Call to `check`), measured
# 2026-09-06 at origin/main by `python3 tools/test_check_freshness.py` exit 0 in the gating job. ⛔ This is a DECLARATION of where the control lives,
# not a claim that none exists — tools/README.md records two control conventions in
# one directory (`--self-test` and `test_*.py`).
#
# ⚠ WHY THIS TOOL HAS NO `--self-test`: a completedAt boundary is pure arithmetic, so the controls drive classify() with
# synthetic instants and need no forge.
# ⛔ THIS DECLARATION DOES NOT CHANGE THE GATE'S VERDICT, AND SAYING SO IS THE POINT.
# This tool takes REQUIRED ARGUMENTS, so it reaches the cannot-invoke-bare branch at
# gate-selftests.sh:272, which returns before `DECLARES_NONE` is consulted at :340.
# Measured 2026-09-06, two-poled: with this line present and with it renamed, the gate
# emits IDENTICAL BYTES and this tool REMAINS UNESTABLISHED.
# ⇒ So: an external control EXISTS and is gated; the gate cannot SEE it. Those are
# two different facts and a reader must not infer the second from the first.
# The mismatch — the gate names this line as the remedy on a path that ignores it —
# is nForma-AI/nForma-NEXT#603, not this file's to fix.
import argparse, json, subprocess, sys
from datetime import datetime, timezone

Expand Down
12 changes: 12 additions & 0 deletions tools/gh-complete.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,18 @@
Exit: 0 complete, JSON on stdout · 1 TRUNCATED — the reading is a prefix
2 established nothing (call failed, or the shape is not a counted list)
"""

# NO-SELF-TEST: controlled by tools/test_gh_complete.py, which the CI glob gates and which
# passes on main — 18 controls, counted by AST (ast.Call to `check`), measured
# 2026-09-06 at origin/main by `python3 tools/test_gh_complete.py` exit 0 in the gating job. ⛔ This is a DECLARATION of where the control lives,
# not a claim that none exists — tools/README.md records two control conventions in
# one directory (`--self-test` and `test_*.py`).
#
# ⚠ WHY THIS TOOL HAS NO `--self-test`: it FORWARDS its flags to `gh`, so a `--self-test` argv would be handed to gh and
# come back as gh's usage block — an argv surface it cannot own.
# ⇒ MEASURED EFFECT: before this line the gate reported UNESTABLISHED; with it the
# gate reports `declared NO self-test`. This tool reaches the flag-REJECTED branch,
# where the declaration IS consulted (gate-selftests.sh:340). Measured 2026-09-06.
import json
import re
import subprocess
Expand Down
18 changes: 18 additions & 0 deletions tools/job-log.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,24 @@
so is a genuinely short job log, and picking a threshold invents a boundary the
data does not have. The timestamp is a property of the format, not of the length.
"""

# NO-SELF-TEST: controlled by tools/test_job_log.py, which the CI glob gates and which
# passes on main — 46 controls, counted by AST (ast.Call to `check`), measured
# 2026-09-06 at origin/main by `python3 tools/test_job_log.py` exit 0 in the gating job. ⛔ This is a DECLARATION of where the control lives,
# not a claim that none exists — tools/README.md records two control conventions in
# one directory (`--self-test` and `test_*.py`).
#
# ⚠ WHY THIS TOOL HAS NO `--self-test`: its subject is a log BODY, so the controls feed it real captured bytes rather than
# reaching a runner.
# ⛔ THIS DECLARATION DOES NOT CHANGE THE GATE'S VERDICT, AND SAYING SO IS THE POINT.
# This tool takes REQUIRED ARGUMENTS, so it reaches the cannot-invoke-bare branch at
# gate-selftests.sh:272, which returns before `DECLARES_NONE` is consulted at :340.
# Measured 2026-09-06, two-poled: with this line present and with it renamed, the gate
# emits IDENTICAL BYTES and this tool REMAINS UNESTABLISHED.
# ⇒ So: an external control EXISTS and is gated; the gate cannot SEE it. Those are
# two different facts and a reader must not infer the second from the first.
# The mismatch — the gate names this line as the remedy on a path that ignores it —
# is nForma-AI/nForma-NEXT#603, not this file's to fix.
import argparse, json, os, re, subprocess, sys, types

_here = os.path.dirname(os.path.abspath(__file__))
Expand Down
Loading