Fix #214: ChangeProposal (propose-then-confirm) #236
Reference in New Issue
Block a user
Delete Branch "change-proposal"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Implements non-negotiable #1 — the AI assistant never writes autonomously. Design note:
docs/design/change-proposal.md.Structural guarantee: a proposal's ops reach the DB only via
apply(), which requires the actor be an editor and dispatches each op through the normal editing services (person/name/event/relationship/source/citation) — so every change hits the privacy engine and is audited as the approving human.propose()only inserts a pending row. Model providers stay read-only.ChangeProposalmodel + migration (status, origin, JSONB operations, reviewer, apply_error)./trees/{id}/proposalsAPI + a review page (editor-gated approve/reject) + sidebar entry.Tests: not-applied-until-approved, reject, non-editor-can-see-not-apply, multi-op, approve-with-edits, apply-error-keeps-pending. 87 passed, single alembic head.
Closes #214
🤖 Generated with Claude Code