Skip to content

S238 pre-S239 consistency audit — DG + central synthesis + pilot cross-refs

S238 pre-S239 consistency audit — DG + central synthesis + pilot cross-refs

Section titled “S238 pre-S239 consistency audit — DG + central synthesis + pilot cross-refs”

Audit date: 14/05/2026 (S238 wrap — pre-S239 Wave 1 dispatch gate) Auditor: S238 consistency-audit sub-agent (worktree agent-a92cc5e2a155c9825). Branch head: ae9577e2 (chore(WP5): annotate migration draft with post-apply SCHEMA-QUICK-REF sync note). Scope: Adversarial cross-check of the Phase 0.9 central register, the heritage/strategy docs cited in the S238 pilot, the supabase-platform action items, and the schema-quick-reference — to verify that the docs feeding the 7 remaining S239 Wave 1 sub-doc dispatches (02-data-flow.md + 03-tech-stack.md + 04-workspace-types.md + 05-qa-flow.md + 07-collapse-list.md + 08-new-features.md + 09-diagrams.md) are mutually consistent + accurate + up-to-date. 06-mcp-tooling.md stays gated on Theme F per 00-synthesis-v2.md §5.2 row 1 and is out of scope for Wave 1. Confidence: HIGH for §§1-3, §7, §9, §10 (line-level cross-checks). MEDIUM for §§4-6, §8 (judgement calls on heritage-doc framing and on what counts as “drift” vs “expected lag”).

Audit rule: This doc audits only. No rulings. Liam ratifies remediation.


