Skip to content

docs: describe what this repository actually publishes - #8

Merged
jothimani-rajendran merged 1 commit into
mainfrom
claude/docs-deep-audit
Sep 23, 2026
Merged

jothimani-rajendran merged 1 commit into
mainfrom
claude/docs-deep-audit

Conversation

@jothimani-rajendran

Copy link
Copy Markdown
Collaborator

A full audit of the README against the tree this repository actually publishes. Four findings.

The verify recipe could not work. It pinned --branch v0.7.0 while the catalog declares v0.11.0 in .framework-ref, so building with v0.7.0 would not emit the 0.11.0 gate payload committed here and the documented git diff --exit-code would fail. This is the exact failure mode publish.yml's own comment warns about, where a literal default "sat at v0.4.0 across three releases". The recipe now reads the catalog's .framework-ref, which is what both workflows read, so it cannot drift again.

The README described only the guard-script story. Five packages here are enforced but are not guards and never touch beforeShellExecution: block-invisible-unicode, block-wildcard-agent-permissions, java-security, pin-github-actions and scan-secrets. Their hooks/hooks.json wires preToolUse and stop against scripts/gate.json, judging the file a write would create and then re-reading what the turn left on disk. The old text presented a false dichotomy where anything not a guard was advisory.

The fail-open claim was wrong for those five as well. Guards fail open without python3 and bash, and every guard's description says so. A gate that cannot reach a decision refuses rather than allowing something it never judged, and Cursor does not hold the turn's end, so a refusal at stop comes back as a follow-up message once.

"The one hand-written file in this repository" is not true. SECURITY.md and the workflows under .github/ are hand-written too, and the generated-only check regenerates none of them — it diffs after chock plugin build and chock marketplace build, which touch neither.

Guard scripts are copies of the catalog's source, not the framework's. Verified: chock-catalog/base/block-destructive-commands/implementations/block-destructive.sh is byte-identical to the published copy here, while the framework repo's own copy differs. Only the adapter is framework-side.

No generated file is touched, so chock marketplace build --dist . --check --tree cursor and the regenerate-and-diff verification are unaffected.

🤖 Generated with Claude Code

https://claude.ai/code/session_01CzNYfzP8ymU3r4JB9Sz8Ha


Generated by Claude Code

A full audit of the README against the published tree.

The verify recipe could not work: it pinned --branch v0.7.0 while the catalog
declares v0.11.0, so a reader following it would fail at the diff. It now reads
the catalog's own .framework-ref, which is what the publish and Generated-only
workflows read, so it cannot drift again.

The README described only the guard-script story. Since 0.11.0 five of the
packages here carry a policy's gate instead, wired at the events this client
records, and nothing said so.

This README is not the only hand-written file: SECURITY.md and the workflows are
hand-written too, and the generated-only check regenerates none of them.

Guard scripts are verbatim copies of their policy's source in the catalog, not
of a framework source; only the adapter comes from the framework.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
@jothimani-rajendran
jothimani-rajendran marked this pull request as ready for review September 23, 2026 21:26
@jothimani-rajendran
jothimani-rajendran merged commit 4f93ddf into main Sep 23, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants