Skip to content

v2 / v1.1 Deferral Register

Version: 1.0 (kh-main-S267, Task ID-51.2). Status: [CURRENT-CANONICAL] forward register for deferred work. Purpose. One forward-looking home for every [DEFERRED-v1.1] / [DEFERRED-v2] / [DEFERRED-POST-LAUNCH] decision scattered across the phase-0 investigation docs, the architecture sub-docs, the canonical-pipeline plan, and the project plan — so the new product roadmap can be seeded from a single list rather than re-discovered by grep. Sibling of docs/reference/decision-graph.md.

Acceptance contract. Every [DEFERRED-*] tag in the swept docs maps to a row below. The swept docs (per Task ID-51 brief) are: the phase-0-investigation tree (docs/plans/phase-0-investigation/**), docs/reference/project-plan.md §8, and architecture/07-collapse-list.md. Canonical deferral homes that live under docs/specs/ (PLAN.md §7, rls-pattern, cocoindex-ledger-api) are folded in as authoritative cross-references. The tag census in §6 makes coverage auditable.

How to read. Many tags are the same underlying item cited from several docs — each item appears once here with all its source citations. Bucket = the release gate the item is deferred to. “Source” lists the ratifying doc(s); “Rationale” is why it was deferred (verbatim intent, condensed).


Retire/build intent confirmed; deferred to the v1.1 work cycle (internal KH release gate). These are the Phase 4 backlog (project-plan.md §8).

#ItemSource(s)Rationale
V11-1Workspace-private q_a_pairs (private_to_workspace_id UUID NULL column)0.9-synthesis.md L327/L342; 00-synthesis-v2.md §3.14/L173/L258; 04-workspace-types.md L51/L283; 05-qa-flow.md §4/L350; 07-collapse-list.md §13; project-plan.md §8; PLAN.md §7 item 17 (Q-OQR1-08)Single Phew tenant for v1 — the private/shared distinction is non-load-bearing until multi-tenant. v1 ships corpus-level only.
V11-2Admin UI for client-managed vocabularies (application_types / form_types / scope_tags editing)0.9-synthesis.md L326; 00-synthesis-v2.md §3.13/L169/L259; 04-workspace-types.md L85/L284; 07-collapse-list.md §13; project-plan.md §8; PLAN.md §7 item 16 (Q-OQR1-13)v1 ships the baseline rows via SQL seed. v1.1 admin UI extends the existing settings-page pattern; no new infrastructure.
V11-3Markdown sidecar materialisation for approved Q&A pairs (UC5 4.6.Q7 + UC6 4.3.Q7)05-qa-flow.md §4/L143; 0.9-canonical-pipeline/PRODUCT.md §11; project-plan.md §8; PLAN.md §7 item 18; decision-graph Q2.9/Q3.2 (SIDECAR-REOPENED-S233 → re-closed to v1.1)v1 keeps approved Q&A pairs KH-DB-only. The S233 “reopen to v1” proposal did not carry — sidecar emit deferred to v1.1 (round-trips via UC1 Candidate A when it lands).
V11-4q_a_extractions → markdown sidecar pipeline05-qa-flow.md §4; project-plan.md §8 (Q-OQR1-CLOSED-CONDITIONAL)Companion to V11-3. v1 keeps approved pairs DB-only.
V11-5P-5 RLS auto-enable observability hook (audit_log insert / fan-out)rls-pattern/{PRODUCT,TECH}.md P-5/T-5; 02-data-flow.md §6; 08-new-features.md L166; 09-diagrams.md D-26/L842; project-plan.md §8; PLAN.md §7 item 7; S239-consolidation S240 addendum #4v1 = option (c) structured-logging only (RAISE LOG → Cloud Run sidecar log ingest). Options (a) audit_log insert + (b) fan-out helper reopen at v1.1 if operational signal surfaces.
V11-6TS-facing API for cocoindex per-flow-run ledger (cocoindex-ledger-api/TECH.md)00-synthesis-v2.md §5.2 row 5/L245; 02-data-flow.md §3.3/§7.2 (L144/L169, corrected S267); cocoindex-ledger-api/TECH.md (header); project-plan.md §5/§11; PLAN.md §7 item 9 (RATIFIED-S243 Item 11)v1 ships only the pipeline_runs rollup (N6 retained — insulates UI from cocoindex schema). Per-stage detail surface (getFlowRunMetrics etc.) deferred. Existing TECH.md draft retained as v1.1 substrate.
V11-7application_types.state_machine_config JSONB shape (per-app-type sub-state override)07-collapse-list.md §13; 0.9-collapse-candidates.md §13 row 4 (predecessor); Q-OQR1-15Sub-state semantics via per-app-type override deferred to implementation; v1 uses code-driven state machine.
V11-8migration-revoke-guard.yml extension (CI guard for reserved-seats per-app columns)reserved-workspace-seats/TECH.md T-7; project-plan.md §8v1 = review discipline only; v1.1 = CI guard extension once per-app columns land via feature-spec ALTER.
V11-9Yjs y-supabase persistence (UC1 4.1.Q4)PLAN.md §7 item 19v1 in-platform edit uses Tiptap + Yjs without y-supabase server persistence.
V11-10UC8 Candidate C upgrade (cross-workspace dedup)PLAN.md §7 item 20; decision-graph Q2.9/CX.29T9 ships UC8 Candidate A + LLM-reasoning for v1; Candidate C is the v1.1 upgrade.
V11-11Form-instance supersession implementation (option (b): superseded_by/superseded_at/superseded_reason pointer columns outside FORM_TEMPLATES_SCHEMA + human-confirmed supersede endpoint + include_superseded list filtering + chain validations)docs/specs/ID-80-forms-path-b/80.12-versioning-investigation.md §5 + §11 (RATIFIED-S316 DPs 1-4, 6-7, 9-10)DP-10 derived routing: a NEW designed Task in the v1.1 cycle, sequenced when procurement-workspaces firm up (the original D6 routing). Not smoke-gating; ID-80 closes with the investigation as its {80.12} deliverable. Operator folder contract (“new revisions arrive as new files”) ratified now and cross-referenced to ID-56.12’s folder-drop spec.
V11-12Form supersession filename-hint heuristic (B-15-style “charnwood-v2.docx may supersede charnwood.docx” suggestion)80.12-versioning-investigation.md §10 DP-5 (RATIFIED-S316)Liam: v1.1 scope; suggest-only, never auto-supersede (human confirms). Rides on V11-11’s supersede endpoint.
V11-13HTML/URL extraction JS-render (SPA) lane (Playwright JS-render for hydrated-SPA sources, behind a config flag, served by a NEW standalone render sidecar)ID-112 {112.3} TECH OQ-112-T1 (RATIFIED-S366 static-only v1, Liam); check-112-tech N1 (standalone-sidecar requirement)v1 ships static-only extraction (Trafilatura fetch_url, no browser render) — the in-house cleaner handles static HTML; SPA JS-render is deferred. The existing pullmd-playwright :8002 render sidecar is internal to the pullmd stack ID-112 retires (dies with it), so the v1.1 lane needs a standalone render service + a worker→render-API contract probe — NOT a reuse of the existing sidecar. v1 corpus is overwhelmingly static (procurement / sector docs / RSS). Liam-ratified static-only S366.

Real decisions, explicitly out of scope for both v1 and v1.1.

#ItemSource(s)Rationale
V2-1form_type-specific behaviour data-driven model (extraction/match/export policy as DB-configured per-form_type rows)00-synthesis-v2.md L256; 04-workspace-types.md L286; project-plan.md §8; PLAN.md §7 item 23 (Q-OQR1-14)Code-driven for v1 + v1.1 — simpler shape. Data-driven per-form_type policy is a v2 generalisation.
V2-2Cross-workspace KG without admin + scope flagPLAN.md §7 item 24v1/v1.1 KG is workspace-scoped; cross-workspace graph traversal without an admin gate + scope flag is v2.
V2-3UC8 auto-merge threshold (auto-merge duplicates above a confidence threshold)PLAN.md §7 item 21Post-v1.1. v1 keeps human-in-the-loop dedup review.
V2-4kg_timeline(entity, as_of) RPCdecision-graph Part II §5 Backlog + §3.C (Q4.9)“Answer was right last quarter” temporal UX — useful but not launch-blocking. Depends on kg_invalidate (Q4.8) being live. (Not in PLAN.md §7 — Q4.9 is a graph-only decision, never entered the pipeline plan.)
V2-5skill-seekers pdf_scraper advanced PDF features (chapter detection, OCR, image extraction)decision-graph §5 OPS-SS-1; CX.12v1 PDF URL coverage uses baseline pdf_scraper; advanced features (pdfplumber + Pillow + Tesseract footprint) are v2 per OPS-SS-1.
V2-6cocoindex num_reprocesses vs KH _FlowRetryCounter (native engine reprocess counter as a retry/observability axis)bl-162 (S299 investigation); cocoindex-write-model.mdThe native num_reprocesses counter is unreachable from the KH webhook emission point without a refactor, and is a different axis from _FlowRetryCounter (engine-internal reprocess count vs KH-side retry count) — not a like-for-like substitute. Revisit only if the cocoindex engine API exposes the counter at emission time.

3. Deferred post-launch (external dependency / not on KH release timeline)

Section titled “3. Deferred post-launch (external dependency / not on KH release timeline)”

Semantically distinct from v1.1: gated on an external dependency, not the KH internal release gate (per 07-collapse-list.md §1.1 tag definition).

#ItemSource(s)Rationale
PL-1Mempalace wrapped-within-KH-MCP pattern (migration from direct plugin)06-mcp-tooling.md §7/L288; 08-new-features.md L168; theme-f-mempalace-investigation.md; project-plan.md §8; PLAN.md §7 item 1Theme F RATIFIED-S240 = direct pattern (mempalace as separate Anthropic plugin). Wrapping is conditional on mempalace-v4-alpha PG-backend availability (external).
PL-2mempalace Shape B strict-extract MCP mode08-new-features.md L169 (predecessor §7)Deferred with the wrapped pattern (PL-1).
PL-3User-memory MCP tools (save_user_memory / recall_user_memory / forget_user_memory)08-new-features.md L170 (predecessor §9)3 of the 8 named Theme-F tools; deferred post-launch with the mempalace wrapped pattern.
PL-4mempalace v4-alpha PostgreSQL backend adoptiondecision-graph Q4.6 §3.C; 0.9-spike-plan.md L232; 0.9-spike-S10-dedup-substrate.md L199; 03-q113-q55-q311-q45-workspace-types.md L180; pre-s244-feedback Item 9 (PRs #665/#1072/#1337)DEFERRED-POST-LAUNCH-OPEN-AVAILABILITY — gates any PG-backend wiring. Live install is v3.x ChromaDB; track upstream PR cadence (OPS-MP2).
PL-5CocoInsight on-prem deployment posturePLAN.md §7 item 10 (canonical disposition); 00-synthesis-v2.md §5.2 row 6. (NB: 02-data-flow.md §5.4 / 03-tech-stack.md §5.6 still read STILL-OPEN — point-in-time, superseded by PLAN.md §7 item 10’s DEFERRED disposition)Contingent — only relevant if KH self-hosts cocoindex infrastructure. Re-evaluate if the self-host scenario surfaces.

4. Conditional / still-open (not yet bucketed to a release gate)

Section titled “4. Conditional / still-open (not yet bucketed to a release gate)”

Carried forward but without a firm v1.1/v2/post-launch assignment — each needs a spike, a spec, or a downstream binding before it can be roadmap-scheduled.

#ItemSource(s)Status / next step
C-1EP8 Q&A .docx import UI — partial obsolescence (60% shipped S194/S198/S205-S207)07-collapse-list.md §12.4; decision-graph CX.24/OQ7; PLAN.md §7 item 5; S239-consolidation #5/L231OQ7 OPEN-WITH-NOTE — partial rewrite, not full retire. Schedule OQ7 spike or rewrite docs/specs/ep8-qa-docx-import-ui-spec.md. Carry [CONDITIONAL-RETIRE] until then. Live roadmap item (Procurement / §1.11).
C-2P7 file-upload route disposition (app/api/upload/route.ts)07-collapse-list.md §12.2; decision-graph CX (§3.C); S239-consolidation #3[CONDITIONAL-RETIRE] — binds at cocoindex source-binding architecture. N5 silent-fail fix resolved separately (Option α slim-and-keep).
C-3Roadmap §3 / §3.7 / §11 LIKELY-ABSORB sections (classification, AI telemetry, context-graph phase 5)07-collapse-list.md §12.3; decision-graph CX.21; S239-consolidation #4[CONDITIONAL-RETIRE] — per-item verification deferred to 02-data-flow.md rebind or a PLAN.md task. Direction-of-travel = LIKELY-ABSORB.
C-4CV 03 UI nesting spec (p0-layer-nesting-spec.md)decision-graph §3.C item 22 (DEFERRED-S238+); pre-s244-feedback Item 4Real decision deferred to a dedicated spec; tracked per pre-s244-feedback Item 4.
C-5Knowledge Map user-facing surface00-synthesis-v2.md §5.2 row 4/L218; decision-graph CX.32 (RESOLVED-S232 substrate); PLAN.md §7 item 8; S239-consolidation #8Substrate ratified = cocoindex (not Graphify). User-facing surface scope still open — future S7 spike; 08-new-features.md mention-only until then.
C-6UC9 cross-workspace operations (scope-tag taxonomy update)PLAN.md §7 item 25; 08-new-features.md §5OPS-X-SCOPE-TAGS — separate work-package, out of canonical-pipeline scope.
C-7Onboarding folder-required (CX.28) + SMB data-fix v1 scope (CX.29)PLAN.md §7 items 14/15PROVISIONAL per P-60/P-61. Bind at the onboarding feature spec / data-fix workstream; gate on Liam ratification (CX.28/CX.29).
C-8Stream-1 backlog items 14, 16-21 (post-0.8-synthesis adoptions)decision-graph §5DEFERRED-POST-LAUNCH — sequencing post-architecture; subject to collapse-candidates refresh.

5. Reversed / superseded “deferred” tags (do NOT re-defer)

Section titled “5. Reversed / superseded “deferred” tags (do NOT re-defer)”

Items that carried a [DEFERRED-*] tag at some point but were reversed or re-scoped — listed so a roadmap reader does not re-add them as deferred.

ItemWasNowSource
Diff-UI surface[DEFERRED-v1.1] (S240)RATIFIED-S243 — RETAINED for v1, re-pointed to markdown sidecar revision comparison; re-point work in PLAN.md T907-collapse-list.md §12.1; PLAN.md §7 item 2; 02-data-flow.md L261; project-plan.md §8 (REVERSED-S243)
OPS-T1 typed defineRoute() wrapperDEFERRED-POST-LAUNCH (tRPC backlog)ACTIVE — codemod ID-32 done; corpus rollout ID-50 pendingdecision-graph §5 OPS-T1; task-list ID-32/ID-50
Q&A migration rollback windowSTILL-OPEN (uncategorised)RATIFIED-S241 — 1 year retentionS239-consolidation S241 addendum #5
Reserved workspace seats (timing)RESOLUTION-AMBIGUOUSRATIFIED-S240 — created upfront (PK+FK+RLS); shipped ID-37/T2S239-consolidation S240 addendum #3

The acceptance contract — “no [DEFERRED-*] tag in the swept docs is missing from the register” — is proven in two parts, because deferred items are expressed in the swept docs in two forms: (a) literal bracketed tags [DEFERRED-v1.1] / [DEFERRED-v2] / [DEFERRED-POST-LAUNCH] (sparse — mostly in the tier-tagged tables of 07-collapse-list.md + project-plan.md), and (b) far more commonly, plain-text mentions (**DEFERRED-v1.1**, “DEFERRED-POST-LAUNCH per …”). §6.1 is the literal bracketed-tag census; §6.2 is the substantive deferred-item coverage (the real completeness proof, since most items are plain-text).

6.1 Bracketed-tag census (literal [DEFERRED-*])

Section titled “6.1 Bracketed-tag census (literal [DEFERRED-*])”

Method (reproducible): grep -oE "\[DEFERRED-[A-Za-z0-9.]+\]" <file> | wc -l. Real counts across the swept docs — every swept doc not listed here returns 0 bracketed tags (00-synthesis-v2.md, 0.9-synthesis.md, 04-workspace-types.md, 08-new-features.md, 03-tech-stack.md, 0.9-spike-plan.md, 0.9-spike-S10-…, 03-q113-…, content-project-docs.md — those express deferrals in plain text only, covered by §6.2).

Swept doc[DEFERRED-*] countBreakdown → mapped row
architecture/07-collapse-list.md53 substantive: §13 workspace-private (→V11-1), admin-UI (→V11-2), state_machine_config (→V11-7); + 2 tier-vocabulary definitions (§1.1 L22/L25 — not items)
architecture/02-data-flow.md4P-5 PRODUCT ref L152 + T-5 TECH ref L153 (→V11-5); diff-UI reversal framing L261 (→§5, do-not-re-defer); combined-PR/op_id cross-ref L135 (§11.4.1 — not a deferral)
project-plan.md31 substantive: diff-UI [DEFERRED-v1.1] L99 theme-retirements (→§5, REVERSED-S243); + 2 meta: vocab-def L20, Phase-4 gate “all [DEFERRED-v1.1] items” L33
architecture/05-qa-flow.md1workspace-private q_a_pairs L350 (→V11-1)
architecture/09-diagrams.md1P-5 observability L653 (→V11-5)
architecture/06-mcp-tooling.md1tier-vocabulary enumeration L274 (not an item); the §7 wrapped-pattern heading uses plain-text “DEFERRED-POST-LAUNCH” (→PL-1, §6.2)

Bracketed total = 15 tag-occurrences across the swept docs, decomposing as: 9 substantive occurrences → 5 distinct items (V11-1 ×2 [05-qa-flow L350 + 07-collapse §13]; V11-2 ×1 [07-collapse §13]; V11-5 ×3 [02-data-flow L152 + L153 + 09-diagrams L653]; V11-7 ×1 [07-collapse §13]; diff-UI→§5 ×2 [02-data-flow L261 + project-plan L99]); 5 vocabulary/meta (07-collapse L22/L25 tier-tag defs + 06-mcp-tooling L274 enumeration + project-plan L20 vocab-def + L33 Phase-4 gate); 1 framing cross-ref (02-data-flow L135 op_id §11.4.1, not a deferral). 9 + 5 + 1 = 15. Every substantive bracketed tag maps to a register row.

6.2 Substantive deferred-item coverage (the completeness proof)

Section titled “6.2 Substantive deferred-item coverage (the completeness proof)”

Most deferred items are plain-text in the swept docs. Each distinct item found (by sweeping plain-text DEFERRED-{v1.1,v2,POST-LAUNCH} + the bracketed tags above) maps to exactly one register row:

Distinct deferred itemRowSource(s) in swept docs
Workspace-private q_a_pairsV11-10.9-synthesis.md, 00-synthesis-v2.md, 04-workspace-types.md, 05-qa-flow.md, 07-collapse-list.md §13
Admin UI for client-managed vocabulariesV11-20.9-synthesis.md, 00-synthesis-v2.md, 04-workspace-types.md, 07-collapse-list.md §13
Markdown sidecar for approved Q&AV11-305-qa-flow.md, project-plan.md §8
q_a_extractions → sidecar pipelineV11-4project-plan.md §8
P-5 RLS observability hookV11-502-data-flow.md, 08-new-features.md, 09-diagrams.md, project-plan.md §8
TS-facing cocoindex ledger APIV11-600-synthesis-v2.md, 02-data-flow.md (corrected S267)
application_types.state_machine_configV11-707-collapse-list.md §13
migration-revoke-guard.yml extensionV11-8project-plan.md §8
form_type data-driven behaviourV2-100-synthesis-v2.md, 04-workspace-types.md, project-plan.md §8
mempalace wrapped-MCP patternPL-106-mcp-tooling.md §7, 08-new-features.md, project-plan.md §8
mempalace Shape B strict-extractPL-208-new-features.md
User-memory MCP toolsPL-308-new-features.md
mempalace v4-alpha PG backendPL-40.9-spike-plan.md, 0.9-spike-S10-…, 03-q113-…
CocoInsight on-prem posturePL-503-tech-stack.md (+ PLAN.md §7 item 10 canonical)
UC8 Candidate C / kg_timeline / Stream-1 / EP8 / P7-upload / roadmap-absorb / CV-03 / Knowledge-Map / UC9 / onboardingV11-10, V2-4, C-1…C-8decision-graph Part II §5/§3.C, 07-collapse-list.md §12

Cross-reference homes under docs/specs/ (authoritative, folded in but NOT AC-binding per OQ-51-B): PLAN.md §7 (25-row disposition register), rls-pattern/{PRODUCT,TECH}.md (P-5/T-5), cocoindex-ledger-api/TECH.md (whole spec v1.1), cocoindex-flow-scaffolding (per-stage v1.1 items), procurement-workspaces/PRODUCT.md, content-model-invariants/PRODUCT.md. These are the canonical ratification homes; this register summarises them and points back.


For the roadmap rethink, the natural mapping:

  • v1.1 release (Phase 4) ← §1 (V11-1…V11-10) — these are the committed v1.1 backlog; project-plan.md §8 already tracks the subset.
  • v2 themes ← §2 (V2-1…V2-5) — generalisation work; each likely a roadmap epic.
  • External-dependency watch list ← §3 (PL-1…PL-5) — not schedulable until the upstream dependency lands; track at OPS-MP2 / self-host-decision cadence.
  • Needs-a-spike-or-spec before scheduling ← §4 (C-1…C-8) — roadmap intake queue; resolve the gating question first.
  • §5 is the “already handled — do not re-add” guard.