Skip to content

Re-ingest Readiness Surface (ID-64 {64.8} go/no-go board)

Re-filed S504 (ruling R10), from runbooks/: a go/no-go decision board (ID-64 {64.8}) — reference material, not a procedure.

Re-ingest Readiness Surface — pre-cutover go/no-go board

Section titled “Re-ingest Readiness Surface — pre-cutover go/no-go board”

What this is. The single board that aggregates every pre-re-ingest gate for the clean full-corpus re-ingest (ID-45), each with its owner and a live GREEN / RED / N-A status. It is a living status snapshot: a RED gate is reported as RED (correct and expected) — this surface does not block on RED, it makes the blockers legible so Liam can call the cutover at the right moment.

What this is NOT. It is not the cutover mechanism — that is the Re-ingest Cutover Runbook, which this board’s GREEN status gates (INV-29 is the join point). It does not re-implement the per-gate work; it observes it.

  • A-gates — ID-64’s own schema / FK / write-path migrations. These are the DDL that must be on prod before the corpus writes a single row.
  • B-gates — Task-level dependencies (ID-56 / ID-62 / ID-63). Reference-only: their GREEN status is a precondition this board observes; the work is owned elsewhere.
  • C-gate — the data-retention export + re-link plan ({64.7}).
  • D-cutover — the cutover runbook exists and contains the prod-ref safety check.
  • G1–G6 — the ID-93 “pre-reingest intent-gap” additions (ratified 08/06/2026), as amended by the 08/06, 10/06 (S332) and later journal updates.
