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 }
Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.5-constitution-hardtest-design/dot-iu-cutter-v0.5-sql-nosql-projection-and-rebuild-strategy-2026-05-17.md