For each of the 10 mandated check categories the audit:

  1. Opened the central register docs (0.9-decision-graph.md §11, 00-synthesis-v2.md §3 + §5, 0.9-collapse-candidates.md §12-§14, feedback-findings-review.md §5 + §6) and the readiness assessment (INV-architecture-split-readiness.md §2 + §3 + §5).
  2. Identified the Q-OQR1-XX / WP8 / S237 CV / docs-site / Supabase-deadline / heritage-doc claim to check.
  3. Walked through every ratifying citation in the pilot (docs/plans/phase-0-investigation/architecture/01-vision.md §1-§7) and confirmed the cited section exists in the cited doc with the cited disposition.
  4. Spot-checked a random sample of S237 CV resolutions (CV 02 / CV 03 / CV 04 / CV 06 / CV 13 / CV 16 / CV 19) against the docs/ontology/*.md Notes blocks.
  5. Cross-referenced supabase-db-action-items.md Item 1 + Item 2 + Item 3 against the migration draft supabase/migrations/20260514150238_enable_rls_auto_event_trigger_and_grants_pattern.sql.
  6. Sampled the SCHEMA-QUICK-REFERENCE.md Last verified header + the workspaces row vs the post-S237 ratified schema state.

Where the cited source genuinely says the cited thing, the row is CONSISTENT. Where two sources say materially different things on the same ratification, the row is DRIFT-DETECTED. Where one source lags another because an apply step (migration / code sweep / doc-site build) has not landed, the row is LAG-ACCEPTABLE with explicit “apply tracks the gap” rationale.


§2. Check 1 — Decision-graph §11 vs 00-synthesis-v2.md §3 + §5: Q-OQR1-01..17 + WP8 + S237 CV

Section titled “§2. Check 1 — Decision-graph §11 vs 00-synthesis-v2.md §3 + §5: Q-OQR1-01..17 + WP8 + S237 CV”

Verdict: CONSISTENT (with one minor concern in §3 below — feedback-findings-review §5.2.1 lag).

Q-OQR1 cross-checks (each row checked against both docs)

Section titled “Q-OQR1 cross-checks (each row checked against both docs)”
Q-OQR1-XXDisposition in 00-synthesis-v2.mdDisposition in 0.9-decision-graph.md §11.1Match?
Q-OQR1-01Option (c) hybrid with provenance (§3.4)RESOLVED-S235 Option (c) hybrid (§11.1 ONT.2)YES
Q-OQR1-02Procurement umbrella rename (§3.5)RESOLVED-S235 rename pre-launch (§11.1 ONT.4)YES
Q-OQR1-036 baseline core application_types (§3.4)RESOLVED-S235 6 types: procurement, intelligence, sales_proposal, product_guide, competitor_research, training_onboarding (§11.1 ONT.3)YES
Q-OQR1-04 (KISS single discriminator)Implied in §3.4 satellite-pattern framingCited in §11.1 Q1.13 narrative (line 241) — KISS single discriminator + Finding 05 Option B patternYES
Q-OQR1-05 (lib/bid/lib/procurement/)Implied in §3.5 cascade rename blockRESOLVED-S235 cited in §11.1 ONT.4 + §11.3 row 4YES
Q-OQR1-06Corpus-level + scope_tag-driven (§3.6)RESOLVED-S235 corpus-level (§11.1 ONT.5)YES
Q-OQR1-07Nullable source_workspace_id for provenance (§3.6)Cited in §11.1 ONT.5 + N11 §2.3YES
Q-OQR1-08Workspace-private q_a_pairs DEFERRED-v1.1 (§3.14 + §5.3)RESOLVED-S235 defer to v1.1 (§11.1 ONT.6)YES
Q-OQR1-09source_documents.workspace_id nullable (§3.15)RESOLVED-S235 NULLABLE (§11.1 ONT.7)YES
Q-OQR1-10 (Multi-wing content semantics)STILL-OPEN, defer to operational (§5.2 row 9)STILL-OPEN, defer to operational impl (§11.4.2)YES
Q-OQR1-11Provenance pattern across hybrid vocabularies (§3.7)RESOLVED-S235 across all hybrid vocabularies (§11.1 ONT.8)YES
Q-OQR1-12Markdown ontology frontmatter shape (§3.7 WP6 implication)Implied in ONT register; landed S236-S237 per §5.3 + §11.4.5YES
Q-OQR1-13Admin UI v1.1 (§3.13 + §5.3)RESOLVED-S235 v1.1 (§11.1 ONT.10)YES
Q-OQR1-14 (Form_type behaviour code vs data-driven)STILL-OPEN, code-driven v1 / data-driven v2 (§5.2 row 8)STILL-OPEN, code-driven v1 (§11.4.2)YES
Q-OQR1-15 (application_types.state_machine_config jsonb shape)Not in main synthesis-v2 register; appears in 0.9-collapse-candidates.md §13 row 4 as DEFERRED to implDEFERRED in collapse-candidates.md §13 (Q-OQR1-15 sub-state semantics)YES
Q-OQR1-16Combined PR scope per §3.4 + §3.5 + §3.6 + §3.7 + §3.8 + §3.15§11.3 combined schema-restructure PR scope (10 components verbatim)YES
Q-OQR1-17”All planned/needed” (§3.12 — Layer-1 CVs added) — Q-OQR1-17 is the catch-all bullet covering the new CVsSame content in §11.1 ONT.12-ONT.17YES

Verdict for Q-OQR1 cross-checks: all 17 entries CONSISTENT between 00-synthesis-v2.md §3 + §5 and 0.9-decision-graph.md §11. Confidence HIGH.

WP8 item00-synthesis-v2.md §5.10.9-decision-graph.md §11.4.1Match?
N7 op_id propagationCocoindex + industry best practice; trigger-driven for platform-wide audit cohesion + cocoindex per-flow op_id (lands in 02-data-flow.md)RESOLVED-S236; same disposition (cocoindex + industry best practice; principled hybrid; lands in WP4 02-data-flow.md)YES
N9 per-method scoringSeparate embedding_score + fulltext_score columns on bid_question_matches; op-verify deferred to feature specRESOLVED-S236; same dispositionYES
audit_log RLS (OQ-Q24-B + OQ-Q113-B)Adopt Supabase rls_auto_enable() event trigger platform-wide (per supabase-db-action-items.md Item 2). Lands in dedicated RLS pattern doc + new migration paired with §3.17 grants helperRESOLVED-S236; adopt Supabase rls_auto_enable() event trigger platform-wide (per supabase-db-action-items.md Item 2). Lands in dedicated RLS pattern doc + new migration paired with §11.4.3 grants helper. Closes Q24-B + Q113-B togetherYES

Verdict for WP8: all 3 items CONSISTENT. Confidence HIGH.

S237 CV cross-checks (CV 02 / CV 03 / CV 04 / CV 06 / CV 13 / CV 16 / CV 19)

Section titled “S237 CV cross-checks (CV 02 / CV 03 / CV 04 / CV 06 / CV 13 / CV 16 / CV 19)”
CV00-synthesis-v2.md §5.4 / §3.70.9-decision-graph.md §11.4.5docs/ontology/*.md Notes block (S237)Match?
CV 02 (33 vs 31 count drift)Prose reconciled to 33 baseline values (§3.7 + §5.4)Same disposition (§11.4.5)docs/ontology/02-taxonomy-subtopics.md line 124 + Notes §“Seed-file derivability (Ratified-S237)“YES
CV 03 layer-vocabulary provenance ALTERALTER ratified for Q-OQR1-16 combined PR (§3.7 + §5.4)RATIFIED-S237 ALTER for Q-OQR1-16 (§11.4.5)docs/ontology/03-layer-vocabulary.md Notes §“Provenance column ALTER (Ratified-S237)“YES
CV 03 UI nesting spec deferredDEFERRED-S238+, v1 keeps 4 live keys (§5.3 + §5.4)DEFERRED-S238+ same (§11.4.4 + §11.4.5)docs/ontology/03-layer-vocabulary.md Notes §“UI nesting spec (Deferred-S238+)“YES
CV 04 policy vs complianceAuthor-vs-evidence rule (ISO management-system framing) (§3.7 + §5.4)RATIFIED-S237 same rule (§11.4.5)docs/ontology/04-content-type.md Notes §“policy vs compliance — Ratified-S237”YES
CV 04 retire capabilityLockstep-with-migration retire pattern; enum 15→14 (§3.7 + §5.4)RATIFIED-S237 lockstep pattern (§11.4.5)docs/ontology/04-content-type.md Notes §“methodology vs capability — Ratified-S237 retire”YES
CV 06 regulation vs date_boundRegulation-as-specialisation rule; DCAT-AP-aligned (§3.7 + §5.4)RATIFIED-S237 same (§11.4.5)docs/ontology/06-lifecycle-type.md Notes §“regulation vs date_bound — Ratified-S237”YES
CV 13 bid_librarybid_library_extractionInference-internal rename; cleanup PR separate (§3.7 + §5.4)RATIFIED-S237 rename (§11.4.5)docs/ontology/13-ingest-source.md Notes §“Pipeline parameter vs DB value distinction”YES
CV 16 firecrawl prune-on-migrationLockstep-with-migration retire pattern (§3.7 + §5.4)RATIFIED-S237 same (§11.4.5)docs/ontology/16-extraction-method.md Notes §“firecrawl retired-S236, prune-on-migration”YES
CV 16 trafilatura + pdfplumber retire on DoclingRetire on Docling adoption; WP4 02/03 reconciliation (§3.7 + §5.4)RATIFIED-S237 same (§11.4.5)docs/ontology/16-extraction-method.md Notes §“Python extractor divergence — Ratified-S237”YES
CV 19 engineering-types KEEPRATIFIED-S237 KEEP (§5.4)RATIFIED-S237 KEEP (§11.4.5)docs/ontology/19-engineering-types.md Notes §“Ratified-S237 keep”YES

Verdict for S237 CV resolutions: all 7 CV closures CONSISTENT across all three locations (synthesis-v2 §5.4, decision-graph §11.4.5, and the corresponding docs/ontology/*.md Notes block). Confidence HIGH.

  • 00-synthesis-v2.md §5.4 row 1: “Astro+Starlight ratified as docs-site framework. Same-repo docs-site/ sub-directory most likely; standalone repo retained as contingency only. docs/ontology/README.md ‘GitBook auto-update plan’ section retired in favour of ‘Docs-site auto-update plan (Astro + Starlight)’ with workflow-orchestration §8 docubot replication pattern + Claude Agent SDK integration. Build deferred to production-readiness track per Liam.”
  • docs/ontology/README.md §“Docs-site auto-update plan (Astro + Starlight)” (line 66 onward): present; line 70 confirms “Stack ratified S237: Astro + Starlight (NOT GitBook). Same-repo docs-site/ sub-directory most likely; standalone repo retained as a contingency only…”; line 89 confirms “Build deferred to production-readiness track.”

CONSISTENT. Confidence HIGH.


§3. Check 2 — 0.9-collapse-candidates.md §12-§14 vs 00-synthesis-v2.md §5: retire markers + lockstep pattern

Section titled “§3. Check 2 — 0.9-collapse-candidates.md §12-§14 vs 00-synthesis-v2.md §5: retire markers + lockstep pattern”

Verdict: CONSISTENT.

Marker familycollapse-candidates.md location00-synthesis-v2.md corresponding locationMatch?
RATIFIED-RETIRE-S235 (workspaces.type text column + CHECK; kb_section value; unpdf; Q4.12 cost-tracking pattern; custom freshness governance for URL inputs)§12.1 + §12.3 + §12.4§2.3 N3 + §3.8 + §3.10 + §3.11YES — rows match
DEFERRED-v1.1-S235 (private_to_workspace_id; Admin UI for client-managed vocabs)§12.2 row 3 + §13 row 2§3.13 + §3.14 + §5.3 rows 3-4YES
RATIFIED-DO-NOT-BUILD-S235 (pipeline_failures; q_a_pairs.workspace_id UUID NOT NULL planned shape; q_a_pair_workspaces M:N junction; idx_q_a_pairs_workspace)§12.2 rows 1-2 + 4; §12.3 row 1§3.10 + §3.6 framing (NO direct workspace FK on q_a_pairs)YES
RATIFIED-RENAME-S235 (templates → form_templates; template_fields → form_template_fields; template_requirements → form_template_requirements; bid_workspaces → procurement_workspaces; lib/bid/* → lib/procurement/*; BID_STATES → PROCUREMENT_WORKFLOW_STATES; bid_question_matches → question_matches)§12.1 rows 3-6 + §12.5§2.2 I1 + §2.2 I2 + §3.5YES

S237 CV-driven retires (lockstep-with-migration retire pattern)

Section titled “S237 CV-driven retires (lockstep-with-migration retire pattern)”
Retire entrycollapse-candidates.md §1400-synthesis-v2.md §5.4 / §3.7Match?
CV 04 content_items.content_type='capability'§14.1 RATIFIED-RETIRE-S237 (lockstep); enum 15→14§5.4 row “CV 04 content-type — methodology vs capability”: RATIFIED-S237 retire capability (lockstep)YES
CV 16 feed_articles.extraction_method='firecrawl' (27 prod rows)§14.2 RATIFIED-RETIRE-S237 (prune-on-migration timing; lockstep)§5.4 row “CV 16 extraction-method — firecrawl provenance enum extension OR prune”: RATIFIED-S237 prune-on-migration timing (lockstep)YES
scripts/kb_pipeline/extract.py trafilatura write path§14.3 RATIFIED-RETIRE-S237 (conditional on Docling adoption)§5.4 row “CV 16 extraction-method — Python extractor divergence”: RATIFIED-S237 retire on DoclingYES
scripts/kb_pipeline/extract.py pdfplumber write path§14.3 RATIFIED-RETIRE-S237 (conditional on Docling)§5.4 row “CV 16 extraction-method — Python extractor divergence”: RATIFIED-S237 retire on DoclingYES
CV 13 lib/layer-inference.ts:21 bid_library parameter literal§14.4 RATIFIED-RENAME-S237 → bid_library_extraction (NOT a retire)§5.4 row “CV 13 ingest-source — bid_library cleanup”: RATIFIED-S237 renameYES
docs/ontology/README.md “GitBook auto-update plan” section§14.5 RATIFIED-RETIRE-S237 (already replaced by Astro+Starlight)§5.4 row “Astro+Starlight docs-site framework (vs GitBook)”: RATIFIED-S237 Astro+Starlight (GitBook framing retired)YES

Lockstep-with-migration retire pattern explicitly noted in both docs

Section titled “Lockstep-with-migration retire pattern explicitly noted in both docs”
  • collapse-candidates.md §14 preamble: “All four follow the lockstep-with-migration retire pattern introduced at S237: the WP6 markdown CV (docs/ontology/*.md) retains the value in baseline_values until the Q-OQR1-16 combined PR migration drops the corresponding DB CHECK value — keeping the CV in lockstep with the live schema.”
  • 00-synthesis-v2.md §3.7 + §5.4: “Lockstep-with-migration retire pattern (CV 04 baseline_values keeps capability until DB CHECK drops it)” — explicit twice (CV 04 + CV 16).

CONSISTENT. Confidence HIGH.


§4. Check 3 — feedback-findings-review.md §5 + §6 vs 00-synthesis-v2.md §3 + §5

Section titled “§4. Check 3 — feedback-findings-review.md §5 + §6 vs 00-synthesis-v2.md §3 + §5”

Verdict: DRIFT-DETECTED — MEDIUM severity. Two rows in feedback-findings-review.md §5.2.1 lag the S236 WP8 rulings.

Cross-referenced every disposition row in feedback-findings-review.md §5.2 + §5.3 + §6 against the corresponding row in 00-synthesis-v2.md §2 + §3 + §5 + decision-graph §11.4.1.

Rowfeedback-findings-review.md disposition00-synthesis-v2.md dispositionSeverity
§5.2.1 row 6 (OQ-Q24-B audit_log RLS pattern)STILL-OPEN — RLS pattern doc pending (orthogonal to prereqs); aligned to OQ-Q113-B”§3.16 + §5.1 + decision-graph §11.4.1: RESOLVED-S236 — adopt Supabase rls_auto_enable() event triggerDRIFT-DETECTED MEDIUM
§5.2.1 row 7 (OQ-Q24-C op_id propagation pattern)STILL-OPEN — not a cocoindex decision per Prereq 2 §1.3 N7; working default per Finding 01: hybrid”§3 N7 + §5.1 + decision-graph §11.4.1: RESOLVED-S236 — cocoindex + industry best practice; trigger-driven for platform-wide audit cohesion + cocoindex per-flow op_idDRIFT-DETECTED MEDIUM

These two rows are in §5 of the doc — the “post-prereq resolution rollup” written at S234. The S236 WP8 rulings updated both items to RESOLVED. The §6 “S237 closures appended” section was added at S237 (lines 588-628) but did not retroactively close the §5.2.1 STILL-OPEN markers. §6.4 lists “STILL-OPEN items NOT addressed at S237” — and includes only Theme F + the doc split, correctly indicating that audit_log RLS + op_id are NOT still-open. But §5.2.1 rows 6+7 still read as STILL-OPEN, which is now stale.

Remediation guidance (HIGH severity for S239 dispatch? — NO, MEDIUM)

Section titled “Remediation guidance (HIGH severity for S239 dispatch? — NO, MEDIUM)”

feedback-findings-review.md §5.2.1 rows 6+7 should be updated to RESOLVED-S236, with a “(superseded by §6 / S236 WP8 ruling — see 00-synthesis-v2.md §3.16 + §5.1 + decision-graph §11.4.1)” cross-link. This is a documentation-hygiene issue, not a Wave 1 sub-doc dispatch blocker — the canonical synthesis-v2 + decision-graph + §6 of feedback-findings-review are correct, and 02-data-flow.md writer must read those primary sources per the S239 dispatch prompt.

Action: add this as a doc-hygiene item Liam can ratify post-Wave-1, OR fold into the §5 → §6 rectification when feedback-findings-review is next touched. Does NOT block Wave 1.

  • §5.1 Themes A-G dispositions: CONSISTENT with 00-synthesis-v2.md §2 + §3 (Theme A procurement umbrella, Theme E application_types Option (c), Theme F STILL-OPEN are all aligned).
  • §5.2.2 Finding 02 rows (Q1.11 polymorphic citing_entity; Q1.12 question_matches with question_kind discriminator; q_a_pair corpus-level + scope_tag-driven per Q-OQR1-06): CONSISTENT.
  • §5.2.3 Finding 03 rows (Q1.13 Shape B with application_type_id FK; Q3.11 templates → form_templates): CONSISTENT.
  • §5.2.4 Finding 04 rows (OQ-Q35-C no checklist enum; OQ-Q11-A ExtractByLlm): CONSISTENT.
  • §5.5 Docling spike resolution + Cloud Run sidecar architecture finding (NEW from spike): CONSISTENT with 00-synthesis-v2.md §3.1 + §3.2.
  • §6.1 CV-level closures (all 10 entries): CONSISTENT with 00-synthesis-v2.md §5.4 + §3.7 + decision-graph §11.4.5.
  • §6.2 Astro+Starlight docs-site closure: CONSISTENT with synthesis-v2 §5.4.
  • §6.3 WP6 D1 + E2 land: CONSISTENT with synthesis-v2 §5.3 + decision-graph §11.4.5.
  • §6.4 STILL-OPEN items: CONSISTENT — lists only Theme F + the architecture doc split.

§5. Check 4 — INV-architecture-split-readiness.md §2 + §3 + §5 vs 00-synthesis-v2.md §4 + §5

Section titled “§5. Check 4 — INV-architecture-split-readiness.md §2 + §3 + §5 vs 00-synthesis-v2.md §4 + §5”

Verdict: CONSISTENT (with one cosmetic finding flagged below — not blocking).

INV §2 — 10 superseded source-doc items

Section titled “INV §2 — 10 superseded source-doc items”

Each row in INV §2 cites a ratifying doc. The audit checked each citation actually resolves (the cited section exists in the cited doc with the cited disposition):

INV §2 rowCitationCited section exists with stated content?
1 (q_a_pairs schema NOT NULL → corpus-level)Q-OQR1-06; 00-synthesis-v2.md §3.6; 0.9-decision-graph.md §11.1 ONT.5; 0.9-collapse-candidates.md §12.2 row 1YES — all four citations resolve
2 (§6 Q&A model framing per-workspace via FK → corpus-level + scope_tag overlap)Q-OQR1-06; 00-synthesis-v2.md §3.6YES
3 (§1.2 / §10 bid_workspaces satellite → procurement_workspaces)Q-OQR1-02 + Q-OQR1-05; decision-graph §11.1 ONT.4 + §11.3 row 4; collapse-candidates §12.1 rows 3-5YES
4 (workspaces.type text CHECK → application_type_id FK)Q-OQR1-01 (Option (c) hybrid) + Q-OQR1-03; 00-synthesis-v2.md §3.4; decision-graph §11.1 ONT.2 + ONT.3YES
5 (kb_section workspace type → retire)Q-OQR1-S235 + WP-ONTO-R1 §7; 00-synthesis-v2.md §3.8; collapse-candidates §12.1 row 2YES
6 (source_documents slim → Option α nullable workspace_id)B2 RESOLVED-DIRECTIONAL-S234 + Q-OQR1-09; 00-synthesis-v2.md §2.1 B2 + §3.15; collapse-candidates §2.1YES
7 (digestschange_reports + project_idworkspace_id combined PR)Q-OQR1-16; decision-graph §11.3 (10-item combined-PR scope); 00-synthesis-v2.md §2.3 N3YES
8 (templatesform_templates 3-table rename)I2 RESOLVED-S234 + Q-OQR1-11; 00-synthesis-v2.md §2.2 I2 + §3.7; collapse-candidates §12.5YES
9 (Cloud Run sidecar architecture for Docling)S234 Docling bake-off §5; 00-synthesis-v2.md §3.1 + §3.2; decision-graph §11.2 COCO.2 + COCO.6YES
10 (Pattern A/B parser → ExtractByLlm recurring runtime adapter)B1 RESOLVED-S234 (Prereq 2 Rec 1); 00-synthesis-v2.md §2.1 B1; collapse-candidates §12.3 row 3YES

CONSISTENT. All 10 superseded items in INV §2 have intact citations.

INV §3 — WP4 readiness map (row-by-row vs synthesis-v2 §4)

Section titled “INV §3 — WP4 readiness map (row-by-row vs synthesis-v2 §4)”
Sub-docINV §3 readiness statesynthesis-v2 §4 readiness stateMatch?
01-vision-missionREADY-TO-DRAFT (“None blocking” per 00-synthesis-v2.md §4 row 1)READY-TO-DRAFT (None blocking)YES
02-data-flowREADY-TO-DRAFT (B2/I3/B1/N5/N6/N7/OQ-CX33-A all RESOLVED; cross-link to RLS-PATTERN doc TBD)READY-TO-DRAFT (same list)YES
03-tech-stackREADY-TO-DRAFT (add Docling + Cloud Run sidecar)READY-TO-DRAFT (same)YES
04-workspace-typesREADY-TO-DRAFT (big sub-doc; application_types + kb_section retire + procurement rename + q_a_pairs corpus-level)SameYES
05-qa-flowREADY-TO-DRAFT (I3/B1/N1/N8/N9/N11 RESOLVED + q_a_pairs corpus-level shape)SameYES
06-mcp-toolingSTILL-OPEN (Theme F MCP-action review pass STILL-OPEN)STILL-OPEN per §4 row 6 + §5.2 row 1YES
07-collapse-listREADY-TO-DRAFT (driven by 0.9-collapse-candidates.md)READY-TO-DRAFT (new tier markers per S235 refresh)YES
08-new-featuresREADY-TO-DRAFT (N4 cosmetic; OQ-Q310-A/B / OQ-Q38-A/G RESOLVED-S234; Knowledge Map cocoindex substrate per CX.32; surface scope still open)SameYES
09-diagramsREADY-TO-DRAFT (dependency-gated)READY-TO-DRAFT (same)YES

CONSISTENT. INV §3 row-by-row matches synthesis-v2 §4.

INV §5 — open gates row-by-row vs synthesis-v2 §5.2

Section titled “INV §5 — open gates row-by-row vs synthesis-v2 §5.2”
Open gate (INV §5)synthesis-v2 §5.2Match?
02-data-flow RLS-PATTERN.md destination decision§3.16 references “path TBD with 04-workspace-types or new RLS-PATTERN.mdYES — INV §5 quotes synthesis-v2 §3.16 verbatim
05-qa-flow — None blocking, S9 spike UNBLOCKED-CONDITIONAL§4 row 5 — sameYES
06-mcp-tooling — Theme F MCP-action review pass STILL-OPEN§5.2 row 1 STILL-OPENYES
08-new-features — Knowledge Map graph substrate scope§4 row 8 + §5.2 row 4 STILL-OPENYES
09-diagrams — cross-doc dependencyimplicit per §4 orderingYES
All sub-docs touching schemas — May 30 grants / May 26 OAuth deadlines§3.17 + §3.18 + §5.2 rows 2-3YES

CONSISTENT. INV §5 row-by-row matches synthesis-v2 §5.2.

Cosmetic finding (LOW severity, NOT blocking)

Section titled “Cosmetic finding (LOW severity, NOT blocking)”

INV §3 row 1 (01-vision-mission Source material column) cites the path docs/client-documentation-base/markdown/Knowledge Hub — Platform Overview.md. The actual path in the repo is docs/client-documentation/Knowledge Hub — Platform Overview.md (no -base/markdown segment). The S238 pilot 01-vision.md correctly cites docs/client-documentation/Knowledge Hub — Platform Overview.md in its §7.1 heritage table. INV is the only place with the wrong path — and it predates the S238 pilot’s foreground content-fix.

LOW severity because the Platform Overview file exists and the pilot cites it correctly. INV’s path drift is a cosmetic note — does NOT block Wave 1. Could be cleaned up when INV is next touched. Track as documentation-hygiene only.


Section titled “§6. Check 5 — Pilot 01-vision.md outgoing-link sanity — cited section exists?”

Verdict: CONSISTENT for every Q-OQR1-XX / §X.Y citation in the pilot.

Pilot locationCited targetTarget exists?Says what the pilot claims?
§1.1 (ontology pipeline as first step)application_types-as-applications + per-application satellites + corpus-level q_a_pairs with scope_tag-driven relevanceImplied across 00-synthesis-v2.md §3.4 + §3.5 + §3.6 + §3.7YES
§1.3 (AI as plumbing)docs/reference/ai-visibility-policy.md + docs/reference/ai-integration-strategy.md (§1 “Vision and Strategic Positioning”); Platform Overview “spell-check or full-text search” quoteAll three exist; AI Integration Strategy §1 has 4 sub-sections (§1.1-§1.4) including the “Everyone Ends Up Working Within an LLM” frame; Platform Overview line 64 contains the exact “spell-check or full-text search” quoteYES
§2.1 reframe 3 (Application types as applications)Implied — instance pattern per Q-OQR1-0100-synthesis-v2.md §3.4 confirms instance pattern Option (c)YES
§2.2 (Five Guiding Principles)Platform Overview Five Guiding PrinciplesPlatform Overview line 34 ”### Five guiding principles” — 5 principles match the pilot’s adapted version (one-record-many-views; helping users organise not extracting value; observe-and-intervene; programmatic-where-possible; library-and-applications-feed-each-other)YES (adapted phrasing for architecture audience, but framing intact)
§3.3 reason 1AI Integration Strategy §1.2 “Everyone Ends Up Working Within an LLM”AI Integration Strategy line 51 §1.2 — exists with stated contentYES
§4.1 (instance table pattern)Q-OQR1-01 “Option (c) hybrid with provenance” per 00-synthesis-v2.md §3.4synthesis-v2 §3.4 line 95 confirms “Option (c) hybrid with provenance” + 6 baseline core application_typesYES
§4.2 (6 baseline application types)Q-OQR1-03synthesis-v2 §3.4 line 95 confirms 6 types: procurement / intelligence / sales_proposal / product_guide / competitor_research / training_onboardingYES
§4.2 (procurement_workspaces / sales_proposal_workspaces satellites)Q-OQR1-02; §4.4 for procurement naming detailsynthesis-v2 §3.5 + decision-graph §11.1 ONT.4YES
§4.3 (typed columns over JSONB)00-synthesis-v2.md §3.9 “typed columns over JSONB platform standard”synthesis-v2 §3.9 line 143 confirms; ratified S235YES
§4.3 (Admin UI v1.1)Q-OQR1-13synthesis-v2 §3.13 + decision-graph §11.1 ONT.10YES
§4.4 (procurement umbrella rename per Q-OQR1-02 + Q-OQR1-05 + S235)00-synthesis-v2.md §3.5synthesis-v2 §3.5 confirms Q-OQR1-02 procurement rename + Q-OQR1-05 cascade (BID_STATES → PROCUREMENT_WORKFLOW_STATES; lib/bid/bid-state-machine.tslib/procurement/procurement-workflow.ts)YES
§5.1 procurement (corpus-level + scope_tag per 00-synthesis-v2.md §3.6)synthesis-v2 §3.6YES
§5.1 PROCUREMENT_WORKFLOW_STATESsynthesis-v2 §3.5 cascadeYES
§5.1 form_type code-driven for v1 per Q-OQR1-14synthesis-v2 §5.2 row 8 (STILL-OPEN; code-driven for v1, data-driven for v2)YES
§5.2 intelligence scope_tag overlap per 00-synthesis-v2.md §3.6synthesis-v2 §3.6YES
§5.3 sales_proposal_workspacessynthesis-v2 §3.4 / §3.5 6 baseline app_typesYES
§5.4 product_guide / competitor_research / training_onboarding baseline per Q-OQR1-03synthesis-v2 §3.4 line 95YES
§6 anti-patterns table row 1 (workspace_type CHECK column)Q-OQR1-01 + Q-OQR1-03; 00-synthesis-v2.md §3.4synthesis-v2 §3.4 line 95 + decision-graph §11.1 ONT.2 + ONT.3YES
§6 anti-patterns table row 2 (kb_section)00-synthesis-v2.md §3.8 (Q-OQR1-S235)synthesis-v2 §3.8 line 135 + decision-graph §11.1 ONT.9YES
§6 anti-patterns table row 3-4 (bid_workspaces / application_type='bid')Q-OQR1-02 + Q-OQR1-05; 00-synthesis-v2.md §3.5YES
§6 anti-patterns table row 5 (Per-workspace q_a_pair scoping)Q-OQR1-06; 00-synthesis-v2.md §3.6YES — “0 of 395 prod q_a_pair rows were workspace-assigned empirically” matches synthesis-v2 §3.6 line 107 verbatim
§6 anti-patterns table row 6 (JSONB over typed columns)00-synthesis-v2.md §3.9YES
§6 anti-patterns table rows 7-9 (AI features / chat sidebar / model-name branding)docs/reference/ai-visibility-policy.md Rules 1-4 + §2AI Visibility Policy file has Rule 1 (line 16), Rule 2 (line 27), Rule 3 (line 37), Rule 4 (line 47) — CopilotKit sidebar fully removed in S109 (line 50-52) — all matchYES
§7 source-of-truth list (3 canonical Phase 0.9 sources)INV-architecture-split-readiness.md §2 + 00-synthesis-v2.md §3 + §4 + 0.9-decision-graph.md §11All three docs exist; §2 of INV has the 10 superseded items; §3+§4 of synthesis-v2 + §11 of decision-graph are correct cross-refsYES
§7 archival path.planning/.archive/.specs/0.9-intended-architecture.md after Wave 4INV §6 S240 final wave: “Archive 0.9-intended-architecture.md to .planning/.archive/.specs/ per CLAUDE.md ‘Historical planning’ convention; preserve as audit trail”YES
§7.1 heritage docs table — 4 rowsPlatform Overview; Claude Integration Guide; AI Integration Strategy; Product Differentiation AuditAll four files exist in docs/client-documentation/ or docs/reference/ (verified)YES
§8 pilot review notes — content-fix pass commit 4b9dccd3git history pre-S238 wrap(Not audited in detail; commit-SHA reference is operational metadata, not a Phase 0.9 cross-ref)n/a

Verdict: all pilot outgoing-links resolve correctly and the cited content matches the pilot’s framing. Confidence HIGH for the citation accuracy; MEDIUM only on a judgement call basis for whether each adapted-phrasing matches the source (the Five Guiding Principles framing in §2.2 is genuinely “adapted for architecture audience” per the pilot’s own preamble — the adaptation is honest, not drift).


§7. Check 6 — Pilot framing vs cited doc framing (judgement call)

Section titled “§7. Check 6 — Pilot framing vs cited doc framing (judgement call)”

Verdict: CONSISTENT.

Pilot claimCited sourceCited source actually says
Pilot §5.1 “corpus-level + scope_tag-driven per 00-synthesis-v2.md §3.6”synthesis-v2 §3.6”RATIFIED-S235 per Q-OQR1-06. NO direct workspace FK on q_a_pairs. Nullable source_workspace_id for provenance audit. Workspace relevance via scope_tag overlap.” — matches pilot framing
Pilot §3.3 “Everyone Ends Up Working Within an LLM” from docs/reference/ai-integration-strategy.md §1.2AI Integration Strategy §1.2 (line 51)§1.2 has exactly this title and frame (line 51 onwards) — confirms quoted framing
Pilot §6 anti-pattern table row 5 “0 of 395 prod q_a_pair rows were workspace-assigned empirically”Q-OQR1-06; 00-synthesis-v2.md §3.6synthesis-v2 §3.6: “Empirical: 0/395 prod q_a_pair rows assigned to workspaces today” — matches exactly
Pilot §1.3 “AI is treated like spell-check or full-text search — useful infrastructure, not something to brand”Platform Overview “founding idea” + the “note on AI” sub-sectionPlatform Overview line 64: “AI is treated like spell-check or full-text search — useful infrastructure, not something to brand” — exact quote match
Pilot §1 (SMB + data readiness framing)Platform Overview “founding idea” sectionPlatform Overview line 23: “Most SMBs are not ready for an AI-first way of working. The blocker is not the AI — it is the data.” — same framing
Pilot §2.2 (Five Guiding Principles, “architecture-adapted restatement”)Platform Overview Five Guiding PrinciplesPlatform Overview line 36-59: 5 principles labelled (one-record-many-views; helping you get organised not learning from you; observe and intervene not prevent and approve; programmatic where it can be AI where it must be; library and application feed each other) — pilot adaptation: “the library and the applications feed each other” (plural — captures sales proposals + intelligence as additional applications). Adaptation is consistent with the source.

Verdict: all pilot framings match the cited sources. Confidence HIGH.

Heritage-doc staleness flagged in pilot (consistent with audit)

Section titled “Heritage-doc staleness flagged in pilot (consistent with audit)”

Pilot §7.1 + §8 note “Heritage-doc staleness” — Platform Overview is “Pre-Phase-0.9 in places (e.g. bid_workspaces framing — superseded by procurement umbrella per Q-OQR1-02)”; AI Integration Strategy is “Outdated in places per S238 but the load-bearing claims remain”. This is honest framing — the audit independently confirms both observations:

  • Platform Overview line 79 still references “Bid Management” without procurement-umbrella adoption (consistent with pilot’s “pre-Phase-0.9 in places” note).
  • AI Integration Strategy line 117-120 references claude-sonnet-4-5/-4-6/-opus-4-6 model tiers — current build state varies by code (not audited here); the §1 vision/positioning framing is the only load-bearing piece per the pilot’s framing.

The heritage-doc staleness flag is properly hedged. No drift between pilot and audit.


§8. Check 7 — Theme F STILL-OPEN status check + orphan-ruling scan

Section titled “§8. Check 7 — Theme F STILL-OPEN status check + orphan-ruling scan”

Verdict: CONSISTENT — 00-synthesis-v2.md §5.2 row 1 still says STILL-OPEN. No orphan rulings.

  • 00-synthesis-v2.md §5.2 row 1 (line 239): “MCP-action review pass (Theme F) — STILL-OPEN — Liam reviewing — pre-decision still pending after S237 (not addressed in S237 Liam-pending CV resolutions; Theme F is operational, orthogonal to WP6 ontology work). Mempalace direct vs wrapped in KH MCP — operational. Required to unblock WP4 06-mcp-tooling.md.”
  • 0.9-decision-graph.md §11.4.2 row 1 (line 505): “MCP-action review pass (Theme F) — STILL-OPEN — Liam reviewing — pre-decision still pending after S237 (Theme F was NOT in scope of S237 Liam-pending CV resolutions; remains operational/orthogonal to WP6 ontology work). Mempalace direct vs wrapped in KH MCP — operational. Lone STILL-OPEN gate blocking WP4 06-mcp-tooling.md.”
  • feedback-findings-review.md §6.4 row 1: “MCP-action review pass (Theme F) — STILL-OPEN — Theme F was NOT in scope of S237 Liam-pending CV resolutions; remains operational/orthogonal to WP6 ontology work. Lone STILL-OPEN gate blocking WP4 06-mcp-tooling.md.”

All three docs say STILL-OPEN with consistent framing.

Grepped CLAUDE.md and supabase-db-action-items.md for Theme F or MCP-action review rulings — zero matches. No orphaned ruling claims hiding outside the central register. The S239 Wave 1 dispatch is safe to omit 06-mcp-tooling.md per the prompt’s gating.

Confidence HIGH.


§9. Check 8 — Knowledge Map graph substrate STILL-OPEN status

Section titled “§9. Check 8 — Knowledge Map graph substrate STILL-OPEN status”

Verdict: CONSISTENT.

  • 00-synthesis-v2.md §5.2 row 4 (line 242): “Knowledge Map graph substrate — STILL-OPEN — Future S7 spike; cocoindex confirmed as user-facing substrate at CX.32”
  • 0.9-decision-graph.md §11.4.2 row 5 (line 509): “Knowledge Map graph substrate — STILL-OPEN — Future S7 spike; cocoindex confirmed as user-facing substrate at CX.32”
  • 0.9-decision-graph.md §3.C row CX.32 (line 290): “RESOLVED-S232 — Cocoindex (not Graphify). Per S231 intended-arch feedback verbatim: ‘Cocoindex for “knowledge map”, not Graphify.’” — substrate decided; user-facing surface scope STILL-OPEN.

The substrate is RESOLVED (cocoindex per CX.32); the user-facing surface scope is STILL-OPEN. Both docs reflect this correctly. INV §5 row 4 also flags this for 08-new-features.md correctly: “Knowledge Map graph substrate scope (surface vs S7-spike-time decision) — Spec needed — but only for sub-section scope; not for the whole sub-doc”.

Confidence HIGH.


§10. Check 9 — Supabase platform deadlines (May 26 OAuth + May 30 grants) — alignment

Section titled “§10. Check 9 — Supabase platform deadlines (May 26 OAuth + May 30 grants) — alignment”

Verdict: CONSISTENT (all three docs aligned; the migration draft + S238 OAuth survey close the loop).

00-synthesis-v2.md §3.17 / §3.18 / §5.2 alignment with supabase-db-action-items.md

Section titled “00-synthesis-v2.md §3.17 / §3.18 / §5.2 alignment with supabase-db-action-items.md”
Synthesis-v2 rowsupabase-db-action-items.md itemMatch?
§3.17 May 30 grants (Item 1)Item 1 — May 30 platform compliance; explicit GRANT per roleYES
§3.18 May 26 OAuth (Item 3)Item 3 — /v1/oauth/token 201→200 per OAuth 2.1 §3.2.3YES
§5.2 row 2 May 30 grants — combined migration with §3.16 auto-RLS event triggerItem 2 + Item 1 combined pattern (auto-RLS event trigger + grants helper)YES
§5.2 row 3 May 26 OAuth — verify app/api/oauth/* + MCP plugin OAuth client tolerate HTTP 200Item 3 + S238 survey result (line 94: “NO CHANGES NEEDED in KH code for Item 3”)YES

Migration draft supabase/migrations/20260514150238_enable_rls_auto_event_trigger_and_grants_pattern.sql vs Item 1 + Item 2

Section titled “Migration draft supabase/migrations/20260514150238_enable_rls_auto_event_trigger_and_grants_pattern.sql vs Item 1 + Item 2”

The migration draft:

  • Lines 39-73: rls_auto_enable() event-trigger function. Verbatim match with supabase-db-action-items.md Item 2 (lines 47-83). Confirmed by side-by-side comparison.
  • Lines 77-81: DROP EVENT TRIGGER IF EXISTS ensure_rls; CREATE EVENT TRIGGER ensure_rls .... Verbatim match with Item 2 lines 78-82.
  • Lines 75 + 118: REVOKE EXECUTE ... FROM anon for both rls_auto_enable() and grant_standard_public_table_access(regclass). This implements the CLAUDE.md gotcha “Supabase auto-grants anon EXECUTE on every new public.* PL/pgSQL function”. Cross-cited correctly in the migration header comment (lines 28-32).
  • Lines 104-116: grant_standard_public_table_access(target_table regclass) helper following Item 1 pattern (lines 14-37: SELECT for anon; SELECT/INSERT/UPDATE/DELETE for authenticated + service_role).

Helper-pattern fidelity: the migration’s helper encodes “3-role grant pattern” (anon read, authenticated + service_role CRUD). Item 1’s example SQL shows the same 3-role pattern with the same SELECT/CRUD split. CONSISTENT.

supabase-db-action-items.md §S238 survey result (line 94 onwards): “NO CHANGES NEEDED in KH code for Item 3 ahead of 26/05/2026.” The migration draft acknowledges this in its header (lines 15-20): “Item 3 (/v1/oauth/token 201 -> 200) — KH code surveyed clean S238 (no direct 201 assertion in app/api/oauth/* or scripts; Supabase Management API consumers in scripts/check-revoke-guard.ts + scripts/run-supabase-advisors.ts use /database/query not /oauth/token; @supabase/supabase-js handles oauth internally and will upgrade in lockstep with the platform change). NOT covered here.

CONSISTENT. The migration explicitly does NOT cover Item 3 because the S238 survey closed it. Confidence HIGH.


§11. Check 10 — SCHEMA-QUICK-REFERENCE.md vs post-S237 ratified schema state

Section titled “§11. Check 10 — SCHEMA-QUICK-REFERENCE.md vs post-S237 ratified schema state”

Verdict: LAG-ACCEPTABLE — SCHEMA-QUICK-REFERENCE.md lags ratifications because the Q-OQR1-16 combined PR migration has not been applied yet. This is expected.

  • SCHEMA-QUICK-REFERENCE.md Last verified header (line 3) timestamp: 07/05/2026 (kh-prod-readiness-S37 W3). This pre-dates all S233-S237 ratifications.
  • workspaces table row (line 161): type varchar NO 'bid' CHECK: bid, kb_section. Still reflects the pre-Q-OQR1-16 state (pre-application_type_id FK + pre-kb_section retire).
  • No mention of application_types instance table.
  • No mention of procurement_workspaces (renamed from bid_workspaces).
  • No mention of q_a_pairs corpus-level shape (Q-OQR1-06).
  • No mention of Cloud Run sidecar architecture in any §.
  • No mention of May 30 grants pattern or auto-RLS event trigger functions (the migration drafted at 20260514150238_*.sql is gated on Liam review per the migration file header line 11).

Per the migration draft header (lines 141-152): “SCHEMA-QUICK-REFERENCE.md sync (post-apply): After Liam ratifies + applies this migration, bump docs/reference/SCHEMA-QUICK-REFERENCE.md in the same commit:

  • Add rls_auto_enable() to §32 RPC Functions (event-trigger function)
  • Add grant_standard_public_table_access(regclass) to §32 RPC Functions
  • Add ensure_rls event trigger to the event-trigger section (or §32 if no dedicated section exists)
  • Bump the <!-- Last verified --> header timestamp + cite S238 WP5”

The same “post-apply sync” pattern applies to Q-OQR1-16 combined PR: SCHEMA-QUICK-REFERENCE.md is updated when the migration lands, not before. This is the documented “apply tracks the gap” convention.

The lag is expected and tracked, not a defect. Confidence HIGH for the lag-acceptability rationale.

Tracked items for post-apply schema-doc updates

Section titled “Tracked items for post-apply schema-doc updates”

When the Q-OQR1-16 combined PR + RLS+grants migration land, SCHEMA-QUICK-REFERENCE.md needs:

  1. Bump Last verified header timestamp.
  2. workspaces row: drop type varchar row + CHECK list; add application_type_id uuid NO FK → application_types(id) row.
  3. New §N application_types instance table.
  4. Rename bid_workspaces reference (if it appears as a “Supporting Table” — verify on apply) to procurement_workspaces.
  5. Add rls_auto_enable() + grant_standard_public_table_access(regclass) to §32 RPC Functions.
  6. Add ensure_rls event trigger to event-trigger section.
  7. If q_a_pairs table lands per S16: add §N q_a_pairs table with corpus-level shape (no workspace FK; nullable source_workspace_id).
  8. CV 04 content_type CHECK list: enum drops capability (15 → 14 values).
  9. CV 16 extraction_method CHECK list: drops firecrawl.

(This list is for tracking — does NOT block S239 Wave 1.)


§12. Summary table — aggregate consistency state per check

Section titled “§12. Summary table — aggregate consistency state per check”
#CheckVerdictSeverity (if drift)Confidence
1Decision-graph §11 vs synthesis-v2 §3 + §5: Q-OQR1-01..17 + WP8 + S237 CVCONSISTENTn/aHIGH
2Decision-graph §11 vs synthesis-v2 §3 + §5: Astro+Starlight docs-siteCONSISTENTn/aHIGH
3collapse-candidates §12-§14 vs synthesis-v2 §5 (retire markers + lockstep pattern)CONSISTENTn/aHIGH
4feedback-findings-review §5 + §6 vs synthesis-v2 §3 + §5DRIFT-DETECTEDMEDIUM (2 rows in §5.2.1 lag WP8 rulings; canonical synthesis-v2 + decision-graph are correct)HIGH
5INV-architecture-split-readiness §2 + §3 + §5 vs synthesis-v2 §4 + §5 (citation resolution)CONSISTENTn/a (one cosmetic path-drift note, LOW)HIGH
6Pilot 01-vision.md outgoing-link sanity (every Q-OQR1-XX / §X.Y citation)CONSISTENTn/aHIGH
7Pilot framing vs cited-doc framing (judgement call)CONSISTENTn/aMEDIUM (adapted framing is honest, not drift)
8Theme F STILL-OPEN status + orphan-ruling scanCONSISTENTn/aHIGH
9Knowledge Map graph substrate STILL-OPEN statusCONSISTENTn/aHIGH
10Supabase platform deadlines (May 26 OAuth + May 30 grants) + migration draft alignmentCONSISTENTn/aHIGH
11SCHEMA-QUICK-REFERENCE.md vs post-S237 ratified schema stateLAG-ACCEPTABLEn/a (expected lag — apply tracks the gap per 20260514150238_*.sql lines 141-152)HIGH

Tally: CONSISTENT 9 · DRIFT-DETECTED 1 (MEDIUM) · LAG-ACCEPTABLE 1.


§13. Action items before S239 sub-doc dispatch

Section titled “§13. Action items before S239 sub-doc dispatch”

HIGH severity (must fix before S239 Wave 1 dispatch)

Section titled “HIGH severity (must fix before S239 Wave 1 dispatch)”

None. No HIGH-severity drift found. S239 Wave 1 dispatch is NOT blocked by this audit.

MEDIUM severity (should fix; not blocking Wave 1)

Section titled “MEDIUM severity (should fix; not blocking Wave 1)”

MED-1. Update docs/plans/phase-0-investigation/feedback-findings-review.md §5.2.1 rows 6+7 to reflect S236 WP8 rulings.

  • Current (stale) status: STILL-OPEN.
  • Correct status: RESOLVED-S236.
  • Remediation: Add a “Note (S236): Superseded — see 00-synthesis-v2.md §3.16 + §5.1 + decision-graph §11.4.1 + this doc’s §6.4 for the audit-trail of which items were NOT addressed at S237” prefix to each row, OR rewrite the disposition to RESOLVED-S236 with cross-link.
  • Why MEDIUM (not HIGH): the canonical synthesis-v2 + decision-graph + feedback-findings-review §6 are all correct; S239 Wave 1 sub-doc writers reading the central register will get the right answer. The stale §5.2.1 rows are a documentation-hygiene issue, not a substantive blocker.
  • Suggested ratification: fold into the next “feedback-findings-review.md is touched” pass; OR an explicit doc-hygiene mini-PR pre-S239 Wave 1 (~10 lines).

LOW severity (cosmetic; record for future cleanup)

Section titled “LOW severity (cosmetic; record for future cleanup)”

LOW-1. docs/specs/core-docs-pathway-assessment/INV-architecture-split-readiness.md §3 row 1 cites docs/client-documentation-base/markdown/Knowledge Hub — Platform Overview.md. The actual file is at docs/client-documentation/Knowledge Hub — Platform Overview.md (no -base/markdown segment).

  • Remediation: change the path in INV §3 row 1 to docs/client-documentation/Knowledge Hub — Platform Overview.md.
  • Why LOW: the pilot 01-vision.md already cites the correct path in §7.1; INV is the only place with the wrong path; no Wave 1 sub-doc draft will rely on the INV path (they will use the pilot’s citation).

LAG-ACCEPTABLE (tracked, not actionable now)

Section titled “LAG-ACCEPTABLE (tracked, not actionable now)”

LAG-1. docs/reference/SCHEMA-QUICK-REFERENCE.md Last verified header is 07/05/2026 and the doc reflects the pre-Q-OQR1-16 + pre-Cloud-Run-sidecar + pre-application_types schema state. The migration draft supabase/migrations/20260514150238_*.sql explicitly documents the post-apply sync pattern (lines 141-152). Per the same convention, the Q-OQR1-16 combined PR will trigger a SCHEMA-QUICK-REFERENCE sync on apply. Track at apply-time, not before.


§14. No-drift confirmations (positive register for audit trail)

Section titled “§14. No-drift confirmations (positive register for audit trail)”

Items confirmed consistent across all cited locations:

  1. Q-OQR1-01..17 (17 rows): all dispositions match between 00-synthesis-v2.md §3 + §5 and 0.9-decision-graph.md §11.1.
  2. WP8 rulings (N7, N9, audit_log RLS): all 3 RESOLVED-S236 closures match between 00-synthesis-v2.md §5.1 and 0.9-decision-graph.md §11.4.1.
  3. S237 CV resolutions (CV 02 / CV 03 / CV 04 / CV 06 / CV 13 / CV 16 / CV 19): 10 CV closures match across 00-synthesis-v2.md §5.4, 0.9-decision-graph.md §11.4.5, and the docs/ontology/*.md Notes blocks.
  4. Lockstep-with-migration retire pattern (CV 04 capability + CV 16 firecrawl): explicit + consistent in collapse-candidates.md §14 + 00-synthesis-v2.md §3.7 + §5.4 + the CV file Notes blocks.
  5. Astro+Starlight docs-site ratification: consistent across 00-synthesis-v2.md §5.4, 0.9-decision-graph.md §11.4.5, feedback-findings-review.md §6.2, collapse-candidates.md §14.5, and docs/ontology/README.md §“Docs-site auto-update plan”.
  6. Q-OQR1-16 combined PR scope (10 components): consistent across 00-synthesis-v2.md §2.3 N3 + §3 + §5 and 0.9-decision-graph.md §11.3.
  7. INV §2 superseded source-doc items (10 rows): every row’s citation resolves to a real section in a real doc with the cited disposition.
  8. INV §3 WP4 readiness map row-by-row: matches 00-synthesis-v2.md §4 exactly.
  9. INV §5 open gates row-by-row: matches 00-synthesis-v2.md §5.2 exactly.
  10. Pilot 01-vision.md outgoing-links (28+ citations checked): every cited target exists and says what the pilot claims.
  11. Theme F STILL-OPEN status: consistent across 00-synthesis-v2.md §5.2 row 1, 0.9-decision-graph.md §11.4.2 row 1, feedback-findings-review.md §6.4 row 1, INV-architecture-split-readiness.md §5 row 3. No orphaned rulings.
  12. Knowledge Map graph substrate STILL-OPEN: consistent across 00-synthesis-v2.md §5.2 row 4 + 0.9-decision-graph.md §11.4.2 row 5; substrate RESOLVED-S232 per CX.32 (cocoindex, not Graphify); surface scope STILL-OPEN.
  13. Supabase Item 1 + Item 2 + Item 3 alignment: supabase-db-action-items.md + 00-synthesis-v2.md §3.17 + §3.18 + §5.2 + migration draft 20260514150238_*.sql + S238 OAuth survey result — all four sources tell a consistent story.
  14. Migration draft 20260514150238_*.sql: rls_auto_enable() function verbatim matches Item 2; grant_standard_public_table_access(regclass) helper encodes Item 1 3-role pattern; REVOKE EXECUTE ... FROM anon on both helpers per CLAUDE.md gotcha.
  15. Heritage-doc framing in pilot §7.1: all 4 entries (Platform Overview, Claude Integration Guide, AI Integration Strategy, Product Differentiation Audit) have honest staleness flags + accurate “useful for” framing.

CheckConfidenceWhy
1 Q-OQR1 + WP8 + S237 CV cross-checksHIGHDirect line-level comparison; tabular evidence; reproducible by re-running grep
2 Astro+Starlight docs-siteHIGHThree+ docs corroborate; explicit lines cited
3 collapse-candidates §12-§14 vs synthesis-v2 §5HIGHRow-by-row tabular comparison
4 feedback-findings-review §5 + §6HIGH (drift detection) — MEDIUM (severity ruling MEDIUM not HIGH)Drift is unambiguous; severity is a judgement call (canonical sources are correct, so Wave 1 isn’t blocked)
5 INV §2 / §3 / §5 citationsHIGH (resolution) + MEDIUM (cosmetic path)Each citation walked; the cosmetic path drift on INV §3 row 1 is judgement-call-MEDIUM but no Wave 1 dependency
6 Pilot outgoing-link sanityHIGH28+ citations checked individually
7 Pilot framing vs cited-doc framingMEDIUMInherently a judgement call on “adaptation vs drift”; the pilot explicitly hedges with “adapted for architecture audience” framing in §2.2 + §8
8 Theme F STILL-OPEN + orphan scanHIGHDirect cross-doc + grep over CLAUDE.md + supabase-db-action-items
9 Knowledge Map substrate STILL-OPENHIGHCX.32 substrate decision + surface scope STILL-OPEN both confirmed
10 Supabase deadlines + migration draftHIGH4-source corroboration; migration content verbatim-matched against supabase-db-action-items
11 SCHEMA-QUICK-REFERENCE lagHIGHLag is documented in the migration draft’s own header (lines 141-152); convention is explicit

§16. Bottom-line verdict for S239 Wave 1 dispatch

Section titled “§16. Bottom-line verdict for S239 Wave 1 dispatch”

S239 Wave 1 dispatch is NOT blocked by this audit.

  • 9 of 10 mandated check categories are CONSISTENT.
  • 1 of 10 is LAG-ACCEPTABLE (SCHEMA-QUICK-REFERENCE.md — expected; apply tracks the gap).
  • 1 of 10 is DRIFT-DETECTED (feedback-findings-review.md §5.2.1 rows 6+7 lag the S236 WP8 ratifications) — but this is MEDIUM severity, not HIGH, because:
    • The canonical synthesis-v2 + decision-graph + feedback-findings-review §6 are all correct.
    • Wave 1 sub-doc writers reading the prompt’s central-register sources (00-synthesis-v2.md + 0.9-decision-graph.md §11 + INV-architecture-split-readiness.md) will get the right answer.
    • The stale §5.2.1 rows are documentation-hygiene, not substantive drift.

Recommended posture for S239 Wave 1: dispatch the 7 remaining sub-doc agents using the central register docs (synthesis-v2 + decision-graph §11 + INV) as primary inputs. Note for sub-agents reading feedback-findings-review.md §5: prefer §6 closures + the canonical synthesis-v2 §3.16 / §5.1 for OQ-Q24-B + OQ-Q24-C dispositions.

Optional pre-dispatch doc-hygiene fix (10-line edit): update feedback-findings-review.md §5.2.1 rows 6+7 to RESOLVED-S236 with cross-link. This is a clean Liam-ratifiable mini-PR.


End of audit. No new architecture decisions proposed. No rulings made. All findings backed by direct line-level cross-doc comparison. Confidence HIGH for all 10 mandated checks.