Claude Code First, specification version 0.1.0. The plain-language guide

Version 0.1.0. Level 2. Best evidence grade R3/S3.

PS-2 A forbidden action is refused, not only forbidden

An action a project forbids its agent to take SHOULD be refused by a committed deny or ask rule or by a guard, and not stated only in prose.

FieldValue
KeywordSHOULD
Level2
Checkedby judgement
FindingsF300, F301, F402
Harness factsH6, H7
Threatconstruct: a forbidden action taken and not recorded leaves no trace
Statusactive

Rationale: a rule stated only in prose, with nothing that reads it, was found broken by the repository that wrote it, in two projects and by count (F300, R3/S3). The corpus forbids some actions only that way: polyweave's commit rule says "staged by path, never pushed" [polyweave@6d1c136:CLAUDE.md#L62-L63], and no committed control limits shell commands other than those naming a governed file (F402). The mechanisms that do refuse are the harness's deny and ask rules (H7) and a PreToolUse hook's deny (H6), each covering only what it matches (F301). F300 would admit a MUST. The keyword is held at SHOULD because every broken rule F300 records is a rule about text (a roadmap format, a pipe in a documented command, a punctuation mark), and no source records a forbidden action being taken, so the finding's mechanism is carried here to a kind of rule it was not observed on. Where a project forbids nothing in prose, this rule asks nothing of it; what a project should forbid is an open question.