GateOwnerStatusEvidence / blocker
A — {64.2} origin_kind value rename derived_from_bid_response → derived_from_form_responseID-64🟢 GREENsubtask done
A — {64.3} drop 5 cross-target FKs (cocoindex per-target autocommit)ID-64🟢 GREENsubtask done
A — {64.4} remaining real-missing FKs (excl. op_id) + form_template*ID-64🟢 GREENsubtask done
A — {64.5} confirm role-based single-tenant RLS model + RESEARCH framingID-64🟢 GREENsubtask done
A — {64.6} entity_aliases FK / retention disposition (OQ-64-4)ID-64🟢 GREENsubtask done
A — {64.9} content_items primary_domain/primary_subtopic NOT NULL + uniqueID-64🟢 GREENsubtask done
A — {64.10} content_items write-path reconciliation (content rename + title)ID-64🟢 GREENsubtask done
A — {64.11} source_documents write-path reconciliation (content_hash rename)ID-64🟢 GREENsubtask done
A — {64.12} drop 5 AI-telemetry token cols + rewrite item-provenance consumerID-64🟢 GREENsubtask done (commit c310adba7)
A — {64.13} drop 4 orphan content_items cols + reader rewritesID-64🟢 GREENsubtask done (commit 5c02dc08a)
A — {64.14} bid→form rename (bid_responses + history + bridge)ID-64🟢 GREENsubtask done
A — {64.16} rename get_bid_* RPCs → get_form_* (completes {64.14})ID-64🟢 GREENsubtask done
A7 — types-parity regen database.types.ts after the last DDL; supabase-types-parity CIID-64🟢 GREENlast DDL = eebb5c325 (ID-95.5); regen 05b100440 post-dates it; git log 05b100440..HEAD -- supabase/migrations/ is empty → parity current, no regen pending
B — ID-62 fixture-staging live tier (HARD gate)ID-62🟢 GREENtask done
B — ID-63 ontology / CV integrationID-63🟢 GREENtask done
B — ID-56 chunking (Variant B ratified)ID-56🟢 GREENtask done (CLOSED S353 — {56.12} folder-drop landed; was the board’s last RED gate)
C — {64.7} retention export + re-link plan (content_items keep-set, feed_articles relink)ID-64🟢 GREENsubtask done; plan doc present (specs/id-64-pre-reingest-readiness/retention-export-relink-plan.md), source-driven model bl-106 v2 RATIFIED S350
D — cutover runbook exists + cat supabase/.temp/project-ref before any prod pushID-64🟢 GREENrunbook present; project-ref check confirmed at runbook L128 (precondition, MUST read prod ref rovrymhhffssilaftdwd), L215 (re-confirm before restore), L119–121 (relink-to-prod only at deliberate cutover step)
G1 bl-92/93 classifier-fix porting → cocoindex extraction promptID-64 / ID-93🟢 GREENSATISFIED 08/06 (commit df4463cd): bl-93 table-heavy recall ported into ENTITY_MENTION_PROMPT, truncation half already satisfied (content_text fed unbounded). bl-92 N/A — cocoindex path has no entity-relationship extraction (S203 holder-rule surface was the removed kh_pipeline; N/A-retirement superseded by ID-101). Both backlog items retired.
G2 zero-row re-check on bid_questions/bid_responses/content_citations⚪ N-ADROPPED 08/06 — platform not live, surface cannot gain rows pre-run. Caveat (S332 re-review): if bid-testing UAT begins on the renamed form_* tables before the ID-45 run, the zero-row premise lapses → revisit {64.7} re-link extension (content_citations.content_item_id + bid_questions.matched_content_ids uuid[] — array, no FK, silent orphaning).
G3 bl-74 q_a_pair_history superseded_by + source_workspace_id (pre ID-45 promotion)ID-64 {64.15}🟢 GREENsubtask done; history is append-only — landed before the promotion step so lineage is preserved
G4 ID-94 alternate-phrasings capture-at-ingestID-94🟢 GREENtask done (was “in flight” at last journal; now complete)
G5 Lane-A folds: bl-42 empty-string coercion + bl-43 PK rename + bl-106 ingestion_sourceID-64 {64.17}🟢 GREENbl-42/bl-43 landed via {64.17} (done; migs 20260609225144 + 20260609230521). bl-106 escalated S332, v2 RATIFIED S350 (source-driven keep-set, model-independent) — cutover runbook + retention plan stand through the correction.
G6 — ID-58 (T11 citations) schema slice ratified pre-cutoverID-58🟢 GREENtask done; spec chain (PRODUCT/TECH/PLAN) present + ratified
G6 — ID-59 (T9 write-back) schema slice ratified pre-cutoverID-59🟡 GREEN¹task in_progress but the schema slice is ratified (PRODUCT/TECH/PLAN present; {59.14} UC5 promotion DDL landed 83ffc1d3d). Full feature build is intentionally post-cutover; only the schema slice gates cutover, and it is in.
G6 — ID-57 (T10) — C5-decoupled, no pre-cutover actionID-57⚪ N-Atask in_progress but C5-decoupled (no cutover action required); {57.5} question_matches DDL already landed 5dde22500 as an opportunistic G6 slice
G6 — ID-60 (T12 KG) — no pre-re-ingest action (alt mechanism via ID-71)ID-60⚪ N-Atask spec_needed, no spec dir — deliberately deferred; KG path goes via ID-71, not the re-ingest
Gate-zero — bl-252 cocoindex 1.0.7ID-64🟢 GREENDONE (commit 7ed1821c)

¹ ID-59 GREEN-with-note: the gating condition for cutover is the schema slice ratified (per OQ-64-5 “structurally complete, based on ratified specs”), not full task completion. The schema slice is ratified and its DDL has landed; the task’s in_progress status reflects post-cutover feature work that does not gate the re-ingest. Treated GREEN for cutover purposes.

Verdict (22/07/2026): board fully GREEN/N-A on its own terms — but the board itself is STALE and needs a full gate refresh before any cutover call. Every gate above is GREEN or N-A (ID-56 closed S353 cleared the last RED). However, per the ledger-drift section below:

  1. DR-025 (S441) reframed ID-45 — the run is now a one-time onboarding ingest (ingest-once, no ongoing watch), not the “clean full-corpus re-ingest” this board was authored for, and added {45.7} fence wiring.
  2. ID-131 retired content_items and re-parented the five extraction tables to source_document_id — the A-gate rows {64.9}/{64.10}, the C-gate retention keep-set, and the G2 caveat all reference retired/renamed surfaces.
  3. The A7 types-parity evidence is dated 13/06 and predates the ID-95.5 + ID-131 migration waves.

Do not call the cutover from this board as-is — re-derive the gate set against the DR-025 framing + post-ID-131 schema first. The G2 caveat (silent orphaning of bid_questions.matched_content_ids uuid[] — no FK) still deserves a zero-row re-check immediately before the run, against whatever the post-ID-131 equivalent surfaces are.

