KB-4EAE
dot-iu-cutter v0.5 — SQL/NoSQL Projection & Rebuild Strategy (DESIGN ONLY) (2026-05-17)
4 min read Revision 1
dot-iu-cutterv0.5projectionsql-ssotvectornosqlrebuilddesign-onlydieu44
dot-iu-cutter v0.5 — SQL/NoSQL Projection & Rebuild Strategy
Date: 2026-05-17
Phase: v0_5_constitution_hardtest_and_information_unit_factory_master_plan
Nature: DESIGN ONLY. No vector/NoSQL write. No projection build. No code.
Parent: dot-iu-cutter-v0.5-constitution-hardtest-master-plan-2026-05-17.md
1. Invariant
authority:
SSOT: PostgreSQL — public.tac_logical_unit + cutter_governance (+ future
registries once authorized)
projection: vector store and any NoSQL/search index are DERIVED, REBUILDABLE,
and NON-AUTHORITATIVE
rule: if the projection and SQL ever disagree, SQL wins and projection is rebuilt.
No read path may treat the projection as truth for identity/lifecycle.
This restates and binds the foundation-review ruling
(vector_NoSQL_projection_search_only).
2. What may be projected
projectable:
- IU canonical_text (for semantic search)
- canonical_address, iu_id, document_version_id (as filterable payload)
- registry-resolved labels/metadata (denormalized for retrieval filters)
- source span pointers (for citation back to SSOT)
not_projected_as_authority:
- lifecycle state, cut/verify verdicts, ledger history -> read from SQL only
3. Rebuild model
rebuild:
trigger: projection is a pure function of SQL state at a given SSOT watermark
watermark: a monotone marker (e.g. max ledger sequence / commit ts) per IU
build_modes:
- full_rebuild: drop projection, re-derive from SQL (always possible)
- incremental: project IUs whose SSOT watermark advanced since last build
idempotent: rebuilding twice from the same watermark yields identical projection
collection_naming: derived from source_document_ref + version, NEVER a hardcoded
collection name / DSN / endpoint in runtime
no_dual_write: writes go to SQL only; projection is built after commit, never
in the same transaction (no distributed-txn coupling)
4. Consistency policy
consistency:
model: read-your-writes NOT guaranteed on projection; eventual after rebuild
staleness_bound: configurable; surfaced to callers (search may lag SSOT)
reconciliation: periodic verify projection-vs-SSOT by iu_id set + checksum;
drift => targeted re-projection (forward, no SSOT mutation)
authority_queries: identity/lifecycle/audit MUST query SQL, never projection
5. Constitution hardtest application
constitution_projection:
- after Q9 staged cut, Constitution IUs are projected for semantic retrieval
- projection carries authority label (enacted/controlled_draft) as a FILTER,
but eligibility-to-cut decisions are taken from SQL, not the projected label
- full rebuild from SQL must reproduce the projection bit-for-bit (A8)
6. Anti-hardcoding (binding)
no_hardcode:
- vector collection name / NoSQL index name: derived from registry, not literal
- DSN / endpoint / credentials: environment + secret store, never inline
- embedding model id: config/registry, not inline constant
7. Open decisions
open_decisions:
OD-P1: projection store + embedding model selection (deferred; not chosen here)
OD-P2: incremental watermark source (ledger sequence vs commit ts)
OD-P3: reconciliation cadence + drift thresholds
OD-P4: whether projection layer is in-scope for v0.5 at all, or v0.6+
8. Do not run yet
No vector write, no NoSQL write, no projection build, no embedding call, no collection creation, no code change. Vector/NoSQL integration is explicitly forbidden (master plan §10). Design only.
9. Git
git: { branch: main, HEAD: e93424b5ff7fa5e4b8406131977ce4339cd0856a,
status_short_iu_cutter: clean, code_changed: false, commit_made: false }