07 — Collapse list
07 — Collapse list
Section titled “07 — Collapse list”Last verified: 02/06/2026 (S299 — applied §5.1/§6 RETIRED-SINCE marks ({56.11}/{52.15} both landed S298); de-staled §7 Docling/Cloud-Run framing (Cloud Run torn down S298 → IONOS/Coolify; live extractors pdfplumber/trafilatura); JSDOM ontology retain-caveat. Prior verify S277 — ID-46.1 re-audit of §5/§7 against current shape: struck the regenerateChunks() §5.1 row (SUPERSEDED → ID-56 {56.11}, no longer build-not-wired — 8 live callers); corrected the extract-qa-pairs.ts path (lib/bid-library-ingest/ → lib/procurement-library-ingest/, S248 rename); corrected the “URL-freshness cron” label to “calculate route”; per-row evidence in docs/specs/id-46-cocoindex-absorption-cleanup/RESEARCH.md §4 + §8. Larger ownership-handoff annotations (§5.2 ID-42 split-ownership, §7 dep-row caveats, §11.3 trafilatura/pdfplumber nuance) recorded as a proposed Curator diff in that RESEARCH §8.5, NOT yet applied. Prior: S274 — added §6 row for app/api/procurement/[id]/templates/[templateId]/analyse/route.ts retirement under OQ-52-WORKSPACE_WRITE Option A pipeline-owned write; S239 Wave 1 as canonical replacement of docs/plans/phase-0-investigation/0.9-collapse-candidates.md)
Scope: Items collapsing (retiring, renaming, never-being-built) on the path to Knowledge Hub v1. Per-item canonical tier marker + ratifying-source citation.
Status: [CURRENT-CANONICAL] — supersedes docs/plans/phase-0-investigation/0.9-collapse-candidates.md.
Layer: 2 (depends on Phase 0.9 ratifications consolidated in 00-synthesis-v2.md §3 + 0.9-decision-graph.md §11; no upstream sub-doc deps).
Companion sub-docs: 01-vision.md, 02-data-flow.md, 03-tech-stack.md, 04-workspace-types.md, 05-qa-flow.md, 06-mcp-tooling.md, 08-new-features.md, 09-diagrams.md.
1. Scope + tier vocabulary
Section titled “1. Scope + tier vocabulary”This sub-doc is the canonical register of items that collapse — retire, rename, or are explicitly ratified never-to-be-built — on the path to Knowledge Hub v1. It supersedes docs/plans/phase-0-investigation/0.9-collapse-candidates.md, which carried 12+ session-suffixed tier markers (PROPOSED-S233 / RATIFIED-RETIRE-S235 / RATIFIED-RENAME-S235 / RATIFIED-RETIRE-S237 etc.) accumulated across S233 → S235 → S237 incremental refreshes. The session suffix layered timing into the tier marker itself; this sub-doc collapses that to seven canonical tags. Ratification timing is carried in the citation, not in the tier.
1.1 The seven canonical tags
Section titled “1.1 The seven canonical tags”| Tag | Definition |
|---|---|
[RATIFIED-RETIRE] | Item drops entirely. Replacement clear and ratified per the cited source. |
[RATIFIED-RENAME] | Table, path, constant, or literal renamed. Logic intact. |
[RATIFIED-DO-NOT-BUILD] | Item proposed but ratified never to be built. |
[DEFERRED-v1.1] | Retire intent confirmed; deferred to v1.1 work cycle (internal KH release gate). |
[CONDITIONAL-RETIRE] | Retire iff a stated condition holds. Condition stated in the same row. |
[LOCKSTEP-WITH-MIGRATION] | Retire on the Q-OQR1-16 combined-PR apply (CV in lockstep with DB schema). |
[DEFERRED-POST-LAUNCH] | Item gated on an external dependency that is not on the KH release timeline (e.g. mempalace v4 standalone HTTP server). Semantically distinct from [DEFERRED-v1.1] — the gate is upstream, not a KH version cut. Added S243 polish per docs/specs/wp4-architecture-split-cross-doc-audit-s242.md §6.1; current usage: 06-mcp-tooling.md §7 wrapped-pattern migration + 08-new-features.md §10 mempalace Shape B + user-memory MCP tools. |
1.2 Citation discipline
Section titled “1.2 Citation discipline”Every load-bearing claim cites its ratifying source — Q-OQR1-NN ratifications via 00-synthesis-v2.md §3 or §5; WP8 N7/N9/audit_log RLS rulings via 00-synthesis-v2.md §5.1 or 0.9-decision-graph.md §11.4.1; S237 CV resolutions via 00-synthesis-v2.md §5.4 or 0.9-decision-graph.md §11.4.5; finding-doc decisions via the finding doc + section.
1.3 What this sub-doc does NOT carry
Section titled “1.3 What this sub-doc does NOT carry”- No “explicitly NOT collapsing” inventory of carry-forward items beyond §10. Items that resolved as keep/reuse/extend live in
0.9-decision-graph.md(RESOLVED rows) and the relevant feature/architecture sub-doc. - No combined-PR migration plan. The Q-OQR1-16 combined-PR scope (10 components) is recorded in
0.9-decision-graph.md§11.3; the schema detail for each component lands in04-workspace-types.md. - No bidirectional GitNexus audit log. S233 ran a one-time impact-analysis pass on headline candidates; the LOW-risk verdicts are folded into the row-level ratification citations below where load-bearing.
2. How to read
Section titled “2. How to read”Sections §3-§11 group items by domain (database schema, Q&A schema, pipeline, UI/route, dependencies, conditional bindings, docs/specs archive, CV-driven retires). Each row carries: item identifier + canonical tier tag + collapsing rationale + ratifying-source citation.
§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. These need Liam pre-decision at Wave 2 dispatch or later.
§13 lists items where retire intent is ratified but timing is deferred to v1.1.
§14 records source-doc supersession + the heritage table per the construction guide §4.1 three-tier taxonomy.
3. Database schema collapse (combined-PR scope)
Section titled “3. Database schema collapse (combined-PR scope)”The schema retires and renames below land in the Q-OQR1-16 combined PR (per 0.9-decision-graph.md §11.3, 10-component scope). Schema-specific shapes (column types, FK directions, satellite layout) are owned by 04-workspace-types.md; this section carries the retire/rename decisions and the ratifying citations only.
3.1 Workspace discriminator + procurement umbrella
Section titled “3.1 Workspace discriminator + procurement umbrella”| Item | Tag | Why collapsing | Citation |
|---|---|---|---|
workspaces.type text column (CHECK: bid / kb_section / intelligence) | [RATIFIED-RETIRE] | Replaced by workspaces.application_type_id FK to new application_types instance table. Q-OQR1-01 Option (c) hybrid with provenance. | 00-synthesis-v2.md §3.4 + Q-OQR1-01 |
kb_section value (within the retiring CHECK) | [RATIFIED-RETIRE] | Added in error; zero prod rows (S234 verified). Code cleanup in lib/workspace-types.ts, app/api/workspaces/route.ts, components/workspace/workspace-create-dialog.tsx, lib/mcp/tools/workspaces.ts, hooks/use-library-bulk-actions.ts. | 00-synthesis-v2.md §3.8 + Q-OQR1-S235 |
bid_workspaces satellite | [RATIFIED-RENAME] → procurement_workspaces | Per Q-OQR1-02 procurement umbrella; table not yet built, rename direction-locks pre-build. | 00-synthesis-v2.md §3.5 + Q-OQR1-02 |
application_type='bid' workspace value | [RATIFIED-RENAME] → application_type='procurement' | ”Bid” survives only as a form_type value within procurement. | 00-synthesis-v2.md §3.5 + Q-OQR1-02 |
lib/bid/bid-state-machine.ts (path) | [RATIFIED-RENAME] → lib/procurement/procurement-workflow.ts | Cascade per Q-OQR1-02 procurement umbrella. Logic unchanged. | 00-synthesis-v2.md §3.5 + Q-OQR1-05 |
BID_STATES const tuple name (in types/bid.ts) | [RATIFIED-RENAME] → PROCUREMENT_WORKFLOW_STATES | Cascade per Q-OQR1-02. State set unchanged (10 values verbatim). | 00-synthesis-v2.md §3.5 + Q-OQR1-02 |
BidState TS type + per-bid-state-machine literals | [RATIFIED-RENAME] | Cascade per Q-OQR1-05 lib/bid/* → lib/procurement/*. | Q-OQR1-05 |
project_id column (on bid_questions, templates) | [RATIFIED-RENAME] → workspace_id | Per Q5.5 + combined-PR component 5; 2 DB columns + 44-file code sweep. | 0.9-decision-graph.md §11.3 component 5 |
3.2 Form-template + question-match renames
Section titled “3.2 Form-template + question-match renames”| Item | Tag | Why collapsing | Citation |
|---|---|---|---|
templates table name | [RATIFIED-RENAME] → form_templates | Per Q-OQR1-02 procurement umbrella — form_type discriminator + Theme A generalisation. NOT renamed to bid_templates (the S233 directional was superseded). | 00-synthesis-v2.md §3.5 + Q-OQR1-02 |
template_fields table name | [RATIFIED-RENAME] → form_template_fields | Cascade per Q-OQR1-02. | Q-OQR1-02 |
template_requirements table name | [RATIFIED-RENAME] → form_template_requirements | Cascade per Q-OQR1-02. Provenance enum added — 96 prod SSQ + Charnwood rows seeded as core-provenance per Q-OQR1-11. | 00-synthesis-v2.md §3.7 + Q-OQR1-02 + Q-OQR1-11 |
bid_question_matches planned table name | [RATIFIED-RENAME] → question_matches (with question_kind discriminator aligned with form_types) | Per Q-OQR1-02 procurement umbrella. Table never built; rename direction-locks pre-build. | 00-synthesis-v2.md §3.5 + Q-OQR1-02 |
3.3 Source-documents slim + inline-array migrations
Section titled “3.3 Source-documents slim + inline-array migrations”| Item | Tag | Why collapsing | Citation |
|---|---|---|---|
source_documents.version column | [RATIFIED-RETIRE] | Cocoindex ops-DB ledger tracks every flow run with code-hash + content-hash — stronger provenance than this column. B2 Option α slim-and-keep. | 00-synthesis-v2.md §2.1 B2 + 10-feedback-investigation-findings/01-q19-q24-source-documents-audit-trail.md |
source_documents.parent_id column | [RATIFIED-RETIRE] | Re-upload chain becomes implicit in cocoindex source-key history. Option α slim. | 00-synthesis-v2.md §2.1 B2 + finding 01 |
source_documents.original_filename column | [RATIFIED-RETIRE] | Built-not-wired; only existed to patch filename-keying issue. Cocoindex source-key is not filename-keyed. | 00-synthesis-v2.md §2.1 B2 + finding 01 |
source_document_diffs table (whole) | [RATIFIED-RETIRE] | Cocoindex ops-DB ledger gives per-row “what input + code-hash → what output” — stronger provenance. | 00-synthesis-v2.md §2.1 B2 + finding 01 |
detect_reupload() Postgres RPC | [RATIFIED-RETIRE] | Cocoindex source-key + content-hash UPSERT is engine-native. S233 GitNexus pass: target not in index (SQL function); manual grep verified zero TS/Python callers. | finding 01 Rec 2 + Q2.5 RESOLVED |
bid_questions.matched_content_ids UUID[] inline cache | [RATIFIED-RETIRE] | Replaced by question_matches table (per-match score + match_method + recompute_run_id + rank). Inline array carries no score, no method, no history. Drop after read-path migration. | 10-feedback-investigation-findings/02-q29-q32-q111-q112-qa-write-back.md Rec 4 + Q1.12 |
bid_responses.source_content_ids UUID[] inline citation array | [RATIFIED-RETIRE] | Migrates to rows in the renamed citations table (polymorphic citing_entity enum per N8). Inline array has no chunk-level granularity. | 00-synthesis-v2.md §2.3 N8 + finding 02 Rec 3 |
content_citations (table name) | [RATIFIED-RENAME] → citations | Broader scope per N8 polymorphic enum (bid_response, sales_proposal_response, competitor_research_finding, training_unit, mcp_search_response). | 00-synthesis-v2.md §2.3 N8 + finding 02 |
3.4 Workspace metadata promotion (JSONB → typed satellite columns)
Section titled “3.4 Workspace metadata promotion (JSONB → typed satellite columns)”The 6 columns below promote from workspaces.domain_metadata JSONB to typed columns on the procurement_workspaces satellite per the Q-OQR1-S235 Option B + the typed-columns-over-JSONB platform standard. The remaining 10 BidMetadataSchema fields stay JSONB per the cutline in OQ-Q38-E.
| Item | Tag | Why collapsing | Citation |
|---|---|---|---|
workspaces.domain_metadata.buyer (when application_type=‘procurement’) | [RATIFIED-RETIRE] (from JSONB) → typed column on procurement_workspaces | Queryable / RLS-relevant per Shape B pattern. | 00-synthesis-v2.md §2.2 I1 + §3.9 + finding 05 |
workspaces.domain_metadata.deadline | [RATIFIED-RETIRE] (from JSONB) → typed column on procurement_workspaces | Phase 4 bid-deadline gap scoring needs typed column. | finding 05 §5.3 |
workspaces.domain_metadata.submission_date | [RATIFIED-RETIRE] (from JSONB) → typed column on procurement_workspaces | Same. | finding 05 §5.3 |
workspaces.domain_metadata.outcome | [RATIFIED-RETIRE] (from JSONB) → first-class state column on procurement_workspaces | Per Shape B. | finding 05 §5.3 |
workspaces.domain_metadata.outcome_recorded_at | [RATIFIED-RETIRE] (from JSONB) → typed column on procurement_workspaces | Same. | finding 05 §5.3 |
workspaces.domain_metadata.outcome_recorded_by | [RATIFIED-RETIRE] (from JSONB) → typed column on procurement_workspaces | Same. | finding 05 §5.3 |
3.5 Hybrid-vocab provenance retrofit
Section titled “3.5 Hybrid-vocab provenance retrofit”| Item | Tag | Why collapsing | Citation |
|---|---|---|---|
entity_aliases.category enum | [RATIFIED-RENAME] → provenance | Per Q-OQR1-11 — provenance is the canonical name across hybrid Layer-1 CVs. taxonomy_domains.provenance is the precedent. Provenance enum extends to application_types, form_types, form_template_requirements, guides, coverage_targets. | 00-synthesis-v2.md §3.7 + Q-OQR1-11 |
4. Q&A schema collapse (corpus-level)
Section titled “4. Q&A schema collapse (corpus-level)”The q_a_pairs collapse below is the central restructuring of S235 WP-ONTO-R1 §4 — q_a_pairs are corpus-level, not workspace-partitioned. Empirical anchor: 0 of 395 prod content_type='q_a_pair' rows are workspace-assigned today (per 00-synthesis-v2.md §3.6). Detailed schema lands in 04-workspace-types.md and 05-qa-flow.md; the retires below are the items the S235 ratification removed from the planned shape.
| Item | Tag | Why collapsing | Citation |
|---|---|---|---|
content_items.content_type='q_a_pair' (CHECK constraint value + 395 prod rows) | [LOCKSTEP-WITH-MIGRATION] | Q&A migrates to S16 §6 two-tier (q_a_pairs + q_a_extractions). Migration 5 (post-cutover): drop value from CHECK; rows move to q_a_pairs. | 0.9-collapse-candidates.md §2.5 + Q1.3 + S16 §6 |
content_items.answer_standard column | [RATIFIED-RETIRE] | Migrates to q_a_pairs.answer_standard per S16 §6 two-tier. | S16 §6 + Q1.3 RESOLVED |
content_items.answer_advanced column | [RATIFIED-RETIRE] | Migrates to q_a_pairs.answer_advanced per S16 §6 two-tier. | S16 §6 + Q1.3 RESOLVED |
q_a_pairs.workspace_id UUID NOT NULL (proposed per 0.9-intended-architecture.md §4.3 N:1 sketch) | [RATIFIED-DO-NOT-BUILD] | q_a_pairs are corpus-level. NO direct workspace FK. Replaced by: source_workspace_id UUID NULL (provenance audit only); workspace relevance via scope_tag overlap. Empirical: 0/395 prod rows workspace-assigned today. | 00-synthesis-v2.md §3.6 + Q-OQR1-06 + Q-OQR1-07 |
q_a_pair_workspaces M:N junction (proposed in prior onto-doc §4.4) | [RATIFIED-DO-NOT-BUILD] | Rejected by Liam at S235 — “peer class therefore needs junction” rationale is a non-sequitur. Junction is heavier than scope_tag without matching empirical state. | WP-ONTO-R1 §4 |
idx_q_a_pairs_workspace (workspace-partition index) | [RATIFIED-DO-NOT-BUILD] | Replaced by idx_q_a_pairs_scope_tag + idx_q_a_pairs_anti_scope_tag (GIN) per 0.9-intended-architecture.md §4.3 S235 rewrite. | Q-OQR1-06 |
Truly IMS-legacy columns on content_items (3 columns identified per the IMS audit §1) retire as [RATIFIED-RETIRE] per Q1.1 — no semantic role under cocoindex; replaced by typed metadata. Specific column list lives in the IMS audit (referenced in 0.9-collapse-candidates.md §2.5 row 1 pre-supersession).
5. Pipeline ingestion retires (cocoindex absorption)
Section titled “5. Pipeline ingestion retires (cocoindex absorption)”The S229 Stream 1 reassessment plus the S234 cocoindex deep-dive plus S235 Liam ratifications collapse the bulk of the Python/TS ingestion code. The retires below absorb into the cocoindex declarative flow. Detailed flow-stage architecture lives in 02-data-flow.md + 03-tech-stack.md.
5.1 Ingestion pathways
Section titled “5.1 Ingestion pathways”| Item | Tag | Why collapsing | Citation |
|---|---|---|---|
| P1 Python URL ingest | [RATIFIED-RETIRE] | Cocoindex flow with pullmd @coco.fn for URL shape. | 0.9-decision-graph.md §11.2 COCO.1 + CX.3 RESOLVED |
P3 Python markdown ingest (scripts/import_bid_library.py + scripts/ingest_markdown.py) | [RATIFIED-RETIRE] | Cocoindex flow with markdown shape adapter. GitNexus: scripts/import_bid_library.py:main is sole caller of dedup_across_files_by_title — both retire together. | 0.9-decision-graph.md §11.2 COCO.1 + CX.18 RESOLVED |
P4 TS URL ingest (lib/extraction/) | [RATIFIED-RETIRE] | pullmd Tier 2-3 cascade + cocoindex flow. | CX.6 RESOLVED |
P11 staged markdown ingest (scripts/ingest_stage2_markdown.py) | [RATIFIED-RETIRE] | One-shot per wave-08 D13. Retire post-EP8 + canonical-markdown UI ship. | CX.19 RESOLVED |
| Markdown batch ingest UI | [RATIFIED-RETIRE] | Cocoindex source-binding to folder replaces manual batch UI. | 0.9-collapse-candidates.md §4 (predecessor) + S229 sub-agent B re-verify |
regenerateChunks() (built-not-wired in P6/P9) | [RATIFIED-RETIRE] → SUPERSEDED-S277 / now ID-56-owned, NOT ID-46 | regenerateChunks has 8 live non-test callers (NOT build-not-wired). The app-side chunker (lib/content/chunking.ts + lib/content/chunk-store.ts + the 8 callers + scripts/backfill-chunks.ts) RETIRED S298 — {56.11} done: cocoindex is now SOLE content_chunks writer via RecursiveSplitter (was tracked under ID-56, NOT ID-46). | CX.21 + 07-synthesis-feedback L83 + docs/specs/id-56-content-model-invariants/PLAN.md {56.11} + docs/specs/id-46-cocoindex-absorption-cleanup/RESEARCH.md §4.1 row 6 |
5.2 Pipeline helper files (absorbed into cocoindex flow)
Section titled “5.2 Pipeline helper files (absorbed into cocoindex flow)”| Item | Tag | Why collapsing | Citation |
|---|---|---|---|
scripts/kb_pipeline/ (~5,797 LOC) | [RATIFIED-RETIRE] | Replaced by declarative cocoindex flow. | 0.9-decision-graph.md §11.2 COCO.1 + cocoindex-eval §5.3 |
lib/extraction/ (~1,000 LOC) | [RATIFIED-RETIRE] | pullmd + cocoindex extractors. | CX.6 RESOLVED + cocoindex-eval §5.3 |
lib/extraction/html.ts (Readability + JSDOM) | [RATIFIED-RETIRE] | pullmd Tier 2-3 cascade. | CX.6 RESOLVED |
lib/intelligence/content-extractor.ts (Tier 2 / 2.5 / 3) | [RATIFIED-RETIRE] | pullmd. | CX.6 RESOLVED |
lib/procurement-library-ingest/extract-qa-pairs.ts (Pattern A/B parser) — PATH CORRECTED-S277 (was lib/bid-library-ingest/...; dir renamed at commit 2105404f S248 bid→procurement) | [RATIFIED-RETIRE] (timing: post-Phew-migration) | Q3.5 RESOLVED-MIGRATION-HELPER-ONLY confirmed S235. Cocoindex Path-A @coco.fn (the 1.x equivalent of the 0.3.x ExtractByLlm) with typed Pydantic output_type subsumes per B1 RESOLVED-S234. GitNexus/grep re-verified S277: extractQaPairs has 0 production callers (in-dir docx-to-markdown.ts + 2 tests only). Whole lib/procurement-library-ingest/ dir (4 files) is migration-helper/CLI-only. | 00-synthesis-v2.md §2.1 B1 + Q3.5 + finding 04 §3.5 + docs/specs/id-46-cocoindex-absorption-cleanup/RESEARCH.md §4.1 row 11 |
scripts/dedup.py::dedup_across_files_by_title | [RATIFIED-RETIRE] | S10 cross-record dedup substrate. GitNexus: 1 direct caller (scripts/import_bid_library.py:main, itself retiring) + 2 transitive. Replacement must preserve content-hash soft-block behaviour per cross-system-dedup-spec. | 0.9-spike-S10-dedup-substrate.md + GitNexus pass |
lib/dedup-normalise.ts + scripts/dedup_normalise.py | [RATIFIED-RETIRE] | Shares fate with dedup_across_files_by_title per S10 substrate decision. | S10 + V2 mempalace finding |
| Custom batch-reclassify scripts | [RATIFIED-RETIRE] | Cocoindex code-hash memoisation gives incremental re-classification for free. | cocoindex-eval §5.10 |
Custom URL-freshness governance (content_items.freshness_checked_at) — LABEL CORRECTED-S277 (the writer is app/api/freshness/calculate/route.ts, a UI/API route called from app/api/procurement/route.ts, NOT a cron) | [RATIFIED-RETIRE] → CONDITIONAL / SEP-MIGRATION | Cocoindex source-binding handles URL ingest-latency freshness natively. KH governance freshness (fresh/aging/stale/expired — content_items.freshness/previous_freshness) is the user-facing concept and does NOT retire (ID-56 C-6). Only the freshness_checked_at substrate + calculate-route is conditional; this is a separate schema/governance concern, NOT core ID-46 pipeline-code retirement. | 00-synthesis-v2.md §3.10 + COCO.8 + Prereq 2 §1.1 + docs/specs/id-46-cocoindex-absorption-cleanup/RESEARCH.md §4.1 row 15 + §6.2 |
5.3 Items absorbed by cocoindex flow runtime (S229 Stream 1)
Section titled “5.3 Items absorbed by cocoindex flow runtime (S229 Stream 1)”Seven of thirteen S229 Stream 1 items absorb into the cocoindex flow runtime — they retire as Stream 1 line-items because the concerns dissolve into the new architecture.
| Stream 1 item | Tag | Why collapsing | Citation |
|---|---|---|---|
Item 2 — source_documents parity wiring | [RATIFIED-RETIRE] (absorbed) | Cocoindex source-key model dissolves the question. | cocoindex-eval §6.2 |
| Item 4 — P7 silent-fail try/catch | [RATIFIED-RETIRE] (absorbed) | Cocoindex failure-isolation replaces try/catch. | cocoindex-eval §6.2 |
| Item 8 — OVERSIGHT helpers consolidation | [RATIFIED-RETIRE] (absorbed) | Folded into cocoindex flow stages. | cocoindex-eval §6.2 |
| Item 9 — RSS chunks regen wiring | [RATIFIED-RETIRE] (absorbed) | Chunks regenerate automatically when chunking logic changes. | cocoindex-eval §6.2 |
| Item 10 — Batch chunks regen wiring | [RATIFIED-RETIRE] (absorbed) | Same as Item 9. | cocoindex-eval §6.2 |
Item 12 — TS-side ingestion_quality_log | [RATIFIED-RETIRE] (absorbed) | Replaced by custom emitter. | cocoindex-eval §6.2 |
Stream 1 items 1, 3, 5, 6, 7, 11, 13 are NOT retiring — they carry forward as schema-side fixes or non-cocoindex concerns.
5.4 Planning artefacts confirmed never-built
Section titled “5.4 Planning artefacts confirmed never-built”| Item | Tag | Why collapsing | Citation |
|---|---|---|---|
pipeline_failures table (planned per Finding 01) | [RATIFIED-DO-NOT-BUILD] | Cocoindex retry / back-off / DLQ subsumes per Prereq 2 §1.2. KH’s recordPipelineRun() handles rollup. | 00-synthesis-v2.md §3.10 + COCO.7 |
| Q4.12 cost-tracking pattern (skill-seekers-style dashboards) | [RATIFIED-RETIRE] | Cocoindex memoisation + per-stage metrics supersede. | 00-synthesis-v2.md §3.11 + COCO.8 |
6. UI / route retires + renames
Section titled “6. UI / route retires + renames”The user-facing label “Change Reports” is canonical; internal code still uses “digest” per the CLAUDE.md Gotcha — the rename below closes that gap pre-launch. The project_id → workspace_id rename is in the combined PR per 0.9-decision-graph.md §11.3 component 5.
| Item | Tag | Why collapsing | Citation |
|---|---|---|---|
/api/digest/** routes | [RATIFIED-RENAME] → /api/change-reports/** | Per Liam S231 user-facing label rename. Combined-PR with project_id → workspace_id rename per Q5.5. | 0.9-decision-graph.md §11.3 component 7 + Q5.4 |
/app/digest/page.tsx | [RATIFIED-RENAME] → /app/change-reports/page.tsx | Same. | Q5.3 + 0.9-decision-graph.md §11.3 component 7 |
digests table name | [RATIFIED-RENAME] → change_reports | Per combined-PR component 7 + Q5.x. Cron + UI text updates included in component scope. | 0.9-decision-graph.md §11.3 component 7 |
app/api/procurement/[id]/templates/[templateId]/analyse/route.ts (blank-form-structure write path) | [RATIFIED-RETIRE] | Per OQ-52-WORKSPACE_WRITE Option A (S273) — folder→workspace convention, FULLY pipeline-owned write of form_templates + form_template_fields. Migrates blank-form-structure write ownership off the app-side route to the Python pipeline (scripts/cocoindex_pipeline/flow.py extract_form_structure @coco.fn + two new mount_table_target mounts). UI caller at app/procurement/[id]/templates/page.tsx:145 (handleAnalyse) is rewired or hidden; template_analyse ProcessingJobType union value at lib/queue/envelope.ts:44 drops; comment reference at lib/validation/schemas.ts:615 updates. Retirement implementation tracked as Subtask {52.15} under ID-52 — RETIRED S298 ({52.15} done): blank-form-structure write ownership now fully pipeline-side. | docs/specs/id-52-form-extraction/PRODUCT.md R3 + Inv-6 + docs/specs/id-52-form-extraction/TECH.md §1.2 / §4 Follow-ups + docs/research/s273-canonical-pipeline-finals/id52-final.yaml ratification line “Migrates ownership off app-side analyse/route.ts” |
template_analyse value in ProcessingJobType union (lib/queue/envelope.ts:44) | [RATIFIED-RETIRE] | Cascade per the analyse/route.ts retirement above — the queue job-type only exists to enqueue the analyse worker; with the pipeline owning the write, no enqueue happens. Retirement implementation tracked as Subtask {52.15} under ID-52. | Same citation chain as the analyse/route.ts row above |
UI surfaces explicitly preserved (NOT retiring): bulk operations, content CRUD, soft delete, source-doc explorer (resolved per CX.33 RESOLVED-DIRECTION-S233 — compose IN-STACK, not retire), coverage feature (Q3.10 RESOLVED-EXTEND-NOT-REBUILD-S233 — extend with 4th gap source).
7. Dependencies retires
Section titled “7. Dependencies retires”The dependency retires below land after the cocoindex flow + pullmd retention is wired. [S299] Cloud Run torn down (S298) — the pipeline now runs on IONOS/Coolify; the live PDF path is pdfplumber (ID-52 deterministic extractor) + trafilatura (HTML), not Docling-on-a-Cloud-Run-sidecar (the Docling-sidecar framing in the rows/notes below is historical). Detailed reconciliation of write-paths lives in 02-data-flow.md + 03-tech-stack.md.
| Dependency | Tag | Why collapsing | Citation |
|---|---|---|---|
@mozilla/readability | [RATIFIED-RETIRE] | pullmd Tier 2-3 cascade replaces HTML extraction. | 0.9-decision-graph.md §11.2 CX.6 |
JSDOM | [RATIFIED-RETIRE] ⚠ verify | pullmd. [S299] May be RETAINED by the ontology path — confirm before dropping (ID-42 {42.11–13}). | CX.6 RESOLVED |
unpdf | [RATIFIED-RETIRE] | pdfplumber (ID-52), Cloud Run torn down S298 — unpdf still retires, but as a duplicate of the pdfplumber path, not Docling-on-Cloud-Run. | 00-synthesis-v2.md §3.2 + COCO.2 |
@mendable/firecrawl-js | [RATIFIED-RETIRE] | pullmd retention for HTML per COCO.5 makes Firecrawl redundant; drop after wire-up. feed_articles.extraction_method='firecrawl' retires lockstep per §11.2 below. | 0.9-decision-graph.md §11.2 CX.6 + S229 S4 |
Note: the “zero new deps for v1” claim in Finding 06 is retracted per S235 — Docling 1.8 GB requires Cloud Run sidecar; the claim was based on a misread of the Vercel bundle constraint. Cloud Run sidecar architecture is confirmed (KH already runs Cloud Run for the Python pipeline per CLAUDE.md). See 00-synthesis-v2.md §3.1 for the architecture confirmation. [S299] OUTDATED: Docling-on-Cloud-Run was not the adopted path — Cloud Run is torn down (S298) and the pipeline runs on IONOS/Coolify with pdfplumber (PDF) + trafilatura (HTML) extractors; see §11.3.
8. Conditional / pending sub-doc bindings
Section titled “8. Conditional / pending sub-doc bindings”Items below have retire-direction agreed but the disposition binds at a downstream sub-doc. The drafter of the downstream sub-doc resolves; this section flags the dependency.
| Item | Tag | Binding sub-doc | Citation |
|---|---|---|---|
scripts/backfill-source-documents.ts | [CONDITIONAL-RETIRE] (Option β only; Option α retains as one-shot tool) | 02-data-flow.md source-document-handling section | 00-synthesis-v2.md §2.1 B2 + finding 01 Rec 7 |
app/api/upload/route.ts (P7 file-upload route) | [CONDITIONAL-RETIRE] | 02-data-flow.md | Cocoindex source-binding to folder makes “upload” become file-write to folder. Route may retain for non-folder workflows or fully retire. 0.9-collapse-candidates.md §3.1 P7 + finding 01 (predecessor) |
| Roadmap §3 classification-related items | [CONDITIONAL-RETIRE] (LIKELY-ABSORB) | 02-data-flow.md | Cocoindex flow + graphify semantic-extractor cover most; per-item verification at 02-data-flow.md. CX.21 |
| Roadmap §3.7 AI telemetry items | [CONDITIONAL-RETIRE] (LIKELY-ABSORB) | 02-data-flow.md | Cocoindex ops-DB ledger + custom emitters cover; per-item verification at 02-data-flow.md. CX.21 |
| Roadmap §11 context graph phase 5 | [CONDITIONAL-RETIRE] (LIKELY-ABSORB) | 02-data-flow.md (Knowledge Map substrate); 08-new-features.md (surface) | Cocoindex Neo4j / FalkorDB / SurrealDB target gives the primitive natively. cocoindex-eval §5.8 + CX.21 |
Roadmap §5 document control & lifecycle is NOT collapsing — publication-lifecycle work shipped S199-S202 carries forward.
9. Docs / specs archiving
Section titled “9. Docs / specs archiving”| Item | Tag | Why collapsing | Citation |
|---|---|---|---|
SPEC-SEQUENCE.md | [RATIFIED-RETIRE] (archive) | ~98% shipped per S209 review; closed-wave roadmap masquerading as active sequencing. | S209 review + 0.9-collapse-candidates.md §8 |
docs/ontology/README.md “GitBook auto-update plan” section | [RATIFIED-RETIRE] (already replaced) | Per S237 — replaced by “Docs-site auto-update plan (Astro + Starlight)” section. Liam ratified Astro+Starlight as the docs-site framework. | 00-synthesis-v2.md §5.4 (S237 row) + commit 099eb5f6 |
docs/plans/phase-0-investigation/0.9-intended-architecture.md | [RATIFIED-RETIRE] (archive to .planning/.archive/.specs/ after Wave 4 closes) | Source doc OUTDATED per Liam S237. Central frame of §1.2/§4/§5/§10/§13 at variance with S233-S237 ratifications per 00-synthesis-v2.md §2 + §3. Superseded by the 9-sub-doc split (architecture/01-*.md … 09-*.md). | 0.9-decision-graph.md §11.4.2 STILL-OPEN-SCHEDULED-S238+ row |
docs/plans/phase-0-investigation/0.9-collapse-candidates.md (the predecessor) | [RATIFIED-RETIRE] (archive to .planning/.archive/.specs/ after this sub-doc’s verifier passes) | Predecessor of this sub-doc; superseded by canonical record below per CLAUDE.md “Historical planning” convention. | This sub-doc + Wave 1 verifier verdict |
Note on content-lifecycle-spec.md and other pre-investigation specs: these are REOPEN-NOT-RETIRE per S232 Liam framing — treated as context for Phase B refresh, not binding. NOT in this collapse list.
EP8 spec partial obsolescence (60% shipped via S194/S198/S205-S207) is [CONDITIONAL-RETIRE] per OQ7 — needs partial rewrite, not full retire. See §12 below for STILL-OPEN flag.
10. Items explicitly NOT collapsing (carry-forward reminder)
Section titled “10. Items explicitly NOT collapsing (carry-forward reminder)”For audit-trail clarity — items considered for collapse in pre-S233 framings (or surfaced in subsequent feedback) but resolved as NOT collapsing. Detail lives in 0.9-decision-graph.md (RESOLVED rows); listed here as the canonical guardrail.
- Bulk operations (S231 feedback — NOT COLLAPSING).
- Content CRUD + soft delete (S231 — NOT COLLAPSING).
- MCP-tool surface (S231 NOT-YET-APPROVED — refine/remove/extend pass pending per Theme F STILL-OPEN; NOT a wholesale retire).
- Source-document explorer (CX.33 RESOLVED-DIRECTION-S233 — compose IN-STACK, not retire).
- Coverage feature (Q3.10 RESOLVED-EXTEND-NOT-REBUILD-S233 — extend with 4th gap source).
bid_response_history.source_content_ids[](1B-4 OQ-Q38-C — keep inline on versioned snapshot rows; only the livebid_responsesrow’s citations port to the renamedcitationstable).- Content body column
content_items.content(Q2.3 PENDING-ARCH — v1 stay; v2 evaluate). content_historytrigger (Q2.4 RESOLVED-DIRECTION-S233 — KEEP + extend with op_id per N7).pipeline_runs(Q2.4 — KH-side rollup of cocoindex runs; insulates UI).- Catalogue seed scripts (
scripts/catalogue-standard-sq.ts,scripts/catalogue-charnwood-itt.ts) — retire only AFTER AI-cataloguer skill replaces them (per 1B-3 Rec 9); not yet. - The 10 BidMetadataSchema fields not in §3.4 above (
reference_number,estimated_value,tender_source,tender_document_ids[],outcome_notes,notes,statusmirrored toworkspaces.statuscolumn) stay in JSONB per OQ-Q38-E cutline. - pullmd as the HTML extraction surface (Playwright sidecar + Cloudflare short-circuit + Reddit comment-trees + share-id identity contract).
[NOT-CONSOLIDATING]per00-synthesis-v2.md§3.3 + COCO.5.
11. CV-driven retires (S237 lockstep pattern)
Section titled “11. CV-driven retires (S237 lockstep pattern)”S237 Liam pre-decisions (commit 099eb5f6) added 4 retire entries that follow the lockstep-with-migration pattern: the WP6 markdown CV (docs/ontology/*.md) retains the value in baseline_values until the Q-OQR1-16 combined-PR migration drops the corresponding DB CHECK value — keeping the CV in lockstep with the live schema.
11.1 CV 04 content-type — capability enum value
Section titled “11.1 CV 04 content-type — capability enum value”| Item | Tag | Why collapsing | Citation |
|---|---|---|---|
content_items.content_type='capability' (CHECK constraint value + 0 prod rows) | [LOCKSTEP-WITH-MIGRATION] | Liam ratified S237: drop capability from the enum. 0 prod rows; reduces enum 15 → 14; methodology absorbs the remaining concept space. Migration lands in Q-OQR1-16 combined PR. CV 04 frontmatter baseline_values retains capability until the migration drops the CHECK value. | 00-synthesis-v2.md §5.4 + 0.9-decision-graph.md §11.4.5 + commit 099eb5f6 |
11.2 CV 16 extraction-method — firecrawl prune-on-migration
Section titled “11.2 CV 16 extraction-method — firecrawl prune-on-migration”| Item | Tag | Why collapsing | Citation |
|---|---|---|---|
feed_articles.extraction_method='firecrawl' (CHECK constraint value + 27 prod rows) | [LOCKSTEP-WITH-MIGRATION] | firecrawl pruned from CV 16 baseline_values when the CHECK migration drops it from the DB enum — not before. The §7.5 “drop Firecrawl” decision landed S236; the 27 prod articles will be migrated or replaced (out of WP6 scope for the migration itself). | 00-synthesis-v2.md §5.4 + 0.9-decision-graph.md §11.4.5 + commit 099eb5f6 |
11.3 Python extractor write-paths — trafilatura + pdfplumber
Section titled “11.3 Python extractor write-paths — trafilatura + pdfplumber”| Item | Tag | Why collapsing | Citation |
|---|---|---|---|
scripts/kb_pipeline/extract.py trafilatura write path | [RATIFIED-RETIRE] (conditional on Docling adoption) | Docling primary for PDF/DOCX/XLSX per §3.2 of 00-synthesis-v2.md; trafilatura write path retires on Docling adoption. Detailed write-path reconciliation belongs in 02-data-flow.md + 03-tech-stack.md. CV 16 records direction so live divergence is documented. | 00-synthesis-v2.md §5.4 + commit 099eb5f6 |
scripts/kb_pipeline/extract.py pdfplumber write path | [RATIFIED-RETIRE] (conditional on Docling adoption) | Same as trafilatura row above. Docling-backed pdf_to_markdown replaces. | Same |
11.4 CV 13 ingest-source — bid_library parameter literal (rename, recorded here for cross-reference)
Section titled “11.4 CV 13 ingest-source — bid_library parameter literal (rename, recorded here for cross-reference)”This is a RENAME, not a retire. Recorded for clarity since INV-1 surfaced this as a confusion vector.
| Item | Tag | Why renaming | Citation |
|---|---|---|---|
lib/layer-inference.ts:21 + scripts/kb_pipeline/layer_inference.py bid_library parameter literal | [RATIFIED-RENAME] → bid_library_extraction | Rename parameter literal to make inference-function-internal nature explicit and remove visual collision with the (non-existent) DB value. scripts/import_bid_library.py:288 writes 'qa_import' to content_items.ingest_source — bid_library was NEVER a DB value. Cleanup PR lands separately (out of WP6 scope this session). | 00-synthesis-v2.md §5.4 + 0.9-decision-graph.md §11.4.5 + commit 099eb5f6 |
12. STILL-OPEN ratifications
Section titled “12. STILL-OPEN ratifications”Items below need Liam pre-decision. Per construction guide §5 no-fabrication rule — the predecessor 0.9-collapse-candidates.md tier marker did not cleanly resolve via the ratifying sources, and this sub-doc surfaces the gap rather than promoting. Each row states what is checked + what is not found + the suggested resolution path.
12.1 Diff UI retire scope — RESOLVED-S243
Section titled “12.1 Diff UI retire scope — RESOLVED-S243”Item: app/api/source-documents/[id]/diff/*, app/documents/[id]/diff/page.tsx, components/source-document/source-document-diff-review.tsx, components/source-document/diff-highlighted-text.tsx, lib/source-documents/document-diff.ts, lib/source-documents/source-document-impact.ts.
RESOLVED-S243 (Item 5 of pre-s244-project-feedback.md): RETAINED for v1. Diff-UI surface re-pointed from source_document_diffs substrate to markdown sidecar revision comparison. Was DEFERRED-v1.1 per S240 ratification; that ratification reversed S243. The S240 deferral was data-flow-motivated (pre-Docling diff-UI worked on binary diffs; post-Docling produces markdown sidecars; meaningful diff = markdown sidecar revision comparison) — Liam ratification at S243 confirms the sidecar-based diff IS the right v1 architecture and the re-point work lands in v1.
Re-point work tracked in: PLAN.md §4.9 T9 (Diff-UI sidecar re-point sub-task — folded into the per-UC write-back implementation task since UC1/UC4/UC6 produce sidecar revisions that the Diff-UI consumes).
Predecessor framing (preserved for audit): 0.9-collapse-candidates.md §2.1 tagged PROPOSED-S233 pending Liam guidance on “creation / editing / deletion NOT collapsing” + Option α/β. B2 RESOLVED-α per Q-OQR1-09; diff-UI repurpose-or-retire scope not addressed by ratifying sources at S239. S240 deferred to v1.1; S243 reversed to v1 retain-with-re-point.
12.2 P7 file-upload route disposition
Section titled “12.2 P7 file-upload route disposition”Item: app/api/upload/route.ts.
Why STILL-OPEN: Marked [CONDITIONAL-RETIRE] in §8 above pending 02-data-flow.md source-binding-to-folder vs non-folder workflow resolution. Decision binds at 02-data-flow.md. Checked 00-synthesis-v2.md §3, finding 01, and 0.9-collapse-candidates.md §3.1 — explicit binding-context resolution not in ratifying sources.
Category: Ratification needed (binds at downstream sub-doc).
Suggested resolution path: 02-data-flow.md drafter resolves per cocoindex source-binding architecture decision.
12.3 Roadmap §3 / §3.7 / §11 LIKELY-ABSORB sections
Section titled “12.3 Roadmap §3 / §3.7 / §11 LIKELY-ABSORB sections”Item: Roadmap §3 classification-related items, §3.7 AI telemetry items, §11 context graph phase 5.
Why STILL-OPEN: Marked [CONDITIONAL-RETIRE] per §8 above. Per-item verification at 02-data-flow.md is the suggested resolution path; this sub-doc retains the CONDITIONAL flag rather than silently promoting. Checked 00-synthesis-v2.md §3 + CX.21 + cocoindex-eval §5.8 — direction-of-travel established (LIKELY-ABSORB) but per-item ratification deferred to 02-data-flow.md binding.
Category: Ratification needed (per-item binding at downstream sub-doc).
Suggested resolution path: 02-data-flow.md drafter per-item verification.
12.4 EP8 partial obsolescence
Section titled “12.4 EP8 partial obsolescence”Item: EP8 spec — 60% shipped via S194/S198/S205-S207.
Why STILL-OPEN: Predecessor 0.9-collapse-candidates.md §8 tagged [CONDITIONAL-RETIRE] per OQ7 — partial rewrite needed, not full retire. Checked 00-synthesis-v2.md §3-§5, 0.9-decision-graph.md §11, and predecessor §8 — OQ7 rewrite scope not addressed in ratifying sources.
Category: Investigation needed (OQ7 rewrite scope) or product spec needed (if user-facing-behaviour-driven). Carry CONDITIONAL flag until OQ7 is resolved.
Suggested resolution path: Schedule a spike or write a PRODUCT.md for EP8-rewrite scope; until then, carry [CONDITIONAL-RETIRE] flag.
13. v1.1 deferred retires
Section titled “13. v1.1 deferred retires”Retire intent ratified; timing deferred to v1.1 work.
| Item | Tag | Why deferring | Citation |
|---|---|---|---|
private_to_workspace_id UUID NULL (workspace-private q_a_pairs) | [DEFERRED-v1.1] | Single Phew tenant for v1; no privacy distinction load-bearing. | 00-synthesis-v2.md §3.14 + Q-OQR1-08 |
Admin UI for client-managed vocabularies (extends application_types / form_types / scope_tags editing) | [DEFERRED-v1.1] | Existing settings-page pattern is the precedent; v1 ships SQL-seeded baseline rows. | 00-synthesis-v2.md §3.13 + Q-OQR1-13 |
application_types.state_machine_config jsonb shape | [DEFERRED-v1.1] | Q-OQR1-15 sub-state semantics via per-app-type override — deferred to impl. | 0.9-collapse-candidates.md §13 row 4 (predecessor) |
14. Source-doc supersession + heritage
Section titled “14. Source-doc supersession + heritage”This sub-doc replaces docs/plans/phase-0-investigation/0.9-collapse-candidates.md (357 lines, 14 sections at S237 close) per the Wave 1 dispatch of the WP4 architecture split. The predecessor had structural debt (section-numbering bug — two ## 12 sections; 12+ session-suffixed tier markers; stale PROPOSED-S233 tags on items since ratified) precluding a thin-pointer split. The S232 Liam reframe direction (“list ONLY items collapsing, no duplication”) is realised here by carrying the six canonical tags + per-item citation, dropping doc-evolution scaffolding.
Predecessor archives to .planning/.archive/.specs/0.9-collapse-candidates.md after the Wave 1 verifier passes per CLAUDE.md “Historical planning” convention — same convention applied to 0.9-intended-architecture.md after Wave 4 closes.
The wider 9-sub-doc split + the audit trail of 10 source-doc claims now superseded per docs/specs/core-docs-pathway-assessment/INV-architecture-split-readiness.md §2.
14.1 Heritage docs feeding this sub-doc
Section titled “14.1 Heritage docs feeding this sub-doc”Per construction guide §4.1 — three-tier status taxonomy ([CURRENT-CANONICAL] / [PARTIALLY-SUPERSEDED] / [FULLY-SUPERSEDED]).
| Doc | Date | Status | Useful for |
|---|---|---|---|
docs/plans/phase-0-investigation/0.9-collapse-candidates.md | 14/05/2026 | [FULLY-SUPERSEDED] (archives post-verifier per §14 above) | Audit trail of the S233 / S235 / S237 incremental ratification cascade per row; pre-supersession session-suffixed tier markers preserved for diff against the consolidated taxonomy in §1.1. |
docs/plans/phase-0-investigation/0.9-decision-graph.md §11 | 14/05/2026 (S237 close) | [CURRENT-CANONICAL] for ratification register | Consolidated ONT / COCO / combined-PR scope / N7-N11 / S237 CV resolution rows; primary citation source for tier-tag assignment in this sub-doc. |
docs/plans/phase-0-investigation/10-feedback-investigation-findings/00-synthesis-v2.md §2 + §3 + §5 | 14/05/2026 (S237 close-out) | [CURRENT-CANONICAL] for central register | Maps v1 B/I/N items to post-S234/S235/S236/S237 status; lists new items surfaced by prereqs; S237 CV resolutions in §5.4. Primary cross-citation source. |
docs/plans/phase-0-investigation/10-feedback-investigation-findings/01-q19-q24-source-documents-audit-trail.md (finding 01 / 1B-1) | S232 + S233 refresh | [CURRENT-CANONICAL] for source_documents-area retire decisions | Source for §3.3 source_documents column retires + diff-UI repurpose-or-retire framing (still open per §12.1). |
docs/plans/phase-0-investigation/10-feedback-investigation-findings/02-q29-q32-q111-q112-qa-write-back.md (finding 02 / 1B-2) | S232 + S233 refresh | [CURRENT-CANONICAL] for Q&A write-back retires | Source for §3.3 bid_questions.matched_content_ids + bid_responses.source_content_ids retires + content_citations → citations rename. |
docs/plans/phase-0-investigation/10-feedback-investigation-findings/03-q113-q55-q311-q45-workspace-types.md (finding 03 / 1B-5) | S232 + S233 refresh | [CURRENT-CANONICAL] for workspace-type satellite precedent | Source for §3.4 JSONB → typed-columns promotion via Shape B pattern. |
docs/plans/phase-0-investigation/10-feedback-investigation-findings/04-q35-q310-historical-extraction-coverage.md (finding 04 / 1B-3 S233) | S233 refresh | [CURRENT-CANONICAL] for Pattern A/B parser retire | Source for §5.2 lib/bid-library-ingest/extract-qa-pairs.ts retire post-Phew-migration. |
docs/plans/phase-0-investigation/10-feedback-investigation-findings/05-q38-bid-response-feedback-loop.md (finding 05 / 1B-4 S233) | S233 refresh | [CURRENT-CANONICAL] for BidMetadataSchema JSONB cutline | Source for §3.4 promote-vs-stay cutline + §10 bid_response_history.source_content_ids[] carry-forward. |
docs/plans/phase-0-investigation/10-feedback-investigation-findings/06-cx33-source-doc-explorer.md (finding 06 / 1B-C S233) | S233 refresh | [CURRENT-CANONICAL] for CX.33 compose-not-retire | Source for §10 “source-document explorer NOT collapsing” carry-forward (compose IN-STACK per CX.33). |
docs/specs/core-docs-pathway-assessment/INV-architecture-split-readiness.md §2 | 14/05/2026 (S238 close) | [CURRENT-CANONICAL] for source-doc supersession trail | The 10 source-doc claims now superseded across 0.9-intended-architecture.md; this sub-doc’s predecessor 0.9-collapse-candidates.md archives in parallel post-verifier. |
End of sub-doc. Wave 1 verifier runs next per docs/specs/core-docs-pathway-assessment/07-collapse-list-sweep.md §8 brief. Wave 2 main: 04-workspace-types.md.