R15 RULED: all three gate floors, with a harness manifest rather than a count (OPS)
GA-R5: question and exact utterance quoted, dated, pushed. Operator utterance:
"All three, with a harness MANIFEST rather than a count (Recommended)". OPS under
GA-R3 -- three script fixes, no D-number.

IT OPERATIONALISES GA-R6. That ruling lets a stage close only on a NAMED
EXECUTABLE CHECK. These three checks were not capable of failing, so the closes
they certified were weaker than they read.

1. repo-lint gains a valid-root check and a files-scanned floor.
   repo_lint.py:132-135 strips only the two KNOWN flags, so any other --flag
   becomes argv[0] i.e. the ROOT, with no is_dir() check and no floor. A
   one-character typo of either the flag or the path resolves to a nonexistent
   directory, rglob yields nothing, and it reports PASS (0 fail, 0 warn) over
   ZERO files -- reproduced twice this session. This is the gate whose "0-fail"
   every GA-R6 stage close in this project's history cites, and it cannot
   distinguish a clean repo from an unexamined one.

2. The gauntlet pins a checked-in MANIFEST of harness NAMES, drift-checked, not
   a count. run-tests-all.sh:35 already has a zero-floor; what is absent is any
   pin on WHICH harnesses ran, and 81 exists only as prose. The manifest choice
   is the substance of this ruling: a bare count does NOT catch a rename, since
   adding one harness while removing another holds the count. It mirrors two
   proven in-repo patterns -- clientdocs/sweep-receipt.txt hash-pinning and the
   D-137 creds-manifests derive-plus-drift gate.

3. preflight stops failing open. note() tests only rc -eq 1 and rc -eq 2, so
   127/126/130 and any rc>=3 leave "PREFLIGHT: PASS -- clear to add-model /
   deploy" -- measured with a sub-gate exiting 127. And rc=2, which is precisely
   how these checkers signal "I could not evaluate anything", is remapped to WARN
   in P1/P2/P3. The project already fixed exactly this for P5 (harness T9), so
   this extends a proven pattern rather than inventing one. Preflight authorises
   the deploy, which is why it was included rather than deferred.

ORDERING TRAP RECORDED FOR WHOEVER EXECUTES THIS: these changes alter what
"green" MEANS, so the gauntlet and lint runs that certify them must be read with
that in mind -- and a harness manifest introduced mid-session must be seeded from
a tree that is itself verified, not from whatever happens to be on disk. Seeding
it from an unverified tree would pin the very drift it exists to detect.

ALL QUEUED RULINGS ARE NOW CLOSED: R1-R13 and R15 ruled, R2a and R14 withdrawn as
raised in error, G18 opened deferred-and-gated.

Revert: git revert this commit; the CURRENT-STATE entry is additive.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HvCyrwvYTTcDYnRErfMsNf
1 parent d423024 commit 10b1abc6a2063c2a133768d31945c5923cbc6011
@JANeumatrix JANeumatrix authored 1 hour ago
Showing 1 changed file
View
docs/CURRENT-STATE.md