When the board is GREEN, execute the cutover via the Re-ingest Cutover Runbook — specifically the D2 relink step (runbook §3, L119–121): re-ingest to the verified non-prod Preview branch → spot-verify (classification parity, embedding presence, FK integrity, USING(true) single-tenant RLS) → only then cat supabase/.temp/project-ref (re-confirm prod ref rovrymhhffssilaftdwd) and relink to prod for the in-place data restore. The post-cutover DB state is the client-handover state.

  • Re-ingest Cutover Runbook — the D-lane mechanism this board gates (§1 INV-29 preconditions = this board’s GREEN status; §3 the hybrid-(c) sequence; §8 the relationship to this surface).
  • ID-64 {64.7} retention plan — ../specs/id-64-pre-reingest-readiness/retention-export-relink-plan.md (C-gate input; source-driven keep-set, bl-106 v2).
  • ID-93 register §6/§8 — ../specs/id-93-pre-reingest-intent-gap/RESEARCH.md (G1–G6 origin).
  • ID-64 phase-a-findings.md ITEM4 (hybrid-(c) recommendation) + historic-reingest-doc-review.md §3/§4 — ../specs/id-64-pre-reingest-readiness/.
  • supabase/CLAUDE.md (KH repo) — the cat supabase/.temp/project-ref before-any-push gotcha.
  • [status-changed] ID-56 is done (CLOSED S353, {56.12} folder-drop landed; tasks/id-56.md). The board’s single RED gate and the “NOT-READY” verdict hang on {56.12} pending — on the board’s own terms it is now fully GREEN/N-A.
  • [status-changed] ID-64 is done (closed S352; tasks/id-64.md). The A7 types-parity row’s “no regen pending” evidence is dated 13/06 and predates the ID-95.5 and ID-131 migration waves (S445 GO#2 applied 9+2 migrations to staging+prod).
  • [status-changed] ID-45 was reframed by DR-025 (S441, reference/decision-register.md): the run is now a one-time ONBOARDING ingest (ingest-once, no ongoing watch — status_note S441/R4), plus a new {45.7} fence-wiring subtask (S443; tasks/id-45.md). The board’s “clean full-corpus re-ingest” framing predates the corpus reframe.
  • [spec-section-changed] ID-131 (upstream added to this board 05/07/2026; tasks/id-131.md) retired content_items ({131.17} final shipped S449, gate green rg==0) and re-parented the five extraction tables to source_document_id ({131.8} M2, S429). The A-gate rows {64.9}/{64.10}, the C-gate retention keep-set, and the G2 caveat’s content_citations.content_item_id re-link all reference retired or renamed surfaces — the board needs a full gate refresh before any cutover call.
  • [status-changed] ID-45 scope has expanded beyond the {45.7} fence-wiring subtask recorded in the 05/07 drift section: {45.8} (re-baseline PRODUCT keep-set filter post-M6
    • DR-025 R4), {45.9} (client OKF bundle production + first publication), {45.10} (new-client-deploy ontology-seeding + platform→client promotion runbook), and {45.11} (entity-canonicalisation dedupe pass before first client bundle) were added S463/S465 (ledgers/tasks/ID-45.md). None are represented on this board; several (notably {45.9} and {45.11}) are pre-first-client-bundle gates. DR-060 (MEMO-DELTA, OKF-aligned config invalidation, ratified S469) further bears on the cutover’s config-invalidation surface — not cited by this board and does not supersede the cited DR-025 (still accepted).
  • [status-changed] ID-131 itself is now done (CLOSED S451, commit 3bfd644f, ledgers/tasks/ID-131.md); status_note records 39/39 subtasks, M6 GO applied both envs S450, simplification pass + quality-review PASS_WITH_NOTES. The 05/07 drift bullet above flagged content_items retirement and the gate-refresh call but predates the parent task close — the L-records refactor is no longer “mid-endgame” but closed, so the A-gate refresh the 05/07 bullet called for now lands against a closed ID-131, not an in-flight one. No change to the board’s gate table (no-rewrite rule); recorded as evidence only.