Problem
Project policy is "don't add backwards compatibility without asking," but a fair amount has accumulated deliberately over time and none of it has a removal date. Individually each shim is reasonable; collectively they're carry-cost (extra code paths, doc confusion, test surface). This issue is the inventory + a decision: keep indefinitely, or remove at a chosen version (e.g. next minor/major).
Inventory (as of 0.51.x)
Legacy CLI aliases
packages/cli/src/commands/seed.ts, sprout.ts — forward to volute seed create/sprout
packages/cli/src/commands/variant.ts — 4 deprecated subcommands forwarding to mind split/join/...
packages/cli/src/commands/mind.ts:76-88 — mind sleep/wake/seed/sprout legacy dispatch
packages/cli/src/commands/service.ts:92,99 — legacy aliases
Protocol/config shims
packages/daemon/src/web/middleware/auth.ts:18-30,178 — X-Volute-Session → X-Volute-Thread (warn-only, no fallback read; warns once per mind per daemon lifetime)
packages/daemon/src/lib/mind/volute-config.ts:13 — deprecated channel field still read
packages/daemon/src/lib/schema.ts:156 — null-parent legacy fallback
packages/daemon/src/lib/mind/migrate-thread-config.ts — session→thread config migration
packages/daemon/src/web/api/setup.ts:90 — legacy configure endpoint
packages/daemon/src/web/api/minds.ts — legacy upgrade and session-range paths (~:2285, ~:2983)
Startup migrations (probably keep longer — they repair on-disk state): migrateDotVoluteDir(), migrateMindState(), migrateConfigSecrets(), migrateSetupConfig()
Proposal
Tag each item with a removal milestone. Reasonable default: CLI aliases and the legacy endpoints go at the next minor after a release-notes warning; warn-only shims and on-disk migrations get one major cycle. Removing anything is a feat!:/fix!: decision per the release conventions if behavior-visible.
Problem
Project policy is "don't add backwards compatibility without asking," but a fair amount has accumulated deliberately over time and none of it has a removal date. Individually each shim is reasonable; collectively they're carry-cost (extra code paths, doc confusion, test surface). This issue is the inventory + a decision: keep indefinitely, or remove at a chosen version (e.g. next minor/major).
Inventory (as of 0.51.x)
Legacy CLI aliases
packages/cli/src/commands/seed.ts,sprout.ts— forward tovolute seed create/sproutpackages/cli/src/commands/variant.ts— 4 deprecated subcommands forwarding tomind split/join/...packages/cli/src/commands/mind.ts:76-88—mind sleep/wake/seed/sproutlegacy dispatchpackages/cli/src/commands/service.ts:92,99— legacy aliasesProtocol/config shims
packages/daemon/src/web/middleware/auth.ts:18-30,178—X-Volute-Session→X-Volute-Thread(warn-only, no fallback read; warns once per mind per daemon lifetime)packages/daemon/src/lib/mind/volute-config.ts:13— deprecatedchannelfield still readpackages/daemon/src/lib/schema.ts:156— null-parentlegacy fallbackpackages/daemon/src/lib/mind/migrate-thread-config.ts— session→thread config migrationpackages/daemon/src/web/api/setup.ts:90— legacy configure endpointpackages/daemon/src/web/api/minds.ts— legacy upgrade and session-range paths (~:2285, ~:2983)Startup migrations (probably keep longer — they repair on-disk state):
migrateDotVoluteDir(),migrateMindState(),migrateConfigSecrets(),migrateSetupConfig()Proposal
Tag each item with a removal milestone. Reasonable default: CLI aliases and the legacy endpoints go at the next minor after a release-notes warning; warn-only shims and on-disk migrations get one major cycle. Removing anything is a
feat!:/fix!:decision per the release conventions if behavior-visible.