docs: close out the governance layer and cut 0.3.0 - #245
Merged
Conversation
Records the threat-model delta, marks the adoption plan implemented with an honest deviation log, and bumps to 0.3.0 (minor, not patch: the unattended permission clamp in #244 is breaking on 0.x). security-model.md gains three threats (#8 in-project secret reads, #9 unattended permissive inheritance, #10 no audit or undo) and a residual-risk section stating plainly what the file contract is not. It constrains dispatcher tool calls, not Bash; path normalization is string math, not realpath. Describing it as secret protection would be the false confidence the plan named as this feature's main risk. The adoption plan now carries a deviation table rather than a claim of clean execution. Six entries, including two where the plan was simply wrong: PR 0's premise that unattended runs might silently allow (the ask path was already fail-closed), and the four-client consistency test (only two hosts resolve policy independently; VS Code and LSP consume the server's answer, and the tests say so instead of implying four verified paths). Two P2 items remain undone and are listed as such. Found while bumping: the repo's own version-consistency test caught Cargo.lock still pinning 0.2.0, a sixth location RELEASING.md's four-item list never mentioned. Both fixed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This was referenced Aug 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PR 8 — the closeout for the adoption plan, plus the 0.3.0 version bump.
Minor rather than patch: the unattended permission clamp in #244 is breaking on 0.x.
Threat model
docs/security-model.mdgains three threats and one strengthened entry:.env,*.pem) through a read toolAGENTS.mddrives harmful actiondenyis independent of model judgement, so prompt injection cannot argue past it#8 is deliberately "partly". A new residual-risk section states plainly what the file contract is not: it constrains dispatcher tool calls, not what a shell command does after Bash starts, and path normalization is string math rather than
realpath. It ends with an instruction to maintainers not to describe it as secret protection in user-facing text — that false confidence is the risk the plan named as this feature's biggest.An honest deviation log, not a victory lap
The plan is marked implemented with a table of six places the implementation diverged — including two where the plan was simply wrong:
runHeadlessalready installs an auto-deny. feat(core): give unattended runs an explicit approval policy #237 rewrote its own scope to the real gap rather than shipping the claim.Two P2 items are listed as not done: Grep/Glob result filtering (the contract judges the search root, not each hit) and artifact
provenance. Trigger source abstraction (ICS/watch) also remains unbuilt.Version bump found a doc gap
The repo's own
scripts/version-consistency.test.tscaughtCargo.lockstill pinning0.2.0— a sixth location thatdocs/RELEASING.md's four-item checklist never mentioned. Both the lock and the checklist are fixed; the checklist now names all six and points at the test that enforces them.Test plan
pnpm test— 1414 passed, 16 skipped (from 1156 at the start of this work: +258)pnpm typecheck·pnpm lint·pnpm format:check·pnpm build·node scripts/check-docs.mjsscripts/version-consistency.test.tsgreen across all six version locationsDocumentation
docs/security-model.md— threats fix(ci): Node 22 + EPIPE in hooks dispatcher + bash cwd test regex #8–feat(core,cli): M3c — MCP client (stdio) + /mcp slash + REPL wire-up #10, strengthened feat(core,cli): M5 — plugins (manifest+hash) + Skill tool + CLI integration #6, residual-risk sectiondocs/FLOATBOAT_ADOPTION_PLAN.md— status, deviation table, final answers to the four open assumptionsdocs/RELEASING.md— six-location version checklistREADME.md— doc map entries for the three new user docs and two design docsCHANGELOG.md— 0.3.0, including a "deliberately not adopted" sectionRelease notes label
release-notes:internal— docs and version metadata; the features themselves are labelled on their own PRsRelated
Closes out plan PRs 0–8: #237 #238 #239 #240 #241 #242 #243 #244.
🤖 Generated with Claude Code