v0.8.0 — Vendor facts derived, not duplicated; a real lint bar
LatestThe big one: chock stops hand-maintaining facts agentseam already knows, closes the
loop on every gap that surfaced along the way, and adopts a Sonar-class lint bar.
Every emitted byte for the four previously-enforced vendors stays identical
throughout — proven by full before/after artifact diffs at each step, not assumed.
Derive from agentseam's vendor config, not hand-copied tables
Config paths, event spellings, the cursor envelope, and the Claude shell matcher now
come from agentseam.vendor_config/agentseam.adapters through one chock.vendors
module, collapsing three per-vendor emitters and three installers down to one of
each. A witness ledger replaces hand-asserted coverage cells, so every claim carries
its own evidence and basis cap instead of a bare assertion.
Seven new vendors, membership computed not listed
IN_AGENT_TODAY and friends stop being hand-maintained lists — membership is now
matrix.can_block() capped by what a repo-scoped installer may actually touch.
antigravity, codex_cli (repo-level), devin, gemini_cli, grok, tabnine, and windsurf
all get real pre-tool coverage; junie joins as advisory-only (its config lives
outside what chock sync can write, pinned by a tripwire that flips the day
upstream changes that).
Externalized: templates, the CLI command table, and now the dependency itself
Following externalize, don't hardcode: every non-Python emitted template — CI-gate
steps, git-hook shims, scaffolded configs, vendored runtime fragments — moves from
Python string literals into real template files, each valid and linted in its own
language. The CLI's command table becomes data. And two of chock's own longstanding
stopgaps — codex_cli/vscode_copilot's shell-tool vocabulary and claude_code's
${CLAUDE_PROJECT_DIR} token — are now read live from agentseam 0.2.1's vendor
config instead of hardcoded, closing gaps chock's own tripwire tests found and
tracked until upstream could close them.
A Sonar/Checkstyle/FindBugs-class lint bar
Turned on ruff's complexity, naming, boolean-trap, exception-hygiene, dead-code, and
CLI-print-discipline rule families across src/, plus a new literal-duplication
guard. Every finding fixed category-by-category — pure refactor, zero behaviour
change.
Also in this release
- A guard that ran and couldn't decide now asks for confirmation instead of silently
allowing; a timed-out guard no longer leaks the command (credentials included) it
was gating. - A fourth in-agent coverage tier,
fail-to-ask, with an honest ordering. - Every published plugin package carries its own
LICENSE; the Codex manifest gains
itsinterfaceblock; the emitted icon ships as real package data.
Verification
Full suite green throughout every step, chock check/sync --check clean, the
acceptance suite green, and full before/after artifact diffs (compiled fragments,
installed configs, vendored runtimes, all plugin formats) byte-identical wherever no
new vendor was involved.
Full changelog: https://github.com/open-coder-ai/chock/blob/main/CHANGELOG.md