How it works
When Delphina proposes a knowledge change — from a knowledge update, a validation run, or a chat conversation — the change is packaged as a batch: one reviewable unit with a title, the list of affected documents, and a diff of every edit.- Every change is proposed as a batch and gets a permanent record, so there is always an audit trail of what changed and who approved it.
- If you’re a workspace admin and your own change satisfies the policy, it is approved and merged automatically — you don’t wait on yourself.
- Everyone else’s changes wait for approval. Nothing in the batch takes effect until it is approved and merged.
Deciding who reviews what: the review policy
Every workspace has a review policy — a file named.delphina/review-policy.yaml stored inside the knowledge base itself. It answers one question: for a given change, who must approve it?
A policy is a list of rules. Each rule matches changes by three things:
- Which documents (
paths) — glob patterns over document paths, likesales/**or**/rule/**. - Where the change came from (
sources) —pipeline(knowledge updates),validation-drift(automatic checks against your warehouse), orchat-turn(a person editing through chat). - What kind of change (
change_kinds) —addition,modification, ordeletion.
Example
auto_merge: true.
Approvers come in two forms: workspace role handles (@workspace-admins) — any member of the role can approve, and one member’s approval counts for the role — or individual people by email (@dana@example.com). Custom named groups aren’t supported yet; to require sign-off from a specific team, list its members individually.
Rules are checked top to bottom — order matters
For each changed document, the first rule that matches wins. Put your most specific, most protected paths first: if a broad rule likepaths: ["**"] comes before a narrow one, the narrow rule never fires for changes the broad one already matched.
When a batch touches several documents, every affected document’s rule applies — the batch needs all of the resulting approvals before it can merge. A batch only auto-merges if every change in it is auto-mergeable, so a sensitive edit can’t slip through by riding along with routine ones.
What happens with no policy file
Sensible defaults apply until you add one:- Every change needs one approval from a workspace admin. A workspace admin’s own changes satisfy that automatically and merge right away; everyone else’s wait for an admin.
- Editing the policy file itself needs a workspace admin’s approval too — so the rules of the game can’t be changed unilaterally.
Keeping the queue healthy
- Stale batches. A batch nobody reviews within
stale_after_dayscloses automatically. If the change still matters, its producer re-proposes it — your queue reflects what’s current, not what’s forgotten. - Escalation. If a required approver is unavailable, members of the
escalation_rolecan approve in their place afterescalation_after_days. Escalated approvals are labeled as such in the batch’s history. - Audit trail. Every approval, rejection, comment, and escalation is recorded on the batch, and every merged batch is a permanent entry in the knowledge base’s version history.