/** * The command cache's identity and determinism gates (FR-14/FR-15, Story 4.4) — * shared verbatim by the capture flush (which records) and the command ledger * (which answers), and living at the capture layer because layer direction * forbids `capture/` importing `query/` while the reverse is established * precedent (`search-ledger` → `capture/search-query`). * * **What this gate is defending against, measured rather than imagined.** * `npx vitest run | tail -6` exits 0 because a pipeline's status is * its LAST element's. The PostToolUse hook fires, and the captured stdout * literally reads `Test Files 1 failed (1)`. Recording that as a success is * SM-C3 — "a false 'your tests pass' is the worst failure this product can * produce" — and it was reproduced live on 2026-08-03, not theorised. Every * refusal below traces to a way the command's own exit status stops being what * the host reports. * * **Why an allowlist and not a denylist.** The Story 4.3 precedent * (`CERTIFIABLE_PATTERN`) applies with more force here: a denylist has to * enumerate every shell construct that can mask a status, in every dialect, * forever. An allowlist has to enumerate the characters that cannot. Being * wrong on an allowlist costs a miss; being wrong on a denylist costs a false * pass. */ /** Longer than any verification command anyone writes; a bound, not a budget. */ export declare const COMMAND_MAX_LENGTH = 512; /** * Characters an element may contain. Everything structural is absent by * construction: `|` (pipeline status is the last element's), `;` (masks all but * the last), `&` (backgrounds — and `&&` is split off BEFORE this test runs), * `` ` `` and `$` (substitution and expansion make the string's meaning depend * on state no census can see), `<` `>` (redirection reads or writes outside the * command's own model), `(` `)` `{` `}` (grouping and brace expansion), `*` `?` * `[` `]` (globs the shell expands), `\` (escapes, and a Windows path separator * this project normalises away everywhere else), `!` (history expansion), `#` * (comment — truncates the rest of the line), and newline. * * Kept as one glance-verifiable class rather than a dialect argument. */ export declare const COMMAND_SAFE_CHARS: RegExp; /** * `npm run