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

outcomeexitgrade?verdict effect
EVIDENCE0yes, from the log's runner summary linenone
STILL-RUNNING4not yetkeep the bounded wait, re-run the gate
NO-BANNER1noTests has NO score; verdict BLOCKED
COULD-NOT-OBSERVE3noTests 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.