psychology

chevp-ai-framework

Lifecycle Gates Guidelines Commands Agents Templates
verified_userGuideline

Architecture Governance

Every governed artifact records who proposed and who decided it. The human/AI boundary becomes a queryable fact.

Rule
Every governed artifact (ADR, CTX/EXP/PRD plan, spec) carries a provenance block stating who proposed it, who decided it, and when. AI may only set proposed-by; only a human may set decided-by / approved-by / approved-at.
Why
Without an explicit record of who decided what, ownership is implicit and unauditable — "the AI did it" and "the human approved it" become indistinguishable.
How
When AI creates or modifies a governed artifact, it fills 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.

Approval Requires Evidence

Provenance answers who decided. Evidence answers on what basis. Both required.

evidence: hypothesis: <what we believed before this gate> result: <what we observed> reasoning: <why that justifies the transition>

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.

Provenance Schema

id: <ID> # ADR-0007, EXP-012, CTX-003 type: <ADR|CTX|EXP|PRD|SPEC> status: draft # draft | proposed | approved | accepted | superseded proposed-by: ai # ai | human | pair decided-by: — # human (required when status advances past proposed) approved-by: — # human identifier approved-at: — # ISO date YYYY-MM-DD supersedes: — # optional, prior artifact id

The Audit Trail

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:

Decided-By: lunral <lunral@…> # query every human decision point: git log --grep="Decided-By"

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-Patterns

Anti-patternWhy it breaks governance
AI edits approved-byHuman ownership becomes fiction
Committing a gate crossing without a Decided-By: trailerGit-level audit trail has holes
Marking artifact accepted without /approveDecision fields drift out of sync with reality
Reusing an old artifact id for a new decisionSupersession chain breaks
Approving plan with empty evidence blockApproval becomes rubber-stamp
Filling evidence with the plan's Goal verbatimEvidence theatre — gatekeeper rejects
menu_book guidelines/architecture-governance.mdopen_in_new