v2 / v1.1 Deferral Register
v2 / v1.1 Deferral Register
Section titled “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).
1. Deferred to v1.1
Section titled “1. Deferred to v1.1”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).
| # | Item | Source(s) | Rationale |
|---|---|---|---|
| V11-1 | Workspace-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-2 | Admin 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-3 | Markdown 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-4 | q_a_extractions → markdown sidecar pipeline | 05-qa-flow.md §4; project-plan.md §8 (Q-OQR1-CLOSED-CONDITIONAL) | Companion to V11-3. v1 keeps approved pairs DB-only. |
| V11-5 | P-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 #4 | v1 = 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-6 | TS-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-7 | application_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-15 | Sub-state semantics via per-app-type override deferred to implementation; v1 uses code-driven state machine. |
| V11-8 | migration-revoke-guard.yml extension (CI guard for reserved-seats per-app columns) | reserved-workspace-seats/TECH.md T-7; project-plan.md §8 | v1 = review discipline only; v1.1 = CI guard extension once per-app columns land via feature-spec ALTER. |
| V11-9 | Yjs y-supabase persistence (UC1 4.1.Q4) | PLAN.md §7 item 19 | v1 in-platform edit uses Tiptap + Yjs without y-supabase server persistence. |
| V11-10 | UC8 Candidate C upgrade (cross-workspace dedup) | PLAN.md §7 item 20; decision-graph Q2.9/CX.29 | T9 ships UC8 Candidate A + LLM-reasoning for v1; Candidate C is the v1.1 upgrade. |
| V11-11 | Form-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-12 | Form 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-13 | HTML/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. |
2. Deferred to v2
Section titled “2. Deferred to v2”Real decisions, explicitly out of scope for both v1 and v1.1.
| # | Item | Source(s) | Rationale |
|---|---|---|---|
| V2-1 | form_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-2 | Cross-workspace KG without admin + scope flag | PLAN.md §7 item 24 | v1/v1.1 KG is workspace-scoped; cross-workspace graph traversal without an admin gate + scope flag is v2. |
| V2-3 | UC8 auto-merge threshold (auto-merge duplicates above a confidence threshold) | PLAN.md §7 item 21 | Post-v1.1. v1 keeps human-in-the-loop dedup review. |
| V2-4 | kg_timeline(entity, as_of) RPC | decision-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-5 | skill-seekers pdf_scraper advanced PDF features (chapter detection, OCR, image extraction) | decision-graph §5 OPS-SS-1; CX.12 | v1 PDF URL coverage uses baseline pdf_scraper; advanced features (pdfplumber + Pillow + Tesseract footprint) are v2 per OPS-SS-1. |
| V2-6 | cocoindex num_reprocesses vs KH _FlowRetryCounter (native engine reprocess counter as a retry/observability axis) | bl-162 (S299 investigation); cocoindex-write-model.md | The 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).
| # | Item | Source(s) | Rationale |
|---|---|---|---|
| PL-1 | Mempalace 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 1 | Theme F RATIFIED-S240 = direct pattern (mempalace as separate Anthropic plugin). Wrapping is conditional on mempalace-v4-alpha PG-backend availability (external). |
| PL-2 | mempalace Shape B strict-extract MCP mode | 08-new-features.md L169 (predecessor §7) | Deferred with the wrapped pattern (PL-1). |
| PL-3 | User-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-4 | mempalace v4-alpha PostgreSQL backend adoption | decision-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-5 | CocoInsight on-prem deployment posture | PLAN.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.
| # | Item | Source(s) | Status / next step |
|---|---|---|---|
| C-1 | EP8 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/L231 | OQ7 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-2 | P7 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-3 | Roadmap §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-4 | CV 03 UI nesting spec (p0-layer-nesting-spec.md) | decision-graph §3.C item 22 (DEFERRED-S238+); pre-s244-feedback Item 4 | Real decision deferred to a dedicated spec; tracked per pre-s244-feedback Item 4. |
| C-5 | Knowledge Map user-facing surface | 00-synthesis-v2.md §5.2 row 4/L218; decision-graph CX.32 (RESOLVED-S232 substrate); PLAN.md §7 item 8; S239-consolidation #8 | Substrate ratified = cocoindex (not Graphify). User-facing surface scope still open — future S7 spike; 08-new-features.md mention-only until then. |
| C-6 | UC9 cross-workspace operations (scope-tag taxonomy update) | PLAN.md §7 item 25; 08-new-features.md §5 | OPS-X-SCOPE-TAGS — separate work-package, out of canonical-pipeline scope. |
| C-7 | Onboarding folder-required (CX.28) + SMB data-fix v1 scope (CX.29) | PLAN.md §7 items 14/15 | PROVISIONAL per P-60/P-61. Bind at the onboarding feature spec / data-fix workstream; gate on Liam ratification (CX.28/CX.29). |
| C-8 | Stream-1 backlog items 14, 16-21 (post-0.8-synthesis adoptions) | decision-graph §5 | DEFERRED-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.
| Item | Was | Now | Source |
|---|---|---|---|
| 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 T9 | 07-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() wrapper | DEFERRED-POST-LAUNCH (tRPC backlog) | ACTIVE — codemod ID-32 done; corpus rollout ID-50 pending | decision-graph §5 OPS-T1; task-list ID-32/ID-50 |
| Q&A migration rollback window | STILL-OPEN (uncategorised) | RATIFIED-S241 — 1 year retention | S239-consolidation S241 addendum #5 |
| Reserved workspace seats (timing) | RESOLUTION-AMBIGUOUS | RATIFIED-S240 — created upfront (PK+FK+RLS); shipped ID-37/T2 | S239-consolidation S240 addendum #3 |
6. Coverage audit
Section titled “6. Coverage audit”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-*] count | Breakdown → mapped row |
|---|---|---|
architecture/07-collapse-list.md | 5 | 3 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.md | 4 | P-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.md | 3 | 1 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.md | 1 | workspace-private q_a_pairs L350 (→V11-1) |
architecture/09-diagrams.md | 1 | P-5 observability L653 (→V11-5) |
architecture/06-mcp-tooling.md | 1 | tier-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 item | Row | Source(s) in swept docs |
|---|---|---|
Workspace-private q_a_pairs | V11-1 | 0.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 vocabularies | V11-2 | 0.9-synthesis.md, 00-synthesis-v2.md, 04-workspace-types.md, 07-collapse-list.md §13 |
| Markdown sidecar for approved Q&A | V11-3 | 05-qa-flow.md, project-plan.md §8 |
q_a_extractions → sidecar pipeline | V11-4 | project-plan.md §8 |
| P-5 RLS observability hook | V11-5 | 02-data-flow.md, 08-new-features.md, 09-diagrams.md, project-plan.md §8 |
| TS-facing cocoindex ledger API | V11-6 | 00-synthesis-v2.md, 02-data-flow.md (corrected S267) |
application_types.state_machine_config | V11-7 | 07-collapse-list.md §13 |
migration-revoke-guard.yml extension | V11-8 | project-plan.md §8 |
form_type data-driven behaviour | V2-1 | 00-synthesis-v2.md, 04-workspace-types.md, project-plan.md §8 |
| mempalace wrapped-MCP pattern | PL-1 | 06-mcp-tooling.md §7, 08-new-features.md, project-plan.md §8 |
| mempalace Shape B strict-extract | PL-2 | 08-new-features.md |
| User-memory MCP tools | PL-3 | 08-new-features.md |
| mempalace v4-alpha PG backend | PL-4 | 0.9-spike-plan.md, 0.9-spike-S10-…, 03-q113-… |
| CocoInsight on-prem posture | PL-5 | 03-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 / onboarding | V11-10, V2-4, C-1…C-8 | decision-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.
7. Seeding the new product roadmap
Section titled “7. Seeding the new product roadmap”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.