A verdict skill that could end without a verdict
/ork:verify, #3263 · three background test runs wrote 0 bytes and the skill waited ~40 minutes · the contract is now a script · 2026-08-30
Before: prose. After: exit codes.
Phase 3, before Phase 3, after (#3263)
npm test 2>&1 (background) npm test > npmtest.log 2>&1; echo EXIT=$? >> log
wait for a completion signal... bounded Monitor only if a task id came back
(0 bytes, nobody alive, 40 min) bash scripts/assert-evidence.sh log --task-id ...
...no verdict, no failure, nothing -> EVIDENCE | NO-BANNER | STILL-RUNNING | COULD-NOT-OBSERVE
only EVIDENCE may be graded; 3/1 => verdict BLOCKED
The load-bearing rule: a 0-byte file with no process behind it is not "pending", it is a failed run. And the absence of npm's own banner locates the failure BEFORE npm, not inside it.
Try it: what does the gate say?
the log file
the process
Where the outcome lands
| outcome | exit | grade? | verdict effect |
|---|---|---|---|
EVIDENCE | 0 | yes, from the log's runner summary line | none |
STILL-RUNNING | 4 | not yet | keep the bounded wait, re-run the gate |
NO-BANNER | 1 | no | Tests has NO score; verdict BLOCKED |
COULD-NOT-OBSERVE | 3 | no | Tests has NO score; verdict BLOCKED; manifest row is a blocking state |
Manifest: COULD-NOT-OBSERVE is now a fifth provenance state. A load-bearing row in it makes the verdict BLOCKED, never capped-and-continued; the report names it verbatim. H5 (why the file was empty) stays open with a one-off measurement recipe in the contract reference; the gate does not depend on H5 being right.