00 — Phase 0.9 feedback investigation synthesis V2 (S234 prereqs + S235 Liam ratifications + S236 WP8 + S237 CV + docs-site pivot)
00 — Phase 0.9 feedback investigation synthesis V2 (S234 prereqs + S235 Liam ratifications + S236 WP8 + S237 CV + docs-site pivot)
Section titled “00 — Phase 0.9 feedback investigation synthesis V2 (S234 prereqs + S235 Liam ratifications + S236 WP8 + S237 CV + docs-site pivot)”Audit date: 14/05/2026 (S237 close-out — supersedes prior S235 close-out)
Status: RATIFIED — supersedes 00-synthesis.md v1 (S233 directional) for items closed at S234 / S235 / S236 / S237; v1 preserved as audit-trail snapshot.
Scope: consolidates the 6 finding docs in this directory (01-*.md through 06-*.md) + 2 S234 Phase B prereq docs (phase-b-prerequisite-1-onthology-pipeline.md + phase-b-prerequisite-2-cocoindex-deep-dive.md) + 2 S234/S235 spike outputs (phase-b-prerequisite-2d-docling-bakeoff.md + 0.9-spike-S9-cocoindex-idempotency.md) + 1 S235 feedback investigation (phase-b-prerequisite-1-onthology-pipeline-feedback-investigation.md) + Liam ratifications 14/05/2026 (Q-OQR1-01 through Q-OQR1-17) + S236 WP8 rulings (N7 / N9 / audit_log RLS) + S237 CV resolutions (commit 099eb5f6) and Astro+Starlight docs-site ratification.
1. Reading order vs v1
Section titled “1. Reading order vs v1”- §2 maps every v1 B/I/N item to its post-S234/S235 status. Most BLOCKING items are now RESOLVED.
- §3 adds new items surfaced by the prereqs + WP-ONTO-R1 + spikes that v1 did not cover.
- §4 refreshes the WP4 readiness map with current gating state.
- §5 lists items still open + their disposition.
- v1 (
00-synthesis.md) is preserved as the S233-directional audit-trail snapshot. Do NOT delete; reference for diff against the V2 closures.
2. v1 B/I/N items — post-S234/S235 status
Section titled “2. v1 B/I/N items — post-S234/S235 status”2.1 BLOCKING items (v1 §2.1)
Section titled “2.1 BLOCKING items (v1 §2.1)”| v1 ID | v1 framing | Post-S234/S235 status | Closure point |
|---|---|---|---|
| B1 Pattern A/B Q&A parser fate (contradictory across Finding 04 retire vs Finding 02 recurring adapter assumption) | RESOLVED-S234 — cocoindex ExtractByLlm is the recurring runtime adapter (Prereq 2a top-recommendation #1). Pattern A/B retires post-Phew-migration per Q3.5 + GitNexus zero-caller confirmation. No new YAML-frontmatter parser specced — ExtractByLlm with typed Pydantic output_type subsumes. | Prereq 2 §1.2 + Rec 1 | |
B2 Option α vs β for source_documents | RESOLVED-DIRECTIONAL-S234: Option α (slim-and-keep) + REFINED-S235: nullable workspace_id (per Q-OQR1-09 admin-shared binaries). | Onto-doc §5 + Prereq 2 §1.2 + WP-ONTO-R1 §5 + Q-OQR1-09 |
2.2 IMPORTANT items (v1 §2.2)
Section titled “2.2 IMPORTANT items (v1 §2.2)”| v1 ID | v1 framing | Post-S234/S235 status | Closure point |
|---|---|---|---|
I1 bid_workspaces shape (Option A typed-cols vs Option B satellite) | RESOLVED-DIRECTIONAL-S234: Option B satellite + RENAMED-S235 to procurement_workspaces per Q-OQR1-02 procurement umbrella. Per-application_type satellites follow Shape B pattern across procurement / sales_proposal / competitor_research / training_onboarding / product_guide. | Onto-doc §5 + Finding 05 §5.3 + Q-OQR1-02 | |
I2 template_requirements rename inventory (2 tables or 3) | RESOLVED-S234: 3 tables — templates → form_templates, template_fields → form_template_fields, template_requirements → form_template_requirements. PROVENANCE ENUM ADDED-S235 per Q-OQR1-11 — 96 prod SSQ + Charnwood rows seeded as core-provenance; client-uploaded rows are client. | Onto-doc §4.5 + Q-OQR1-11 | |
| I3 S9 spike status (cocoindex equal-hash idempotency) | RESOLVED-PARTIAL-S235 (95% confidence) — substrate works, but requires layered fn-shape (inner-tier extraction fns must consume content_text: str, not FileLike). Memo scoping is per-component-path, NOT global content-hash dedup. Sidecar v1 promotion gate UNBLOCKED-CONDITIONAL. | 0.9-spike-S9-cocoindex-idempotency.md (S235 WP7) |
2.3 NEEDED items (v1 §2.3)
Section titled “2.3 NEEDED items (v1 §2.3)”| v1 ID | v1 framing | Post-S234/S235 status | Closure point |
|---|---|---|---|
| N1 Q&A markdown adapter (same as B1) | RESOLVED-S234 — same as B1 (cocoindex ExtractByLlm) | Prereq 2 Rec 1 | |
| N2 Cataloguer skill build-now-or-defer | RESOLVED-S234: defer — Docling fidelity high enough that cataloguer skill not needed pre-launch per Docling bake-off. Build-now flagged ONLY if Docling fails broader corpus verification — S235 WP-DOCLING-XLSX confirmed Docling-XLSX-clean (95% confidence), so defer holds. | Docling bake-off + WP-DOCLING-XLSX §9 | |
| N3 Naming-cleanup PR scope (combined vs sequenced) | RESOLVED-S235: combined per Q-OQR1-16 — application_types introduce + kb_section retire + procurement rename + project_id→workspace_id + digests→change_reports + form_templates rename + provenance enum retrofit. Pre-launch is cheapest time. | Q-OQR1-16 | |
N4 Coverage 4th gap source name (bid_response vs bid_question_match) | RESOLVED-S234: cosmetic — Liam preference (per feedback §5.2.4) — keep bid_response for response-level discriminator label; feeder is bid_question_matches. Tweakable at impl. | feedback-findings-review §5.2.4 | |
N5 Upload-route silent-fail fix (OQ-Q19-D, app/api/upload/route.ts:444-447) | RESOLVED-S234: fix proceeds under Option α | Prereq 2 §1.3 N5 + Q-OQR1-09 | |
| N6 pipeline_runs fate | RESOLVED-S234: RETAIN as KH-side rollup of cocoindex runs (cocoindex has no TS-facing per-flow-run ledger API). | Prereq 2 §1.2 | |
| N7 op_id propagation pattern (trigger vs app-stamped) | RESOLVED-S236 — Liam ratification 14/05/2026: adopt cocoindex + industry best practice. Trigger-driven for platform-wide audit cohesion; cocoindex per-flow op_id for pipeline-side correlation (a principled hybrid driven by the canonical pipeline pattern rather than the ad-hoc default). Lands in WP4 02-data-flow.md. | WP8 ruling 14/05/2026 | |
N8 Future citers (citations.bid_response_id NOT NULL vs extended with citer_kind) | RESOLVED-S234: polymorphic — citations.citing_entity enum: bid_response, sales_proposal_response, competitor_research_finding, training_unit, mcp_search_response. | Onto-doc §5 + Finding 02 | |
| N9 Per-match score weighting (single hybrid vs separate columns) | RESOLVED-S236 — Liam ratification 14/05/2026: separate embedding_score + fulltext_score columns on bid_question_matches (recommendation from S234 ratified). Operational verification deferred to feature spec time. | WP8 ruling 14/05/2026 + feedback-findings-review §5.2.2 | |
| N10 Lost-bid promotion default action | RESOLVED-S234: skip per Finding 05 rec; new_entry with confidence penalty deferred. | Finding 05 Rec | |
| N11 q_a_pair ↔ bid_response provenance retention | RESOLVED-S234 — q_a_pairs.source_workspace_id (nullable) captures originating workspace for origin_kind='derived_from_bid_response' per Q-OQR1-07. | Q-OQR1-07 |
2.4 v1 §2.4 Operational decisions
Section titled “2.4 v1 §2.4 Operational decisions”All 12 §2.4 OQs (Q310-A/B, Q35-A/B/C, Q38-D/E/G, CX33-A/B/E/F) — status unchanged from v1 except:
- OQ-Q35-C RESOLVED-S234: NO checklist enum (existing 7-value enum sufficient).
- OQ-CX33-A RESOLVED-S234: cocoindex re-extracts naturally on source-binding change per Prereq 2 §1.2; KH-side gate via
edit_intentper Theme C. - OQ-CX33-B RESOLVED-S234 via Q2.9 sidecar reopen ratification.
- OQ-CX33-E RESOLVED-S234 via B2 Option α ratification.
- OQ-CX33-F RESOLVED-S234: docx-preview add only if mammoth+Tiptap loses fidelity (post-Docling adoption, Docling may replace this fallback entirely; spec-time decision).
3. New items surfaced by S234 prereqs + S235 WP-ONTO-R1 + spikes
Section titled “3. New items surfaced by S234 prereqs + S235 WP-ONTO-R1 + spikes”Items not present in v1 that emerged through prereq investigation.
3.1 Cloud Run sidecar architecture (NEW HIGH-priority)
Section titled “3.1 Cloud Run sidecar architecture (NEW HIGH-priority)”Finding: Docling 1.8 GB footprint cannot land in Vercel function bundle (250 MB limit). Cloud Run sidecar architecture required.
Source: phase-b-prerequisite-2d-docling-bakeoff.md §5 (S234).
Status: RESOLVED-S234 — KH already runs Cloud Run for Python pipeline (kh-prod-494815 / kh-staging-494815 per CLAUDE.md). Extension to host cocoindex + Docling extraction is operational only.
Lands in: WP4 02-data-flow.md + 03-tech-stack.md.
3.2 Docling adoption (PDF / DOCX / XLSX)
Section titled “3.2 Docling adoption (PDF / DOCX / XLSX)”Finding: Docling decisive win on PDF (75 headings + 299 GFM table rows vs markitdown 0+0); narrow win on DOCX heading-level fidelity; clean XLSX output (S235 WP-DOCLING-XLSX full-corpus verification — 14/14 URL preservation, S234 caveat retracted).
Source: phase-b-prerequisite-2d-docling-bakeoff.md §6 + §9 (S234 + S235 WP-DOCLING-XLSX).
Status: RESOLVED-S235 — Docling primary for PDF / DOCX / XLSX. Cloud Run sidecar. License: MIT (administrative confirmation only).
3.3 pullmd retention for HTML
Section titled “3.3 pullmd retention for HTML”Finding: Docling matches pullmd’s static-HTML tier but cannot replace Playwright sidecar (JS-pages), Cloudflare short-circuit, Reddit comment-trees, or share-id identity contract.
Status: RESOLVED-S234: KEEP pullmd for HTML. No consolidation.
3.4 application_type as instance table (Option (c) hybrid + provenance)
Section titled “3.4 application_type as instance table (Option (c) hybrid + provenance)”Finding: Onto-doc §4.2 S234 recommended Option (a) vocab-only. WP-ONTO-R1 (S235) re-investigated; Liam ratified Option (c) hybrid with provenance per Q-OQR1-01.
Status: RATIFIED-S235. 6 baseline core-provenance application_types ship: procurement, intelligence, sales_proposal, product_guide, competitor_research, training_onboarding (Q-OQR1-03). workspaces.application_type_id FK replaces workspaces.type text column.
Lands in: WP4 04-workspace-types.md.
3.5 Procurement rename (bid → procurement)
Section titled “3.5 Procurement rename (bid → procurement)”Finding: application_type='bid' is misnamed — procurement is the umbrella. RFP/PQQ/ITT/framework/DPS/G-Cloud are form_type discriminators within it.
Status: RATIFIED-S235 per Q-OQR1-02. Rename pre-launch in combined PR. BID_STATES → PROCUREMENT_WORKFLOW_STATES; lib/bid/bid-state-machine.ts → lib/procurement/procurement-workflow.ts; bid_workspaces → procurement_workspaces.
3.6 q_a_pair cardinality (corpus-level + scope_tag-driven)
Section titled “3.6 q_a_pair cardinality (corpus-level + scope_tag-driven)”Finding: WP-ONTO-R1 §4 (S235) rebuilt cardinality reasoning. Empirical: 0/395 prod q_a_pair rows assigned to workspaces today. Supersedes both 0.9-intended-architecture.md §4.3 N:1 (workspace_id NOT NULL) AND prior onto-doc §4.4 M:N junction recommendation.
Status: 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.
3.7 Provenance pattern across hybrid vocabularies
Section titled “3.7 Provenance pattern across hybrid vocabularies”Finding: taxonomy_domains.provenance enum (baseline / client / recommended) is a successful precedent. Liam ratified extending to all hybrid Layer-1 CVs.
Status: RATIFIED-S235 per Q-OQR1-11. application_types, form_types, form_template_requirements, guides, coverage_targets all carry provenance enum. entity_aliases.category renamed provenance.
WP6 implication: Markdown ontology storage carries provenance_model / client_extensible / editable_via / core_seed_path frontmatter per Q-OQR1-12.
S237 CV 03 layer-vocabulary refinement: layer_vocabulary.provenance column ALTER ratified for the Q-OQR1-16 combined PR (S237 commit 099eb5f6). UI nesting spec (docs/specs/p0-layer-nesting-spec.md) deferred to S238+ — v1 keeps the existing 4 live keys (sales_brief / bid_detail / company_reference / research) without the hybrid 3-axis architecture (layer + tabs + q_a_pairs+scope_tag) that INV-1 proposed.
S237 CV 04 content-type refinement (semantic boundaries Liam-ratified):
policyvscompliance— author-vs-evidence rule (ISO management-system framing).policy= the organisation’s prescriptive statement (“we do X”);compliance= evidence of adherence to an external regime (“audit of X”). Re-classification under the new rule lands viadocs/reference/classification-prompt.mdv4.8+ update; no schema change.methodologyvscapability— retirecapability(0 prod rows). Enum drops from 15 → 14 values on the Q-OQR1-16 combined PR migration. CV 04 frontmatterbaseline_valuesretainscapabilityuntil the migration drops the CHECK value (lockstep-with-migration retire pattern, same as CV 16firecrawlper the §5.4 “RESOLVED at S237” row below).
S237 CV 06 lifecycle-type refinement (regulation-as-specialisation rule, Liam-ratified): regulation = externally-set effective dates (regulator-published); date_bound = internally-set validity windows (organisation-set). Both lifecycles get freshness decay; regulation additionally tracks regulator-published effective/sunset dates when metadata lands. DCAT-AP-aligned. Implementable in lib/freshness.ts branch rules + docs/reference/classification-prompt.md update; no schema change.
S237 CV 13 ingest-source refinement (parameter-literal rename, Liam-ratified): bid_library parameter literal in lib/layer-inference.ts:21 + scripts/kb_pipeline/layer_inference.py renamed → bid_library_extraction. This is inference-function-internal — NOT a DB value (scripts/import_bid_library.py:288 writes 'qa_import' to content_items.ingest_source). Rename removes visual collision with the (non-existent) DB value. Cleanup PR lands separately (out of WP6 scope).
S237 CV 16 extraction-method refinement (lockstep-with-migration retire pattern, Liam-ratified): firecrawl is pruned from CV 16 baseline_values when the CHECK migration drops it from the DB enum — not before. Same pattern adopted for CV 04 capability above. Python extractor divergence (trafilatura + pdfplumber paths in scripts/kb_pipeline/extract.py) retires on Docling adoption per §3.2 + §3.3 (Docling primary PDF/DOCX/XLSX; pullmd retained for HTML). Detailed write-path reconciliation belongs in WP4 architecture sub-docs 02-data-flow.md + 03-tech-stack.md.
S237 CV 19 engineering-types refinement (keep verdict, Liam-ratified): Engineering-register CV retained (13 values label internal type domains).
S237 CV 02 taxonomy-subtopics refinement (count drift, Liam-ratified): Prose reconciled to 33 baseline values (matches frontmatter). Seed-file derivability (scripts/seed/baseline-taxonomy-subtopics.sql emission from frontmatter) deferred to Q-OQR1-16 combined PR scope.
3.8 kb_section retirement
Section titled “3.8 kb_section retirement”Finding: workspaces.type='kb_section' was added in error. Zero prod rows. Retire entirely.
Status: RATIFIED-S235 per Q-OQR1-S235 + WP-ONTO-R1 §7. Lands in combined PR.
3.9 Typed columns over JSONB platform standard
Section titled “3.9 Typed columns over JSONB platform standard”Finding: Liam (S235): “where there is an opportunity to use typed columns in our schema, we should always do so.”
Status: RATIFIED-S235. Applies platform-wide. Cascades into: bid_workspaces Option B (typed columns from JSONB) confirmed; source_documents.extraction_metadata JSONB → typed columns / Zod-validated shape; SKOS columns (BT/NT/SYN) on future thesaurus_entries table over JSONB encoding.
3.10 pipeline_failures DO-NOT-BUILD
Section titled “3.10 pipeline_failures DO-NOT-BUILD”Finding: Cocoindex retry/back-off/DLQ subsumes the planned pipeline_failures table per Prereq 2 §1.2. KH’s recordPipelineRun() helper handles rollup.
Status: RESOLVED-S234: DO-NOT-BUILD.
3.11 Q4.12 cost-tracking retire
Section titled “3.11 Q4.12 cost-tracking retire”Finding: Cocoindex memoisation + per-stage metrics supersede the skill-seekers-style cost-tracking dashboard pattern.
Status: RESOLVED-S234: RETIRE.
3.12 Layer-1 CVs added (application_type / form_type / form_format / edit_intent / change_report_category / extraction_method / diff_mode)
Section titled “3.12 Layer-1 CVs added (application_type / form_type / form_format / edit_intent / change_report_category / extraction_method / diff_mode)”Finding: Onto-doc §2.1 inventory grew from 24+ to 29 vocabularies (S235 WP1 added extraction_method + diff_mode).
Status: RATIFIED-S234/S235. All planned/needed. Provenance enum applied per §3.7 where hybrid.
3.13 Admin UI for client-managed vocabularies — v1.1
Section titled “3.13 Admin UI for client-managed vocabularies — v1.1”Finding: Settings page has comprehensive admin UI for taxonomy/tags/guides/layers/entities/governance/content-owner-management. v1.1 extends with sections for application_types / form_types / scope_tags.
Status: DEFERRED-v1.1 per Q-OQR1-13. v1 ships SQL-seeded baseline.
3.14 Workspace-private q_a_pairs — v1.1
Section titled “3.14 Workspace-private q_a_pairs — v1.1”Status: DEFERRED-v1.1 per Q-OQR1-08. Single Phew tenant; no private_to_workspace_id column in v1.
3.15 Source_documents.workspace_id nullable
Section titled “3.15 Source_documents.workspace_id nullable”Status: RATIFIED-S235 per Q-OQR1-09 (admin-shared binaries serving multiple workspaces).
3.16 audit_log RLS pattern — auto-RLS event trigger adoption
Section titled “3.16 audit_log RLS pattern — auto-RLS event trigger adoption”Source: WP8 ruling 14/05/2026 + supabase-db-action-items.md Item 2 (Liam-curated Supabase auto-RLS event-trigger SQL).
Status: RESOLVED-S236 — adopt Supabase platform-recommended rls_auto_enable() event trigger (ddl_command_end on CREATE TABLE / CREATE TABLE AS / SELECT INTO, public schema only) platform-wide. Closes OQ-Q24-B + OQ-Q113-B together. Removes the recurring audit_log and per-tenant RLS-omission risk for any new public table.
Lands in: Dedicated RLS pattern doc under WP4 (path TBD with 04-workspace-types or new RLS-PATTERN.md) + new migration enable_rls_auto_event_trigger.sql (combined with §3.17 grants helper). CLAUDE.md Gotcha already flags the orthogonal anon-EXECUTE issue for PL/pgSQL functions — keep that REVOKE-EXECUTE step in every function migration; the auto-RLS trigger covers tables only.
3.17 Supabase public-schema grants compliance — May 30 platform deadline
Section titled “3.17 Supabase public-schema grants compliance — May 30 platform deadline”Source: supabase-db-action-items.md Item 1 (Supabase platform change effective 30/05/2026).
Status: NEW — ACTIVE-S236. From 30/05/2026, new tables in public will not be exposed to the Data API by default. Every future CREATE TABLE public.* migration must include explicit GRANT per role (anon / authenticated / service_role) before supabase-js, PostgREST, or GraphQL can access it. Pair with §3.16 in the same combined migration so RLS enable + grants land together (RLS-first, then grants).
Lands in: Combined migration enable_rls_auto_event_trigger_and_grants_pattern.sql (or split into two sequential migrations) + CLAUDE.md Supabase Gotcha addition + migration template / generator update so future tables include the grants block by default.
3.18 Supabase OAuth token endpoint — May 26 platform deadline
Section titled “3.18 Supabase OAuth token endpoint — May 26 platform deadline”Source: supabase-db-action-items.md Item 3 (Supabase platform change effective 26/05/2026).
Status: NEW — ACTIVE-S236. /v1/oauth/token will return HTTP 200 (not 201) from 26/05/2026 per OAuth 2.1 §3.2.3. Verify KH OAuth client surfaces in app/api/oauth/ (decision / grants / revoke) and any MCP-side token consumers do NOT branch on HTTP 201 specifically.
Lands in: Targeted check at app/api/oauth/* + MCP plugin OAuth client + a Vitest assertion that 200 is treated as success in any OAuth-token-handling code path.
4. WP4 readiness map — refreshed for S235 gating state
Section titled “4. WP4 readiness map — refreshed for S235 gating state”For each of the 9 WP4 sub-docs, the open decisions that gate the draft now.
| Sub-doc | v1 gates | S235 status | Notes |
|---|---|---|---|
| 01-vision-mission | None blocking | READY-TO-DRAFT — pulls from Knowledge Hub — Platform Overview / Claude Integration Guide; add application_types-as-applications framing per §3.4 | Out of scope S235 per Liam direction; WP4 work starts S236+ |
| 02-data-flow | B2 (α/β), I3 (S9), B1 (Pattern A/B), N5/N6/N7, OQ-CX33-A | READY-TO-DRAFT — B2 RESOLVED-α (with §3.15 nullable workspace_id refinement); I3 RESOLVED-PARTIAL (sidecar UNBLOCKED-CONDITIONAL); B1 RESOLVED (ExtractByLlm); N5 RESOLVED; N6 RESOLVED; N7 RESOLVED-S236 (cocoindex + industry best practice); OQ-CX33-A RESOLVED. | Cloud Run sidecar architecture (§3.1) also lands here; auto-RLS event trigger (§3.16) + grants pattern (§3.17) referenced from 02-data-flow ingest-write paths |
| 03-tech-stack | OQ-CX33-F | READY-TO-DRAFT — add Docling + Cloud Run sidecar per §3.1 + §3.2 | |
| 04-workspace-types | I1, I2, OQ-Q113-A, OQ-Q35-C, OQ-Q38-E | READY-TO-DRAFT — I1 RESOLVED-procurement_workspaces; I2 RESOLVED-3-tables; OQ-Q113-A RESOLVED-per-app_type-satellite; OQ-Q35-C RESOLVED-NO; OQ-Q38-E RESOLVED-6-cols. Plus application_types instance table per §3.4. | Big sub-doc — application_types + kb_section retire + procurement rename + q_a_pairs corpus-level all live here |
| 05-qa-flow | I3, N1=B1, N8, N9, N11, OQ-Q35-A/B, OQ-Q38-D/F, OQ-CX33-B | READY-TO-DRAFT — I3 RESOLVED-PARTIAL; B1/N1 RESOLVED; N8 RESOLVED; N9 RESOLVED-S236 (separate embedding_score + fulltext_score columns; op-verify deferred to feature spec); N11 RESOLVED; OQ-Q35-A/B/OQ-Q38-D RESOLVED-S234; OQ-CX33-B RESOLVED-S234. Plus q_a_pairs corpus-level shape per §3.6. | |
| 06-mcp-tooling | Q4.5 wing wire-up + MCP-action review | Theme F was still-open at S236 draft; ratified S240 | |
| 07-collapse-list | C6 retire-seed sync, Q3.5 status, I2 | READY-TO-DRAFT — driven by 0.9-collapse-candidates.md (S235 refresh) | New tier markers RATIFIED-RETIRE-S235 / DEFERRED-v1.1-S235 / RATIFIED-DO-NOT-BUILD-S235 |
| 08-new-features | N4, OQ-Q310-A/B, OQ-Q38-A/G, Knowledge Map | READY-TO-DRAFT — N4 cosmetic; OQ-Q310-A/B RESOLVED-S234; OQ-Q38-A RESOLVED-S234-skip; OQ-Q38-G RESOLVED-S234. Knowledge Map = cocoindex substrate per CX.32; surface scope still open. | |
| 09-diagrams | None blocking | READY-TO-DRAFT | Generate ERDs + ingest + Q&A round-trip + bid feedback 3-UC + Cloud Run sidecar topology |
Bottom line for WP4 readiness: post-S236 — 8 of 9 sub-docs are READY-TO-DRAFT (N7 + N9 closed by WP8 rulings 14/05/2026). 06-mcp-tooling was the lone STILL-OPEN gate pending Liam pre-decision on MCP-action review pass (Theme F). [CORRECTION-S267: Theme F was subsequently RATIFIED-S240 — direct pattern; 06-mcp-tooling.md drafted S240. This “lone STILL-OPEN gate” framing is the S236 point-in-time state, since closed — see §5.4 / L241.] The Phase 0.9 investigation arc is closed for WP4 entry.
5. Still-open items + scheduling (post-S237)
Section titled “5. Still-open items + scheduling (post-S237)”5.1 RESOLVED at S236 (WP8)
Section titled “5.1 RESOLVED at S236 (WP8)”| Item | Status | Disposition |
|---|---|---|
| op_id propagation pattern (N7) | RESOLVED-S236 | Cocoindex + industry best practice; trigger-driven for platform-wide audit cohesion + cocoindex per-flow op_id for pipeline-side correlation. Lands in WP4 02-data-flow.md. |
| audit_log RLS pattern (OQ-Q24-B + OQ-Q113-B) | RESOLVED-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 §3.17 grants helper. |
| Per-method scoring (N9, OQ-Q112-A/B) | RESOLVED-S236 | Separate embedding_score + fulltext_score columns on bid_question_matches. Operational verification deferred to feature spec time. |
5.2 STILL-OPEN (post-S237)
Section titled “5.2 STILL-OPEN (post-S237)”Live tracker:
docs/specs/id-31-canonical-pipeline-implementation-plan/PLAN.md§7 is the canonical STILL-OPEN register (ratified — PLAN.md §7 is canonical). The rows below are reconciled to it as of S246; where they differ, PLAN.md §7 wins.
| Item | Status | Disposition |
|---|---|---|
| MCP-action review pass (Theme F) | RATIFIED-S240 | Mempalace adopted direct (separate Anthropic plugin alongside KH MCP) per 06-mcp-tooling.md §4; migration to wrapped pattern [DEFERRED-POST-LAUNCH]. Per-tool audit handled in PLAN.md T13. Closed. |
| Supabase public-schema grants compliance (May 30 deadline) | NEW-S236 | Per §3.17 — combined migration with §3.16 auto-RLS event trigger; CLAUDE.md Gotcha addition; migration template update. |
| Supabase OAuth token endpoint (May 26 deadline) | NEW-S236 | Per §3.18 — verify app/api/oauth/* + MCP plugin OAuth client tolerate HTTP 200 (not 201). |
| Knowledge Map graph substrate | STILL-OPEN | Future S7 spike; cocoindex confirmed as user-facing substrate at CX.32 |
| TS-facing API for cocoindex per-flow-run ledger | DEFERRED-v1.1 | v1 ships only pipeline_runs rollup; per-stage detail surface deferred. Spec exists as v1.1 substrate at docs/specs/id-36-cocoindex-ledger-api/TECH.md per PLAN.md §7 item 9 (RATIFIED-S243). |
| CocoInsight on-prem deployment | STILL-OPEN | Only if KH self-hosts |
| Anthropic prompt-cache passthrough verification | RATIFIED-S241 | Spike queued as PLAN.md T13.1 (Liam direction); verification only. |
| Discriminated-union Pydantic with ExtractByLlm (Q-EX2) | RATIFIED-S241 | Spec drafting at PLAN.md T1.1+T1.2 (docs/specs/id-36-cocoindex-extraction-contract/). Note: TECH amended S256 — ExtractByLlm absent in cocoindex 1.0.3; canonical pattern is now @coco.fn-wrapped Anthropic SDK. |
| Tracked-changes DOCX regression test | STILL-OPEN | In-scope as PLAN.md T13.2; relates to CLAUDE.md “python-docx and Track Changes” gotcha. |
0.9-intended-architecture.md doc split into architecture/01-*.md … 09-*.md (9 sub-docs) | SCHEDULED-S238+ | Source doc OUTDATED per Liam S237 (central frame of §1.2/§4/§5/§10/§13 at variance with S233-S237 ratifications). Split is the next-after-foundation block. Wave-by-wave breakdown captured in docs/specs/core-docs-pathway-assessment/INV-architecture-split-readiness.md (S237 sub-agent output). Source doc to be archived to .planning/.archive/.specs/ after Wave 4 closes. |
5.3 DEFERRED / SCHEDULED
Section titled “5.3 DEFERRED / SCHEDULED”| Item | Status | Disposition |
|---|---|---|
| Form_type behaviour code vs data-driven (Q-OQR1-14) | DEFERRED-v2 | Code-driven for v1; data-driven for v2 |
| Multi-wing content semantics (Q-OQR1-10) | DEFERRED | Operational impl |
| Workspace-private q_a_pairs (Q-OQR1-08) | DEFERRED-v1.1 | Single Phew tenant for v1 |
| Admin UI for client-managed vocabs (Q-OQR1-13) | DEFERRED-v1.1 | Extends existing settings-page pattern |
| WP6 Markdown ontology scaffold | LANDED-S236-S237 | Multi-agent sequential authorship (drafter → verifier → editors → implementer → ratifiers) landed S236 Waves A-C+E1; D1 implementer + E2 ratifier landed S237 (commit a258d144). Docs-site integration ratified Astro+Starlight S237 (NOT GitBook — commit 099eb5f6); build deferred to production-readiness track. |
| WP4 architecture sub-docs (the 9 sub-docs) | SCHEDULED-S238+ | Foundation work (WP6 + WP8) landed S236-S237; WP4 follows. Per INV-architecture-split-readiness.md §6 — Wave 1 (Layer 1: 01-vision-mission / 03-tech-stack / 07-collapse-list parallel) → Wave 2 main (04-workspace-types foreground) → Wave 2 split (02-data-flow + 05-qa-flow parallel) → Wave 2 tail (08-new-features) → Wave 3 (09-diagrams). Independent track: 06-mcp-tooling (gated on Theme F Liam pre-decision per §5.2). |
p0-layer-nesting-spec.md (CV 03 UI nesting) | DEFERRED-S238+ | Per S237 commit 099eb5f6 — CV 03 layer-vocabulary keeps existing 4 live keys for v1 without INV-1’s hybrid 3-axis architecture. Spec author + nesting-feature scope deferred. |
5.4 RESOLVED at S237
Section titled “5.4 RESOLVED at S237”S237 closed CV-level semantic ambiguities surfaced by WP6 INV-1/INV-2/INV-3 archaeology + ratified the docs-site framework. Items below were Liam-pre-decided async and applied in commit 099eb5f6.
| Item | Status | Disposition |
|---|---|---|
| Astro+Starlight docs-site framework (vs GitBook) | RATIFIED-S237 | 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. |
| CV 02 taxonomy-subtopics prose-vs-frontmatter count drift (33 vs 31) | RATIFIED-S237 | Reconcile prose to 33 baseline values (matches frontmatter). Seed-file derivability (scripts/seed/baseline-taxonomy-subtopics.sql emission from frontmatter) deferred to Q-OQR1-16 combined PR. |
CV 03 layer-vocabulary — provenance column ALTER timing | RATIFIED-S237 | ALTER ratified for Q-OQR1-16 combined PR. v1.1 admin UI extension covered separately per Q-OQR1-13. |
| CV 03 layer-vocabulary — UI nesting spec ownership | DEFERRED-S238+ | p0-layer-nesting-spec.md deferred. v1 keeps 4 live keys (sales_brief / bid_detail / company_reference / research); INV-1’s hybrid 3-axis architecture (layer + tabs + q_a_pairs+scope_tag) postponed. |
CV 04 content-type — policy vs compliance boundary | RATIFIED-S237 | Author-vs-evidence rule (ISO management-system framing). policy = organisation’s prescriptive statement (“we do X”); compliance = evidence of adherence to external regime (“audit of X”). Implementable via docs/reference/classification-prompt.md v4.8+ update; no schema change. |
CV 04 content-type — methodology vs capability boundary (incl. retire capability candidate) | RATIFIED-S237 | Retire capability (0 prod rows). Enum drops from 15 → 14 values on Q-OQR1-16 combined PR migration. methodology absorbs remaining concept space. Lockstep-with-migration retire pattern (CV 04 baseline_values keeps capability until DB CHECK drops it). |
CV 06 lifecycle-type — regulation vs date_bound boundary | RATIFIED-S237 | Regulation-as-specialisation rule. regulation = externally-set effective dates (regulator-published); date_bound = internally-set validity windows (organisation-set). Both lifecycles get freshness decay; regulation additionally tracks regulator-published effective/sunset dates when metadata lands. DCAT-AP-aligned. Implementable in lib/freshness.ts branch rules + classification-prompt update; no schema change. |
CV 13 ingest-source — bid_library cleanup (rename TS literal) | RATIFIED-S237 | Rename bid_library parameter literal → bid_library_extraction in lib/layer-inference.ts:21 + scripts/kb_pipeline/layer_inference.py to make inference-function-internal nature explicit. Cleanup PR lands separately (out of WP6 scope this session, per INV-1 §7.3); CV 13 records the canonical rename. |
| CV 19 engineering-types — keep or drop the entire CV | RATIFIED-S237 | KEEP as engineering-register CV (13 values label internal type domains). |
CV 16 extraction-method — firecrawl provenance enum extension OR prune | RATIFIED-S237 | Prune-on-migration timing: firecrawl is pruned from baseline_values when the CHECK migration drops it from the DB enum (not before). Lockstep-with-migration retire pattern (same as CV 04 capability). |
CV 16 extraction-method — Python extractor divergence (trafilatura / pdfplumber) | RATIFIED-S237 | trafilatura + pdfplumber write paths retire on Docling adoption per §3.2 + §3.3 (Docling primary PDF/DOCX/XLSX; pullmd retained for HTML). Detailed write-path reconciliation belongs in WP4 architecture sub-docs 02-data-flow.md + 03-tech-stack.md. CV 16 records retirement direction so live divergence is documented, not lost. |
| WP6 D1 implementer (ontology Zod harness + content-type registry + parity test) | LANDED-S237 | lib/ontology/{schemas.ts,loader.ts,content-type-registry.ts} + __tests__/lib/ontology/markdown-parity.test.ts + scripts/ontology-sync/parse-flow.py shipped (commit a258d144). lib/validation/{schemas.ts:41-57,ingest-schemas.ts:11} swapped to CONTENT_TYPE_VALUES import. Test suite passes; lint clean; knip OK; build success. |
| WP6 E2 ratifier verdict on D1 implementer | LANDED-S237 | Verdict captured in docs/specs/wp6-ontology-harness/verifier-reports/E2-implementation-ratifier.md (per S237 prompt acceptance criteria). |
6. Provenance pointers
Section titled “6. Provenance pointers”| Doc | Role |
|---|---|
00-synthesis.md (v1) | S233 directional predecessor — preserved as audit-trail |
phase-b-prerequisite-1-onthology-pipeline.md | S234 canonical 6-layer mapping + S235 rewrite of §4.2/§4.4/§4.5/§5/§5.7/§6 |
phase-b-prerequisite-1-onthology-pipeline-feedback-investigation.md | S235 WP-ONTO-R1 research findings (Liam ratification 14/05/2026) |
phase-b-prerequisite-1-data-inventory-RAW.md | S234 entity inventory + S235 WP1 + WP2 updates |
phase-b-prerequisite-1-verification.md | S234 88% cross-ref verification |
phase-b-prerequisite-2-cocoindex-deep-dive.md | S234 cocoindex affordance synthesis |
phase-b-prerequisite-2-verification.md | S234 92% cross-ref verification |
phase-b-prerequisite-2d-docling-bakeoff.md | S234 Docling vs markitdown vs pullmd + S235 §9 XLSX URL-drop full-corpus verification |
supabase-db-action-items.md | Liam-curated Supabase platform actions (Items 1 + 3 — May 26 + May 30 deadlines) + auto-RLS event-trigger SQL (Item 2). Source for §3.16 / §3.17 / §3.18 + §5.1 audit_log RLS resolution. |
0.9-spike-S9-cocoindex-idempotency.md | S235 WP7 empirical idempotency (95% confidence, partial-confirmed) |
0.9-intended-architecture.md §4.3 | S235 q_a_pairs schema sketch rewrite |
0.9-decision-graph.md §11 | S234 + S235 ratifications consolidated |
0.9-collapse-candidates.md §12 + §13 + §14 | S235 ratified retires + DEFERRED-v1.1 + DO-NOT-BUILD items + S237 CV-driven retires (CV 04 capability, CV 16 firecrawl + trafilatura + pdfplumber) |
feedback-findings-review.md §5 + §6 | Canonical post-prereq disposition register (S235 updates landed; §6 S237 closures appended) |
docs/ontology/*.md (29 CV files + README) | WP6 markdown ontology scaffold (LANDED-S236-S237) — source of truth for Layer 1 CVs. README §“Docs-site auto-update plan (Astro + Starlight)” carries the S237-ratified docs-site framework decision. |
docs/specs/wp6-ontology-harness/TECH.md | WP6 D1 implementer spec (TECH-EDITOR commit 68a13f5e) — schema + parity-test plan + implementer file-by-file plan. |
docs/specs/wp6-ontology-harness/verifier-reports/ | E1 (frontmatter ratifier) + E2 (implementation ratifier) outputs. |
docs/specs/core-docs-pathway-assessment/INV-architecture-split-readiness.md | S237 sub-agent assessment of the pathway to splitting 0.9-intended-architecture.md into the 9 architecture/*.md sub-docs. Wave-by-wave plan for S238+. |
End of v2 synthesis. All v1 §2 items (B1/B2/I1-I3/N1-N11) have post-S234/S235 status. 15 new items from prereqs + WP-ONTO-R1 + spikes captured in §3 (with S237 CV-04 + CV-03 + CV-16 refinements appended at §3.7). WP4 readiness map (§4) refreshed — 8 of 9 sub-docs READY-TO-DRAFT or MOSTLY-READY for S238+ (06-mcp-tooling was the lone STILL-OPEN gate; Theme F since RATIFIED-S240 direct pattern — see §5.4). §5.4 captures S237 closures (Astro+Starlight ratification + 9 CV resolutions + WP6 D1/E2 land). Phase 0.9 investigation arc CLOSED for WP4 entry; architecture split scheduled S238+ per docs/specs/core-docs-pathway-assessment/INV-architecture-split-readiness.md.