v0.2.0
0.2.0 — First release with an external contribution
MINOR: new features and adapters; compiled output for existing policies is unchanged
(golden-suite verified), but new surfaces exist.
- Antigravity CLI adapter — contributed by @alexsmolya, the project's first external
contribution:.agents/rules/chock.mdworkspace rule, ambient/git-hook/CI surfaces
(deliberately not pre-tool-use: no installer exists, so no claim is made). - Claude-format plugin emitter:
chock plugin build --format claude|all --out-dir
renders each policy into Claude Code's plugin layout (read natively by Claude Code,
Copilot CLI, VS Code and Grok Build), with the fail posture stated verbatim in every
emitted description and per-format subtrees so no package has to lie for another
client. Stale-output reconciliation, duplicate-id refusal. chock marketplace build: derives the marketplace index, a content-addressed
chock-market.lock(sha256 per published plugin directory), and a generated
PLUGINS.mdcatalog page from the built packages — never hand-listed, drift-checked.- Hook interpreter honesty: the emitted hook command stays a single
python3
invocation -- a review of the proposedpython3 || pythonfallback proved a chain
can erase a deny verdict (a deny exit followed by a missing-interpreter exit reads
as an error, and the first leg consumes stdin), so it was rejected with
measurements. Instead every emitted description now states the per-client fail
posture: fail-open clients allow silently withoutpython3and a usable bash;
fail-closed clients (VS Code) refuse matched commands; Windows needs the
Microsoft Storepython3alias disabled or Python installed. - Supply chain: the Marketplace action no longer interpolates workflow inputs
into shell (two HIGH template-injection alerts, fixed by env indirection); GitHub
Releases are created by the runner's ownghCLI instead of a third-party action;
the semgrep scanner installs hash-pinned via compiled requirements; Dependabot
gets a 7-day cooldown. - CI pressure testing: zizmor, actionlint, ShellCheck, and Semgrep (with custom
rules encoding this project's own incidents) run as required checks; all three
public repos are at zero open code-scanning alerts. - Fix:
chock removerefuses when a policy's manifest cannot be read — an
unreadable manifest previously read as "not mandatory" and allowed deletion. - Fix:
frontier_ingestno longer prints and exits at import time; frontier
validation shares oneSTANDARDS_DIRwith ingestion. - Tests: 755 (from 736); statement coverage 83%; new suites for the plugin
emitter, marketplace,chock remove, and the frontier validation modes.