The closed §7.1.7 policy-decision vocabulary, as a type.
Same repair, same reasons as ChannelKind above, found by the same
audit discipline one field over: the wire field was a bare String the
reference validated NOWHERE, while the independent TypeScript
implementation refused an unrecognized value at parse — two
conformant-claiming implementations reaching opposite verdicts on the
same bytes. The reference was the permissive surface, and per the
standing guardrail the permissive surface is the wrong one. The
published protocol bundle had declared this vocabulary as an enum all
along; the reference was the LAST populator without the type.
The doc-comment on the wire field (§7.1.7) carries the semantic warning:
this records the human’s standing CONFIGURATION, never the verdict on
this act.
Wire value AskEveryTime — and it stays AskEveryTime after the
human approves; the mandate’s existence is what asserts the approval
(§9.1 admits no path to issuance that bypasses Approved).
The inverse of PolicyDecision::label. Error shape per
[ChannelKind::from_str]’s documentation: a plain message, because
§8.3 step 1 classifies an unrecognized value as a strict-parse
rejection, below the protocol’s closed set of error codes.