> ## Documentation Index
> Fetch the complete documentation index at: https://prism.ntecdev.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# SPEC-026 v0.1: Tri-graph UPDATE propagation — intent queue, reconciler, event_types

> Tri-graph UPDATE propagation — intent queue, reconciler, event_types

<Info>**Status:** `accepted` · **Version** `0.1` · Filed 2026-04-21</Info>

Extends SPEC-025's write-hook from CREATE-only to mutations. Every UPDATE, retirement, rename, and direct-SQL change flows through :SUPERSEDED\_BY events on :EntityState chains so prism\_state\_as\_of returns historically-correct state.

Architecture: Postgres IS the queue. Five parts — (1) intent-queue write hook (UPDATE writes trigraph\_write\_intents row same txn, returns fast, \~1ms added latency); (2) background worker drains intents per-entity FIFO with backoff + dead-letter; (3) reconciler catches direct-SQL divergence with event\_type='reconciled'; (4) event\_types reference table for code+description+category (Postgres authoritative, 9 seed codes); (5) :UPDATE\_ATTEMPTED self-loop edge for no-op PATCHes preserving transaction-time audit.

Historical backfill explicitly OUT OF SCOPE — Postgres doesn't store old column values, can't reconstruct pre-SPEC-026 mutations faithfully.

5-PR arc: PR1 event\_types seed; PR2 intents table + service hooks; PR3 worker; PR4 reconciler; PR5 no-op edge path. All additive migrations. See on-disk v0.1 draft at docs/specs/spec-026-v0-1-trigraph-update-propagation.mdx for full architecture, verification, acceptance, 6 open questions.

Decisions settled via 2026-04-21 Frank/Donna exchange: async-via-Postgres-queue (not external MQ), :UPDATE\_ATTEMPTED edges for no-ops, enum+reference-table for event\_types, honest punt on historical backfill, reconciler catches direct-SQL drift.

Status: draft
