Skip to content

docs: close out the governance layer and cut 0.3.0 - #245

Merged
oratis merged 1 commit into
mainfrom
docs/governance-closeout
Aug 8, 2026
Merged

docs: close out the governance layer and cut 0.3.0#245
oratis merged 1 commit into
mainfrom
docs/governance-closeout

Conversation

@oratis

@oratis oratis commented Aug 8, 2026

Copy link
Copy Markdown
Owner

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.md gains three threats and one strengthened entry:

# Threat Status
8 Model reads an in-project secret (.env, *.pem) through a read tool Partly mitigated
9 Unattended job runs with a permissive mode inherited from interactive settings Mitigated
10 User cannot audit or undo what the agent wrote Mitigated
6 Untrusted AGENTS.md drives harmful action Strengthened — a contract deny is 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:

  • PR 0's premise. It claimed unattended runs might "silently allow". They didn't; runHeadless already 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.
  • The four-client consistency test. Only the CLI and app-server resolve policy independently. VS Code and LSP are thin protocol clients that consume the server's answer verbatim. The test asserts the two real paths and documents why the other two are equal by construction, instead of implying four verified paths.

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.ts caught Cargo.lock still pinning 0.2.0 — a sixth location that docs/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 test1414 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.mjs
  • scripts/version-consistency.test.ts green across all six version locations

Documentation

Release notes label

  • release-notes:internal — docs and version metadata; the features themselves are labelled on their own PRs

Related

Closes out plan PRs 0–8: #237 #238 #239 #240 #241 #242 #243 #244.

🤖 Generated with Claude Code

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>
@oratis
oratis merged commit c4d43fc into main Aug 8, 2026
5 checks passed
@oratis
oratis deleted the docs/governance-closeout branch August 8, 2026 10:25
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.

1 participant