S239 STILL-OPEN consolidation — end-of-session sweep
S239 STILL-OPEN consolidation — end-of-session sweep
Section titled “S239 STILL-OPEN consolidation — end-of-session sweep”Date: 14/05/2026 (S239 end-of-session)
Author: background worktree consolidation agent
Scope: Every STILL-OPEN flag raised across S239 output docs (01-vision, 03-tech-stack, 04-workspace-types, 07-collapse-list, RLS-PATTERN PRODUCT/TECH), cross-checked against canonical ratification sources + project reference docs.
Output: Three-tier classification — [ACTUALLY-STILL-OPEN] / [ACTUALLY-RESOLVED] / [RESOLUTION-AMBIGUOUS] — with recommended handoff disposition per item.
Summary
Section titled “Summary”16 STILL-OPEN flags scanned across 6 source docs.
| Classification | Count | Items |
|---|---|---|
[ACTUALLY-STILL-OPEN] | 11 | Theme F MCP review · diff-UI retire scope · P7 file-upload · Roadmap §3/§3.7/§11 LIKELY-ABSORB · EP8 partial obsolescence · Knowledge Map graph substrate · TS-facing API for cocoindex ledger · CocoInsight on-prem deployment · Prompt-cache passthrough · Discriminated-union Pydantic (Q-EX2) · Tracked-changes DOCX regression test · P-5 RLS observability hook |
[ACTUALLY-RESOLVED] | 1 | RLS-PATTERN destination decision (now ratified — spec exists at docs/specs/rls-pattern/{PRODUCT,TECH}.md; 03-tech-stack.md §8.2 reads stale) |
[RESOLUTION-AMBIGUOUS] | 4 | Q-OQR1-16 migration “STILL-OPEN” framing (multiple sub-doc occurrences — verify shared vs distinct STILL-OPEN flag) · TBD/future feature spec placeholders for 5 workspace seat tables · WP6 markdown ontology storage CV columns (Q-OQR1-12) referenced as ratified but not load-bearing for sub-docs · 06-mcp-tooling sub-doc reference (gate is established but the sub-doc itself doesn’t yet exist — meta-status) |
Note: there are 11 distinct items in [ACTUALLY-STILL-OPEN] but 12 if double-counting 04-workspace-types and 03-tech-stack separate migration-STILL-OPEN flags (the same Q-OQR1-16 migration). Treating those as 1 underlying ratification gap → 11 distinct items.
Top headline finding: Only 1 item is [ACTUALLY-RESOLVED] (RLS-PATTERN destination) — and that resolution happened mid-session. 03-tech-stack.md §8.2 line 188 should be updated to cite the spec rather than the pre-decision framing. All other flags reflect genuinely open items already in the canonical STILL-OPEN register at 00-synthesis-v2.md §5.2 / decision-graph §11.4.2, plus the new P-5 observability gap surfaced by the RLS-PATTERN spec itself.
Methodology
Section titled “Methodology”Scanned 6 S239 output docs for STILL-OPEN / gates on / migration STILL-OPEN / TBD / pre-decision / Theme F markers via grep. Cross-checked each flag against:
docs/plans/phase-0-investigation/0.9-decision-graph.md§11 (consolidated ratifications)docs/plans/phase-0-investigation/10-feedback-investigation-findings/00-synthesis-v2.md§3 + §5docs/specs/core-docs-pathway-assessment/S238-pre-S239-synthesis.md(Wave 2 carry-forwards)docs/specs/core-docs-pathway-assessment/INV-architecture-split-readiness.md§2/§3/§5/§7docs/specs/core-docs-pathway-assessment/S238-pre-S239-consistency-audit.mddocs/plans/phase-0-investigation/phase-b-prerequisite-1-onthology-pipeline-feedback-investigation.md§8 (Q-OQR1)docs/plans/phase-0-investigation/supabase-db-action-items.mddocs/reference/state-of-the-product.md,product-roadmap.json,product-backlog.json,SCHEMA-QUICK-REFERENCE.md,CLAUDE.md
Items by source doc
Section titled “Items by source doc”01-vision.md (commit 60d23571)
Section titled “01-vision.md (commit 60d23571)”Scan result: No STILL-OPEN flags raised. 01-vision.md is the ratified S238 pilot output; it cites Theme F as a future sub-doc gate (companion sub-doc note line 7) but does not raise a STILL-OPEN of its own.
03-tech-stack.md (commits 82361fa7 + fix dfa278a1)
Section titled “03-tech-stack.md (commits 82361fa7 + fix dfa278a1)”| Line | Flag content | Classification |
|---|---|---|
| 7 | Companion sub-doc note: 06-mcp-tooling.md (gated on Theme F) | [ACTUALLY-STILL-OPEN] — companion-ref to canonical Theme F STILL-OPEN per synthesis-v2 §5.2 row 1. Not a new flag. |
| 54 | Tool inventory + mempalace direct-vs-wrapped land in 06-mcp-tooling.md (gated on Theme F MCP-action review pre-decision per 00-synthesis-v2.md §5.2 row 1) | [ACTUALLY-STILL-OPEN] |
| 110 | CocoInsight on-prem deployment posture STILL-OPEN per 00-synthesis-v2.md §5.2 / TS-facing API for cocoindex per-flow-run ledger STILL-OPEN per same row | [ACTUALLY-STILL-OPEN] — both canonical (synthesis-v2 §5.2 rows 6 + 5) |
| 142 | Tracked-changes DOCX regression test STILL-OPEN per 00-synthesis-v2.md §5.2 | [ACTUALLY-STILL-OPEN] — canonical (synthesis-v2 §5.2 row 8) |
| 188 | RLS-PATTERN doc destination (inline §12 of 04 vs separate docs/specs/rls-pattern/{PRODUCT.md,TECH.md}) is “a Wave-2 pre-decision per INV-architecture-split-readiness.md §7.4 — not blocking this sub-doc” | [ACTUALLY-RESOLVED] — destination DECIDED at S239 Wave 2 dispatch. Spec exists at docs/specs/rls-pattern/{PRODUCT,TECH}.md (commit 8e1a25af). PRODUCT.md status header verbatim: “Spec destination ratified by Liam at S239 Wave 2 dispatch (separate doc per INV-architecture-split-readiness.md §7.4 recommendation)“. |
| 241 | Mempalace integration pattern (direct vs wrapped within KH MCP) — Theme F MCP-action review item, STILL-OPEN per 00-synthesis-v2.md §5.2 row 1 | [ACTUALLY-STILL-OPEN] |
| 295 | ”RATIFIED-S235 across …; The entity_aliases.category enum is renamed to provenance in the Q-OQR1-16 combined PR (RATIFIED-S235, migration STILL-OPEN)“ | [ACTUALLY-STILL-OPEN] — migration not yet applied. Q-OQR1-16 combined PR is RATIFIED-S235 per synthesis-v2 §3.7; the actual migration is a Q-OQR1-16 deliverable not yet drafted (separate from the auto-RLS migration). |
04-workspace-types.md (commits 797c233c + fix 34623848)
Section titled “04-workspace-types.md (commits 797c233c + fix 34623848)”| Line | Flag content | Classification |
|---|---|---|
| 7 | Companion sub-doc note: 06-mcp-tooling.md (gated on Theme F) | [ACTUALLY-STILL-OPEN] — same companion-ref as 03-tech-stack. |
| 20 | ”Schema commitments in this sub-doc are RATIFIED-S235 in framing; the migration is STILL-OPEN per Q-OQR1-16 combined-PR scope (§8). The two qualifiers run together throughout: every typed-column claim cites the ratification + flags migration STILL-OPEN where relevant.” | [ACTUALLY-STILL-OPEN] — Q-OQR1-16 combined PR migration scope established (decision-graph §11.3 + synthesis-v2 §3.4-§3.8) but NOT yet drafted as a migration file. (Distinct from the auto-RLS event trigger migration at 20260514150238_*.sql which is for 00-synthesis-v2.md §3.16+§3.17.) |
| 43 | ”RATIFIED-S235, migration STILL-OPEN per Q-OQR1-16 combined-PR scope. Citations: 00-synthesis-v2.md §3.4 (application_types instance table); 0.9-decision-graph.md §11.1 ONT.2 + ONT.3; phase-b-prerequisite-1-onthology-pipeline.md §4.2” | [ACTUALLY-STILL-OPEN] — same Q-OQR1-16 migration |
| 106-110 | Future workspace-type tables marked “TBD” (intelligence_workspaces, sales_proposal_workspaces, product_guide_workspaces, competitor_research_workspaces, training_onboarding_workspaces — “Future feature spec — TBD”) | [RESOLUTION-AMBIGUOUS] — These are workspace SEAT tables (not migration items). Synthesis-v2 §3.4 Q-OQR1-03 names 6 baseline application_types (procurement + intelligence + sales_proposal + product_guide + competitor_research + training_onboarding). Per architecture-sub-doc-readiness-audit.md §47 column the existence of seat tables is implicit in Q-OQR1-04 (KISS single discriminator with per-application_type satellite tables). Status: feature-spec-needed-later, not architecture STILL-OPEN. Suggestion: clarify TBD-here means “deferred feature spec, not architecture STILL-OPEN” so handoff isn’t confused. |
| 220 | ”RATIFIED-S235, migration STILL-OPEN. The actual SQL belongs in the migration draft (a separate combined-PR deliverable per the readiness-audit §10 verdict — ‘the section describes the migration’s scope, not the actual SQL’). This sub-doc carries the scope + the per-item home; SQL details live in the migration file and the per-application feature spec where relevant.” | [ACTUALLY-STILL-OPEN] — Q-OQR1-16 combined-PR migration not yet drafted. |
07-collapse-list.md (commits bbdc4a0f + fix dfa278a1)
Section titled “07-collapse-list.md (commits bbdc4a0f + fix dfa278a1)”| Line / § | Flag content | Classification |
|---|---|---|
| 42 (§1 intro) | “§12 lists STILL-OPEN ratifications surfaced by the §239 Wave 1 sweep — items where the predecessor’s tier marker did not clearly resolve and the ratifying source did not pin the outcome.” | Meta — points to §12 |
| §12.1 (line 296+) | Diff UI retire scope (app/api/source-documents/[id]/diff/*, app/documents/[id]/diff/page.tsx, components, lib/source-documents/document-diff.ts, source-document-impact.ts). “Predecessor §2.1 tagged PROPOSED-S233 pending Liam guidance; B2 RESOLVED-α per Q-OQR1-09 settles the table-shape question, but the diff-UI repurpose-or-retire scope is not addressed in the ratifying sources.” | [ACTUALLY-STILL-OPEN] — Cross-checked against 00-synthesis-v2.md §2-§5, 0.9-decision-graph.md §11, finding 01 — diff-UI scope is genuinely not ratified. Notably the planned 02-data-flow.md §9 structure (per readiness-audit §99 line 111) is the binding location (“diff-UI retire under Option α”) but the resolution itself is downstream. Project roadmap §9.6 mentions source-document-diff-review.tsx (1,298 LOC) as a refactor target (not retire). No backlog row. |
| §12.2 (line 306+) | P7 file-upload route disposition (app/api/upload/route.ts). Marked [CONDITIONAL-RETIRE] pending 02-data-flow.md source-binding-to-folder vs non-folder workflow resolution. | [ACTUALLY-STILL-OPEN] — Decision binds at 02-data-flow.md. Synthesis-v2 §3 + finding 01 + collapse-candidates §3.1 confirmed no explicit binding-context resolution exists in ratifying sources. |
| §12.3 (line 316+) | Roadmap §3 / §3.7 / §11 LIKELY-ABSORB sections (classification-related, AI telemetry, context graph phase 5). Per-item verification deferred to 02-data-flow.md. | [ACTUALLY-STILL-OPEN] — Direction-of-travel (LIKELY-ABSORB) is established via CX.21 + cocoindex-eval §5.8 per synthesis-v2 §3; per-item ratification deferred. |
| §12.4 (line 326+) | EP8 partial obsolescence (60% shipped via S194/S198/S205-S207). Predecessor tagged [CONDITIONAL-RETIRE] per OQ7 — partial rewrite needed, not full retire. | [ACTUALLY-STILL-OPEN] — OQ7 rewrite scope not addressed in ratifying sources. Confirmed in project roadmap §1.11: EP8 has live entry “EP8 build remains” (session_refs: ["S209", "S198"], depends_on: [“§5”]) — open product item, not architecture-blocking. Schedule: OQ7 spike or PRODUCT.md for EP8-rewrite scope. |
docs/specs/rls-pattern/PRODUCT.md (commit 8e1a25af)
Section titled “docs/specs/rls-pattern/PRODUCT.md (commit 8e1a25af)”| Line / § | Flag content | Classification |
|---|---|---|
| 11 (§How-to-use) | Convention: invariants carry [STILL-OPEN — gates on X] with explicit gating | Convention statement, not a flag |
| 59 (§P-5) | P-5 — Auto-RLS event-trigger observability. “When the RLS auto-enable event trigger fires on a new public.* table, the system records the trigger invocation in an audit-friendly location (audit_log row / structured log / both) with table name + timestamp + invoking user/role. [STILL-OPEN — gates on observability spec]. Mention-only in companion TECH.md until the observability spec lands. Category per construction guide §5.2: tech spec needed.” | [ACTUALLY-STILL-OPEN] — NEW item, surfaced by S239 RLS-PATTERN spec. Cross-checked against synthesis-v2 §3.16 (only records the rls_auto_enable() event trigger ratification, not an observability hook — the migration draft uses RAISE LOG per supabase-db-action-items.md Item 2 lines 66/69/72, no audit_log integration). Q24-B ratification per synthesis-v2 §5.1 covered audit_log RLS pattern, not the observability of the trigger itself. Liam pre-decision needed on option (a) audit_log insert / (b) separate fan-out / (c) defer to structured logging only. |
docs/specs/rls-pattern/TECH.md (commit 8e1a25af)
Section titled “docs/specs/rls-pattern/TECH.md (commit 8e1a25af)”| Line / § | Flag content | Classification |
|---|---|---|
| 13 (§How-to-use) | “Gate: any STILL-OPEN dependency” | Convention statement |
| 160 (§T-5) | T-5 — Auto-RLS event-trigger observability (implements P-5 — STILL-OPEN). “Current state: rls_auto_enable() writes to PostgreSQL RAISE LOG only (migration draft lines 62, 65, 68-69). No structured emission to audit_log. Target state: STILL-OPEN. Options: (a) extend rls_auto_enable() to insert into audit_log; (b) separate rls_auto_enable_observability() fan-out; (c) defer to structured logging only. Gate: Liam pre-decision on which option + audit_log shape.” | [ACTUALLY-STILL-OPEN] — Same P-5 item, just the TECH-side framing. |
[ACTUALLY-RESOLVED] items — source-doc fixes needed
Section titled “[ACTUALLY-RESOLVED] items — source-doc fixes needed”Fix 1: 03-tech-stack.md line 188 — RLS-PATTERN destination
Section titled “Fix 1: 03-tech-stack.md line 188 — RLS-PATTERN destination”Location: docs/plans/phase-0-investigation/architecture/03-tech-stack.md §8.2 line 188.
Current text (stale):
The destination of the dedicated RLS-PATTERN doc (inline in
04-workspace-types.md§12 vs separatedocs/specs/rls-pattern/{PRODUCT.md,TECH.md}) is a Wave-2 pre-decision perINV-architecture-split-readiness.md§7.4 — not blocking this sub-doc. The trigger pattern itself is ratified; the destination paragraph references it.
Ratification evidence: docs/specs/rls-pattern/PRODUCT.md line 3 verbatim: “Status: [CURRENT-CANONICAL] — NEW-S239. Spec destination ratified by Liam at S239 Wave 2 dispatch (separate doc per docs/specs/core-docs-pathway-assessment/INV-architecture-split-readiness.md §7.4 recommendation).” Commit 8e1a25af lands docs/specs/rls-pattern/{PRODUCT,TECH}.md.
Suggested replacement text:
The dedicated RLS-PATTERN doc lives at
docs/specs/rls-pattern/{PRODUCT.md,TECH.md}(ratified S239 Wave 2 perINV-architecture-split-readiness.md§7.4 recommendation — separate doc, not inline in04-workspace-types.md§12). The trigger pattern itself is ratified per synthesis-v2 §3.16; the destination paragraph references it.
Priority: LOW (decision is correctly described as “not blocking this sub-doc” — line is informational, not load-bearing). Can be left for the next read-through pass or fixed inline if anyone touches 03-tech-stack.md later.
[ACTUALLY-STILL-OPEN] items — for handoff carry-forward
Section titled “[ACTUALLY-STILL-OPEN] items — for handoff carry-forward”Consolidated list of items genuinely open after S239 close. Each appears in next session’s continuation prompt for either pre-decision dispatch or downstream sub-doc binding.
| # | Item | Source | Current canonical row | Liam pre-decision needed? | Suggested timing |
|---|---|---|---|---|---|
| 1 | Theme F MCP-action review pass (mempalace direct vs wrapped within KH MCP) | 03-tech-stack §3, §10; 04-workspace-types companion-ref; canonical 00-synthesis-v2.md §5.2 row 1 + 0.9-decision-graph.md §11.4.2 row 1 | Lone STILL-OPEN gate blocking 06-mcp-tooling.md | YES — operational pre-decision (binary: direct vs wrapped) | S240 kickoff or any dispatch — blocks 06-mcp-tooling.md only |
| 2 | Diff-UI retire scope | 07-collapse-list §12.1 | NOT in canonical register — surfaced by S239 sweep | YES — Liam 1-line ratification | S240 Wave 2 split (02-data-flow.md binding at §source-document-handling per 02-data-flow.md planned §9 structure) |
| 3 | P7 file-upload route disposition (app/api/upload/route.ts) | 07-collapse-list §12.2 (CONDITIONAL-RETIRE) | NOT in canonical register — binds at 02-data-flow.md | NO — 02-data-flow.md drafter resolves per cocoindex source-binding architecture | S240 Wave 2 split (02-data-flow.md source-binding section) |
| 4 | Roadmap §3/§3.7/§11 LIKELY-ABSORB per-item verification | 07-collapse-list §12.3 (CONDITIONAL-RETIRE) | NOT in canonical register — binds at 02-data-flow.md | NO — per-item verification at 02-data-flow.md | S240 Wave 2 split |
| 5 | EP8 partial obsolescence (60% shipped) | 07-collapse-list §12.4 (CONDITIONAL-RETIRE) + roadmap §1.11 (live entry) | OQ7 OPEN-WITH-NOTE per 0.9-decision-graph.md §7 + roadmap §1.11 | NO — scheduled spike OR PRODUCT.md | Schedule OQ7 spike or docs/specs/ep8-qa-docx-import-ui-spec.md rewrite; carry [CONDITIONAL-RETIRE] flag until then |
| 6 | Q-OQR1-16 combined PR migration drafting (kb_section retire + application_types introduce + project_id→workspace_id + digests→change_reports rename + ALTERs on application_types / form_types / form_template_requirements / guides / coverage_targets / entity_aliases.category→provenance / CV 04 retire capability / CV 16 retire firecrawl / CV 02 prose-to-frontmatter sync) | 03-tech-stack §10 (line 295 entity_aliases); 04-workspace-types §1.20 + §1.43 + §1.220 framing | All scope items RATIFIED-S235/S237 per 0.9-decision-graph.md §11.3; migration file itself not drafted | NO — migration file pending; this is “ratification CLOSED, implementation PENDING” pattern | Schedule combined-PR migration drafting (separate from 20260514150238_*.sql auto-RLS migration) — pre-launch deliverable; not blocking architecture sub-docs |
| 7 | P-5 RLS auto-enable observability hook (NEW S239) | docs/specs/rls-pattern/PRODUCT.md P-5 + TECH.md T-5 | NEW item — gap left by synthesis-v2 §3.16 (event trigger ratified; observability not) | YES — Liam picks (a) audit_log insert / (b) fan-out / (c) defer to structured logging | S240 kickoff or pre-launch — orthogonal to migration apply timing. Optional defer to v1.1 if scope justifies. |
| 8 | Knowledge Map graph substrate | canonical 00-synthesis-v2.md §5.2 row 4 | Future S7 spike; cocoindex confirmed as substrate at CX.32 | NO — pre-launch | S7 spike (pre-launch); 08-new-features.md writes mention-only |
| 9 | TS-facing API for cocoindex per-flow-run ledger | 03-tech-stack §5.6; canonical 00-synthesis-v2.md §5.2 row 5 | Pre-launch documentation | NO — pre-launch | Pre-launch task |
| 10 | CocoInsight on-prem deployment posture | 03-tech-stack §5.6; canonical 00-synthesis-v2.md §5.2 row 6 | Only if KH self-hosts | NO — contingent | Defer until self-host scenario surfaces |
| 11 | Tracked-changes DOCX regression test | 03-tech-stack §6.4; canonical 00-synthesis-v2.md §5.2 row 8 | Adds to Theme B regression suite | NO — pre-launch | Pre-launch QA task; relates to CLAUDE.md “python-docx and Track Changes” gotcha |
| 12 | Discriminated-union Pydantic with ExtractByLlm (Q-EX2) | canonical 00-synthesis-v2.md §5.2 row 7 | Pre-launch schema design | NO — pre-launch | Pre-launch task |
| 13 | Anthropic prompt-cache passthrough verification | canonical 00-synthesis-v2.md §5.2 row 5 | Pre-launch cost projection | NO — pre-launch | Pre-launch task |
Items 9-13 are operational STILL-OPENs already in the canonical register; they are not blocking the architecture sub-docs but should appear in handoff for visibility.
[RESOLUTION-AMBIGUOUS] items — Liam ratification or clarification needed
Section titled “[RESOLUTION-AMBIGUOUS] items — Liam ratification or clarification needed”| # | Item | What was checked | What was inconclusive | Suggested Liam disambiguation |
|---|---|---|---|---|
| 1 | 04-workspace-types.md §1.106-1.110 future seat tables (“Future feature spec — TBD”) for intelligence_workspaces / sales_proposal_workspaces / product_guide_workspaces / competitor_research_workspaces / training_onboarding_workspaces | Q-OQR1-03 (6 baseline application_types) + Q-OQR1-04 (single discriminator with satellite tables per application_type) | Q-OQR1-04 ratifies the pattern (one satellite per app-type) but the timing of creating each satellite table is not addressed. Are these tables created upfront-with-empty-schema, or per-feature-spec when each application gets built? | One-line ratification: “Satellite tables created per-feature-spec when each application ships, not upfront.” OR: “Satellite tables created upfront with reserved schema seat.” Either is consistent with Q-OQR1-04. |
| 2 | WP6 markdown ontology storage CV columns (Q-OQR1-12 — provenance_model / client_extensible / editable_via / core_seed_path frontmatter per CV term) | Referenced in 03-tech-stack §10 line 295 framing as load-bearing for provenance enum across hybrid Layer-1 CVs | Q-OQR1-12 is RATIFIED-S235 per synthesis-v2 §3.7 / decision-graph §11.1 ONT.13, but the frontmatter shape itself is implemented in docs/ontology/*.md per WP6 D1 (a258d144). No STILL-OPEN element to track. Flag artefact. | None needed — the framing is correct; flag is artefact of the Q-OQR1-16 migration cluster wording. No action. |
| 3 | 06-mcp-tooling sub-doc — meta-status | The sub-doc itself doesn’t exist as of S239 close; it’s a planned sub-doc gated on Theme F | The “STILL-OPEN” status applies to the gating ratification (Theme F), not the sub-doc — and the sub-doc itself can be dispatched once Theme F closes per INV §4 independent track | Already addressed under item 1 of [ACTUALLY-STILL-OPEN] above. No new disambiguation needed. |
| 4 | Q-OQR1-16 migration “STILL-OPEN” shared label | Multiple sub-docs label the same underlying migration as STILL-OPEN | Is the migration STILL-OPEN treated as one item (per 0.9-decision-graph.md §11.3) or per-occurrence (separately tracked per ALTER in each sub-doc)? Implication for handoff: one row in continuation prompt vs five. | Treat as ONE underlying ratification gap (one Q-OQR1-16 migration draft, scope per decision-graph §11.3). Sub-doc framings flag it per-section because each ALTER is referenced from a different sub-doc, but the actual deliverable is one combined PR. |
Cross-check coverage
Section titled “Cross-check coverage”| Item | Decision graph §11 | Synthesis-v2 §5.2 | S238 synthesis | INV-readiness §7 | Q-OQR1 source | Project ref docs |
|---|---|---|---|---|---|---|
| Theme F MCP-action review | YES (§11.4.2 row 1) | YES (row 1) | YES | YES (§7.2) | YES (§8.1 Q-OQR1-05 + finding 03 1B-5 Q4.5) | None |
| Diff-UI retire scope | NO | NO | NO | NO | Finding 01 (1B-1 source_documents) — partial | Roadmap §9.6 mentions refactor target, not retire |
| P7 file-upload route | NO | NO | NO | NO | Finding 01 (N5 RESOLVED — separate issue) | None |
| Roadmap §3/§3.7/§11 LIKELY-ABSORB | NO | CX.21 indirectly | NO | NO | NO | None |
| EP8 partial obsolescence | YES (§7 OQ7 OPEN-WITH-NOTE) | NO | NO | NO | NO | Roadmap §1.11 active item |
| Q-OQR1-16 migration | YES (§11.3 scope) | YES (§3 + §5 references) | YES (line 84 LAG-1) | YES (§2 + §3) | YES (Q-OQR1-16) | SCHEMA-QUICK-REF Last verified 07/05/2026 lags |
| P-5 observability hook | NO (NEW S239) | NO (gap in §3.16) | NO | NO | Q-OQR1-09 referenced but unrelated | None |
| Knowledge Map | NO (§11.4.2 row 6) | YES (row 4) | YES | YES (§5) | NO | None |
| TS-facing API cocoindex ledger | YES (§11.4.2 row 7) | YES (row 5) | NO | YES (§5) | NO | None |
| CocoInsight on-prem | YES (§11.4.2 row 8) | YES (row 6) | NO | YES (§5) | NO | None |
| Tracked-changes DOCX | YES (§11.4.2 row 4) | YES (row 8) | NO | NO | NO | CLAUDE.md “python-docx and Track Changes” gotcha (related but distinct — gotcha is for development; this is a regression test for the pipeline) |
| Q-EX2 Pydantic | YES (§11.4.2 row 3) | YES (row 7) | NO | NO | NO | None |
| Prompt-cache passthrough | YES (§11.4.2 row 2) | YES (row 5) | NO | NO | NO | None |
| RLS-PATTERN destination (resolved) | NO (post-§11 decision) | NO (referenced as TBD) | NO | YES (§7.4 recommends standalone) | NO | None |
| Workspace seat tables TBD | NO | NO | NO | YES (§5 implies satellite-per-app) | YES (Q-OQR1-04) | None |
Confidence
Section titled “Confidence”| Tier | Confidence | Rationale |
|---|---|---|
[ACTUALLY-STILL-OPEN] | HIGH | All 11 distinct items cross-verified against ≥1 canonical source. Items 1, 8-13 are already in the canonical 00-synthesis-v2.md §5.2 + 0.9-decision-graph.md §11.4.2 register. Items 2-5 are surfaced by 07-collapse §12 with explicit “not addressed in ratifying sources” framing — confirmed by independent cross-check. Item 6 (Q-OQR1-16 migration) is a known deliverable from decision-graph §11.3. Item 7 (P-5 observability) is NEW but the gap is verifiable by reading synthesis-v2 §3.16 (event trigger only; no observability mention) + supabase-db-action-items.md Item 2 SQL (only RAISE LOG, no audit_log). |
[ACTUALLY-RESOLVED] | HIGH | RLS-PATTERN destination decision is documented verbatim in docs/specs/rls-pattern/PRODUCT.md line 3 (commit 8e1a25af). The stale text at 03-tech-stack §8.2 line 188 was true at draft time but is now superseded by the same session’s spec landing. |
[RESOLUTION-AMBIGUOUS] | MEDIUM | Item 1 (workspace seat tables timing) is genuinely undecided by Q-OQR1-04 wording. Item 2 (WP6 frontmatter) is a non-issue — flag artefact only. Item 3 (06-mcp-tooling meta-status) is administrative. Item 4 (Q-OQR1-16 shared label) is a tracking-discipline question, not a substantive open. Confidence is medium because some “ambiguity” here is actually clarification of framing rather than true STILL-OPENs. |
Recommendations for next-session continuation prompt
Section titled “Recommendations for next-session continuation prompt”Liam pre-decisions to surface (in order of leverage):
- Theme F MCP-action review pass — single highest-leverage pre-decision (unblocks
06-mcp-tooling.mdentirely). Two-line decision: “mempalace direct” vs “mempalace wrapped within KH MCP”. Per finding doc 03 (1B-5 Q4.5) +feedback-findings-review.md§5.1 Theme F. - Diff-UI retire scope (1-line ratification per 07-collapse §12.1) — binds at
02-data-flow.md§source-document-handling. - P-5 RLS observability hook — pick option (a)
audit_loginsert / (b) fan-out helper / (c) defer to structured logging. Orthogonal to migration apply. - Workspace seat tables TBD timing (1-line ratification per 04-workspace-types §1.106-1.110) — “satellite-per-feature-spec” vs “satellite-upfront”.
Carry-forward STILL-OPENs to track in handoff (no decision needed mid-session, just visibility):
- Q-OQR1-16 combined PR migration drafting — pre-launch deliverable.
- EP8 partial obsolescence — schedule OQ7 spike or PRODUCT.md.
- Operational pre-launch items: Knowledge Map (S7 spike), TS-facing cocoindex API, CocoInsight on-prem, tracked-changes DOCX regression test, Q-EX2 Pydantic, prompt-cache verification.
Source-doc fix to consider (LOW priority — not blocking):
03-tech-stack.md§8.2 line 188 — update RLS-PATTERN destination wording to cite the spec atdocs/specs/rls-pattern/{PRODUCT,TECH}.md(now exists) instead of “Wave-2 pre-decision”. Defer to next read-through pass unless someone touches the sub-doc.
S240 + S241 closure addendum
Section titled “S240 + S241 closure addendum”Post-S239 ratifications applied to the items above. Source: mempalace recall + S241 Liam ratification burst.
Closed S240
Section titled “Closed S240”| # | Item | Original verdict | S240 closure | Source |
|---|---|---|---|---|
| 1 | Theme F MCP-action review pass | [ACTUALLY-STILL-OPEN] | RATIFIED-S240 — direct pattern (mempalace as separate Anthropic plugin alongside KH MCP). Migration to wrapped pattern [DEFERRED-POST-LAUNCH]. | docs/specs/core-docs-pathway-assessment/theme-f-mempalace-investigation.md (S240 substrate) + docs/plans/phase-0-investigation/architecture/06-mcp-tooling.md (drafted S240) |
| 2 | Diff-UI retire scope | [ACTUALLY-STILL-OPEN] | RATIFIED-S243 — RETAINED for v1, markdown-first (supersedes the interim S240 [DEFERRED-v1.1]). The surface (app/api/source-documents/[id]/diff/*, app/documents/[id]/diff/page.tsx, components, lib/source-documents/document-diff.ts, source-document-impact.ts) is NOT retired and NOT deferred — it is re-pointed from source_document_diffs to markdown sidecar revision comparison; lands as the Diff-UI sidecar re-point sub-task in PLAN.md T9. | PLAN.md §7 item 2 (RATIFIED-S243 Item 5) — cited in 02-data-flow.md §10.2 + 07-collapse-list.md §12.1 |
| 3 | Reserved workspace seats (item 1 RESOLUTION-AMBIGUOUS — satellite tables TBD timing) | [RESOLUTION-AMBIGUOUS] | RATIFIED-S240 — upfront-with-PK+FK+RLS-only. 5 non-procurement seats created at v1 apply time per docs/specs/reserved-workspace-seats/{PRODUCT,TECH}.md (NEW-S240 spec pair, 8 invariants S-1..S-8). Per-app columns land via feature-spec ALTER. | docs/specs/reserved-workspace-seats/PRODUCT.md S-1..S-8 + 04-workspace-types.md §4.2 |
| 4 | P-5 RLS auto-enable observability hook | [ACTUALLY-STILL-OPEN] | RATIFIED-S240 — [DEFERRED-v1.1] option (c) structured-logging-only (RAISE LOG → Cloud Run sidecar). audit_log integration deferred to v1.1. | docs/specs/rls-pattern/{PRODUCT,TECH}.md P-5/T-5 |
Closed S241
Section titled “Closed S241”| # | Item | Original verdict | S241 closure | Source |
|---|---|---|---|---|
| 5 | Q&A migration rollback window | [ACTUALLY-STILL-OPEN] (canonical-pipeline TECH.md §11 — uncategorised) | RATIFIED-S241 — 1 year retention. Aligns with UK data-protection minimum for audit records. Hard-delete soft-archived q_a_pair rows 1 year post-migration. Migration completion now unblocked. | S241 Liam ratification (this addendum) |
| 6 | Q-EX2 Discriminated-union Pydantic with ExtractByLlm | [ACTUALLY-STILL-OPEN] (canonical-pipeline TECH.md §11 — uncategorised) | CATEGORISED-S241 — tech spec needed. Destination: docs/specs/id-36-cocoindex-extraction-contract/{PRODUCT,TECH}.md (NEW spec pair, NOT YET CREATED). Becomes a top-level task in canonical-pipeline implementation PLAN.md (WP-B S241). | S241 Liam ratification + WP-B decomposition task |
| 7 | Anthropic prompt-cache passthrough verification | [ACTUALLY-STILL-OPEN] (canonical-pipeline TECH.md §11 — uncategorised) | CATEGORISED-S241 — investigation spike needed (1-2h). Test ExtractByLlm call with cache_control block; confirm cache hit. No spec — verification only. Becomes a top-level task in PLAN.md. | S241 Liam ratification + WP-B decomposition task |
| 8 | TS-facing API for cocoindex per-flow-run ledger | [ACTUALLY-STILL-OPEN] (canonical-pipeline TECH.md §11 — partially resolved by N6) | DEFERRED-v1.1 per RATIFIED-S243 (Item 11) (supersedes the interim S241 “tech spec needed”). v1 ships only the pipeline_runs rollup (N6 retained); the per-stage metrics surface is deferred. Spec exists as v1.1 substrate at docs/specs/id-36-cocoindex-ledger-api/TECH.md. | PLAN.md §7 item 9 (RATIFIED-S243 Item 11) |
Schema-reference update guard — S241 removal
Section titled “Schema-reference update guard — S241 removal”The docs/reference/SCHEMA-QUICK-REFERENCE.md entry was removed from TRACKED_REFERENCE_DOCS (lib/docs/tracked-reference-docs.ts) S241. Rationale: schema reference setup will be superseded by auto-syncing to the Astro docs-site (production-readiness track). Other tracked docs retain the freshness guard. The [skip-doc-freshness-guard] escape hatch on commit 8345e797 (S240 WP5 platform-deadline migration) is no longer load-bearing for the schema-quick-ref path but remains valid for other tracked docs.
Items still open (post-S241)
Section titled “Items still open (post-S241)”| # | Item | Status | Disposition |
|---|---|---|---|
| - | EP8 partial obsolescence | STILL-OPEN | Schedule OQ7 spike or PRODUCT.md rewrite |
| - | Q-OQR1-16 combined PR migration drafting | STILL-OPEN | Pre-launch deliverable; lands as top-level task in PLAN.md |
| - | Knowledge Map graph substrate | STILL-OPEN | Future S7 spike; cocoindex confirmed as substrate at CX.32 |
| - | CocoInsight on-prem deployment posture | STILL-OPEN | Contingent (only if KH self-hosts) — defer until scenario surfaces |
| - | Tracked-changes DOCX regression test | STILL-OPEN | Pre-launch QA task; relates to CLAUDE.md “python-docx and Track Changes” gotcha |
| - | Roadmap §3 / §3.7 / §11 LIKELY-ABSORB per-item verification | STILL-OPEN | Per-item verification deferred to 02-data-flow.md rebind or WP-B PLAN.md task |
| - | P7 file-upload route disposition (app/api/upload/route.ts) | STILL-OPEN | Binds at cocoindex source-binding architecture (PLAN.md task) |
| - | New audit findings (P8 + P9 from implementation-readiness-audit-s240.md) | TRACKED-S241 | Added to product-backlog.json per S241 WP-C — (P8) RLS-PATTERN CREATE TABLE LIKE / PARTITION OF not auto-enabled at v1; (P9) retroactive RLS audit for tables created before rls_auto_enable migration |
End of consolidation + S240/S241 closure addendum. Original S239 register compiled 14/05/2026; S241 closure addendum compiled 18/05/2026 (S241 main session).