Every governed artifact records who proposed and who decided it. The human/AI boundary becomes a queryable fact.
proposed-by; only a human may set decided-by / approved-by / approved-at.proposed-by: ai and leaves the decision fields blank. A human approves via /approve — the only path from proposed to approved. Every gate crossing is recorded in the artifact's provenance frontmatter and the git history.Provenance answers who decided. Evidence answers on what basis. Both required.
A status: approved artifact whose evidence block is empty, contains only —, or repeats the plan's Goal verbatim is a governance violation. See uncertainty-reduction.
Gate crossings and ADR acceptances are recorded in two coupled places: the artifact frontmatter (decided-by / approved-by / approved-at) and the git history. Approval commits should carry a Decided-By: trailer:
The frontmatter answers what is the current decision state; git answers when and by whom. Commits can't be silently rewritten, so the trail stays coherent.
| Anti-pattern | Why it breaks governance |
|---|---|
AI edits approved-by | Human ownership becomes fiction |
Committing a gate crossing without a Decided-By: trailer | Git-level audit trail has holes |
Marking artifact accepted without /approve | Decision fields drift out of sync with reality |
| Reusing an old artifact id for a new decision | Supersession chain breaks |
| Approving plan with empty evidence block | Approval becomes rubber-stamp |
| Filling evidence with the plan's Goal verbatim | Evidence theatre — gatekeeper rejects |