chore(agents): track repo-scoped agent definitions, add the destruction-model auditor #574

Merged
hexajon merged 3 commits from chore/track-repo-scoped-agent-definitions into main 2026-09-21 23:49:16 +00:00
Owner

Summary

.claude/ was ignored wholesale as session-local state, so an agent definition written for this repo could never be tracked. Narrow the ignore to .claude/* and re-include .claude/agents/, since git cannot re-include a path under an excluded directory. The rest of .claude/ stays ignored.

Add the first such definition: a tool that reads the codebase against ADR 0029 and reports findings with file:line evidence, one lens per invocation.

It found real defects on its first pass, now filed as #564, #566, #567, #568, #569 and #570 under the epic #563. It also has a limit worth stating plainly: it cannot count. Three passes over the same 24-row list returned 22, 22 and 25, and one pass applied its own rationale rule to one row while relying on the same kind of comment to drop four others. It is for finding candidates, not for stating coverage.

#572 builds the generated inventory that answers coverage by construction. #573 rescopes this brief once that lands, and carries the counting evidence.

Docs and config only. No Go code changed.

## Summary `.claude/` was ignored wholesale as session-local state, so an agent definition written for this repo could never be tracked. Narrow the ignore to `.claude/*` and re-include `.claude/agents/`, since git cannot re-include a path under an excluded directory. The rest of `.claude/` stays ignored. Add the first such definition: a tool that reads the codebase against ADR 0029 and reports findings with file:line evidence, one lens per invocation. It found real defects on its first pass, now filed as #564, #566, #567, #568, #569 and #570 under the epic #563. It also has a limit worth stating plainly: it cannot count. Three passes over the same 24-row list returned 22, 22 and 25, and one pass applied its own rationale rule to one row while relying on the same kind of comment to drop four others. It is for finding candidates, not for stating coverage. #572 builds the generated inventory that answers coverage by construction. #573 rescopes this brief once that lands, and carries the counting evidence. Docs and config only. No Go code changed.
The .claude/ ignore rule covered session-local state, so an agent
definition written for this repo stayed untracked and existed on one
machine only. Agent definitions are reviewed tooling, not session state.

Narrow the ignore to .claude/* so .claude/agents/ can be re-included;
git cannot re-include a path under an excluded directory. Everything
else under .claude/ stays ignored.
chore(agents): add a repo-scoped auditor for the destruction model
Some checks failed
drift / govulncheck (pull_request) Has been skipped
ci / mcp-conformance (pull_request) Has been cancelled
ci / gate (pull_request) Has been cancelled
drift / forgejo-smoke (pull_request) Has been cancelled
drift / surface-diff (pull_request) Has been cancelled
9a2ce5baf3
ADR 0029 says no madtea surface carries an operation that destroys
unrecoverable work, with one carve-out for destruction the code can
prove is safe. Nothing checked that claim. Add a tool that reads the
codebase against the record and reports findings with file:line
evidence, one lens per invocation: surface inventory, machine-proof
carve-outs, refusal strings, and claim derivation.

It works. Its first pass found the content-containment predicate that
short-circuits on a tip-tree match, the orchestrate refusal that names
the surface still allowing the refused act, the remote branch delete
that computes no proof, and the parity test that pins a policy the
record rejects. Those are #564, #567, #568 and #569.

It has a known limit, and #573 records it with the evidence: it cannot
count. Three passes over the same 24-row list returned 22, 22 and 25,
and one pass applied its own rationale rule to one row while relying on
the same kind of comment to drop four others. Use it to find candidates,
never to state coverage. #572 builds the generated inventory that
answers coverage properly, and #573 rescopes this brief once it lands.

The trap-ownership section is the part that produced the inconsistent
handling above. It ships as written rather than being patched blind;
#573 replaces it.
Merge branch 'main' into chore/track-repo-scoped-agent-definitions
Some checks failed
drift / govulncheck (pull_request) Has been skipped
drift / surface-diff (pull_request) Successful in 1m18s
drift / forgejo-smoke (pull_request) Has been skipped
ci / mcp-conformance (pull_request) Successful in 2m4s
ci / mcp-conformance (push) Successful in 2s
drift / govulncheck (push) Has been skipped
drift / surface-diff (push) Successful in -4s
drift / forgejo-smoke (push) Has been skipped
ci / gate (pull_request) Failing after 10m3s
ci / gate (push) Failing after 10m14s
a85abe11c4
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sixfold-space/madtea!574
No description provided.