Claude Code First, specification version 0.1.0. The plain-language guide
Version 0.1.0. Level 2. Best evidence grade R3/S3.
GH-4 A guard that cannot run says so
A guard that is wired but cannot run, such as one whose build or engine is missing, MUST say in the session that it is not guarding.
| Field | Value |
|---|---|
| Keyword | MUST |
| Level | 2 |
| Checked | by judgement |
| Findings | F301, F403 |
| Harness facts | H5 |
| Threat | construct: a silent gap is known only once someone noticed it |
| Status | active |
Rationale: the guards in the corpus allow on any failure of their own, so an absent, unmatched or broken guard looks exactly like one that approved (F301, R3/S3). winwright's guard, on a fresh clone with no build, exited 1 and never 2 (H5), and a "guard that is not there refuses nothing" [winwright@861b82e:README.md#L113]; its fix kept the hook non-blocking and made it name the missing build. roadkeep's launcher stood down on a stale registry row and both guards were absent at once, and freewilly's hooks ran a sibling engine because a variable arrived unexpanded (F403). The rule does not require the guard to block: a message costs nothing and turns the silent gap the findings record into one the session can see. A guard that never loaded cannot speak for itself; GH-2 covers that case.