"Legacy retirement roadmap (2026)"

Legacy retirement roadmap (2026)

Purpose: This document is a navigation guard. Read it before writing new code to avoid building on pathways being retired. It is the companion to orphan-surface-inventory.md, forward-migration-charter.md, and nomenclature-migration-map.md.

Critical: do not extend these surfaces

SurfaceLocationStatusUse instead
schema_cutover.rscrates/vox-db/src/schema_cutover.rsDeleted (FTS moved to schema_extensions)Core schema fragments
Ludus cutover module (removed)(deleted)RemovedBaseline gamification fragments in schema/domains/
MemoryManager::recall() (sync)crates/vox-orchestrator/src/memory/manager.rsIncomplete — misses CodexUse recall_async()
persist_fact() (sync)SameLoses writes on crashUse recall_async() / sync_to_db()
@component fn Name() to ElementVox syntaxDeprecated — Path A (classic)Use component Name() { state ...; view: } Path C
hir.componentsHirModuleMigrationOnly; prefer hir.reactive_componentshir.to_semantic_hir().reactive_components
TURSO_URL / TURSO_AUTH_TOKENenv varsDeprecatedVOX_DB_URL / VOX_DB_TOKEN
VOX_TURSO_URL / VOX_TURSO_TOKENenv varsDeprecated (interim)VOX_DB_URL / VOX_DB_TOKEN
vox_db::codex_legacycrate moduleMigration helper onlyDo not use in new application code
vox_continuous_trainer.ps1scripts/populi/Supersededvox mens corpus + vox mens pipeline
extract_mcp_tool_registry.pyscripts/Legacy migration (requires VOX_ALLOW_LEGACY_MCP_EXTRACT=1)contracts/mcp/tool-registry.canonical.yaml
Latin ops_codex/ in store/crates/vox-db/src/store/ops_codex/Mixed naming; no new modulesEnglish domain name, file under correct domain

Retirement domains — summary

1 · DB schema cutover machinery

COMPLETED: schema_cutover.rs is fully deleted. routing_decisions was ported to baseline. The 10 irrelevant DDL shims were stripped entirely. FTS functions securely sit in schema_extensions.rs. ludus_schema_cutover.rs and legacy::apply_ludus_gamify_cutover are deleted; Ludus DDL lives in baseline fragments only.

2 · File-based memory (MEMORY.md)

MEMORY.md is the original persistence layer, predating Codex. The MemoryManager now dual-writes to both MEMORY.md (synchronous) and Codex (non-blocking spawn). This dual-write causes:

  • Silent write loss on process exit (spawn may not complete)
  • Two divergent data sources requiring manual sync
  • Synchronous blocking on every memory write

Direction: Codex memories table is the SSOT. MEMORY.md should become a diagnostic read-only export, not a write target. The db: Option<Arc<VoxDb>> field in MemoryManager should become non-Optional.

3 · Classic @component fn path

The compiler maintains two component stacks:

FormHIR fieldCodegenStatus
@component fn Name() to Element { JSX }hir.components (MigrationOnly)codegen_ts/component.rsDeprecated
component Name() { state ...; view: JSX }hir.reactive_components (SemanticCore)codegen_ts/reactive.rs + WebIRCanonical

Immediate action needed: Fix crates/vox-compiler/src/llm_prompt.rs — it shows classic @component fn syntax. LLMs reading this file learn the wrong form.

4 · HIR MigrationOnly fields (compiler-named legacy surface)

HirModule.field_ownership_map() formally classifies these fields as MigrationOnly: components, v0_components, layouts, pages, contexts, hooks, error_boundaries, loadings, not_founds, legacy_ast_nodes, lowering_migration

The SemanticHirModule projection (hir.to_semantic_hir()) excludes all migration-only fields. New compiler code should operate on SemanticHirModule where possible.

Ambiguity alert: hir.components (classic, MigrationOnly) appears before hir.reactive_components (canonical, SemanticCore) in the struct declaration. LLMs will prefer the first match unless warned.

5 · Legacy env var shim chain

TURSO_URL  ──deprecated──►  VOX_TURSO_URL  ──deprecated──►  VOX_DB_URL  (canonical)
TURSO_AUTH_TOKEN            VOX_TURSO_TOKEN                 VOX_DB_TOKEN

Known leak: crates/vox-compiler/src/codegen_rust/emit/tables/codegen.rs emits an error message mentioning TURSO_URL+TURSO_AUTH_TOKEN. This surfaces legacy names in user-generated code. Fix this string.

Retirement prerequisite: Clavis doctor must warn on deprecated vars + telemetry must confirm zero usage.

6 · Training telemetry sidecar DB (vox_training_telemetry.db)

May remain on disk from older releases beside vox.db. Current code uses VoxDb::connect_default only; legacy primary surfaces LegacySchemaChain in crates/vox-db/src/store/open.rs until migration. Remove or archive after operators complete baseline cutover.

7 · Script surface (dead / replaceable)

ScriptStatusCanonical replacement
scripts/populi/vox_continuous_trainer.ps1Deletedvox mens corpus + vox mens pipeline
scripts/mens/release_training_gate.*Deletedvox ci mens-gate
Root-level fix_docs.py, *.txt session artifactsIgnored / Deleted.gitignore or delete

Completed retirements (April 2026)

  • FTS Re-anchoring: schema_cutover.rs deleted.
  • File-based memory mutability: Gutted active write path in MemoryManager::persist_fact.
  • Classic @component fn syntax: Compiler lint and explicit AST deprecated declarations applied.
  • Stale Env Vars: Removed VOX_TURSO_* dependencies.
  • vox-scientia-social zombie crate deleted.

Partial migrations that block new work

These must be completed before new features can build correctly on top of them:

MigrationMissing pieceRisk if incomplete
Language surface SSOTcontracts/language/vox-language-surface.json generator not builtNew decorators/keywords require 6-way updates; drift guaranteed
CLI command metadata generationStream H (boilerplate roadmap) not shippedCommands added 3 times manually; drift in compliance gate
@component deprecation lintLint exists for use_* hooks but not for the classic form itselfLLMs keep generating classic forms

What is safe to extend

The following surfaces are stable and canonical — new code should live here:

SurfaceLocationNotes
Baseline schema domainscrates/vox-db/src/schema/domains/*.rsAdd new tables/columns here
HirModule.reactive_componentsCompiler HIRCanonical component vector
HirModule.agents / environmentsCompiler HIRLatest agent/env declarations
build_repo_scoped_orchestratorcrates/vox-orchestrator/src/bootstrap.rsSole factory (ADR 022)
VOX_DB_URL / VOX_DB_TOKEN / VOX_DB_PATHenv varsCanonical Codex config
vox_db::VoxDb / Codexcrates/vox-db/src/lib.rsFacade for all DB ops
vox-skillscrates/vox-skills/Skills/ARS SSOT (was vox-ars)
vox-orchestratorcrates/vox-orchestrator/Orchestrator SSOT (was large vox-dei crate)
vox-deicrates/vox-dei/HITL Doubt/Resolution logic crate
vox-constrained-gencrates/vox-constrained-gen/Grammar-constrained decoding logic