v0.9.5
Bug Fixes
-
command-executed: Keep whole argv-joined payload in shell unwrap
(#77,
7abd080) -
command-executed: Match patterns against shell-normalized commands
(#77,
7abd080) -
command-executed: Narrow command param to str before shell-normalizing
(#77,
7abd080) -
command-executed: Recognize shell wrappers by predicate, not allowlist
(#77,
7abd080) -
criteria: Add present predicate so asserting a switch cannot weaken a guard
(#72,
8574ded) -
criteria: Make cli_called guards fail loud instead of vacuously passing
(#72,
8574ded) -
criteria: Stop ignore_flags re-opening the guard false-PASS
(#72,
8574ded) -
early-stop: Address PR review — trajectory parity, reason determinism, doc restore
(#78,
4cf8092) -
lint: Derive CE030 criteria from the source union literal, not runtime
(#77,
7abd080) -
lint: Enumerate in-tree criteria by module attribute, not the union
(#77,
7abd080) -
lint: Scope CE030 criterion parity to in-tree criteria only
(#77,
7abd080) -
reports: Explicit return on every early_stop_gate_note path (CodeQL py/mixed-returns)
(#78,
4cf8092) -
reports: Pre-initialize the gate note so CodeQL sees it bound on every path
(#78,
4cf8092)
Chores
Documentation
-
Surface the Marketplace listing and make the Action quickstarts self-sufficient
(#80,
401245a) -
command-executed: Document shell-normalization contract + gate it (CE030)
(#77,
7abd080)
Features
-
criteria: Add cli_called for structured invocation matching
(#72,
8574ded) -
criteria: Match a flag across spellings with FlagMatch.aliases
(#72,
8574ded) -
early-stop: Per-criterion arming via stop_early blocks on live criteria
(#78,
4cf8092)