<!-- Auto-generated by scripts/build-migration-index.ts. Do not edit by hand. -->
<!-- Regenerate with `pnpm build:migration-index`. -->

# Migration Index

Each row corresponds to one migration in `src/migrations/`. The runner applies pending migrations in this order on every boot, recording applied IDs in `data/config/_meta.json`. Migrations are idempotent in their body in addition to the journal-level guard.

| ID | App Version | Date | Affects | Summary |
|----|-------------|------|---------|---------|
| `0001_initial_unified` | 0.10.0-beta.1 | 2026-05-09 | * | Roll-up of pre-framework ad-hoc migrations: model.json/api-keys.json merge, claude-code alias, flat → profile-based, subchannel overrides → named profiles, apiKeys distribution, telegram + engine port consolidation |
| `0002_extract_credentials` | 0.10.0-beta.1 | 2026-05-09 | ai-provider-manager.json | Extract apiKey/baseUrl from profiles into top-level credentials map; profiles gain credentialSlug pointer (inline fields kept as fallback) |
| `0003_backfill_credentials` | 0.10.0-beta.1 | 2026-05-09 | ai-provider-manager.json | Backfill credentials for profiles added between 0002 and writeProfile going eager (catches DeepSeek and similar stragglers) |
| `0004_prune_internal_cron_jobs` | 0.10.0-beta.3 | 2026-05-12 | cron/jobs.json | Prune orphan __heartbeat__ / __snapshot__ entries from data/cron/jobs.json (Pump refactor leftover) |
| `0005_extract_mcp_from_connectors` | 0.10.0-beta.3 | 2026-05-12 | connectors.json, mcp.json | Move connectors.mcp → top-level mcp.json (MCP server is a ToolCenter export, not a chat-input connector) |
| `0006_retire_brain` | 0.10.0-beta.5 | 2026-05-13 | brain/commit.json, brain/frontal-lobe.md | Delete orphan data/brain/{commit.json,frontal-lobe.md} after Brain retirement (persona.md / heartbeat.md retained) |
| `0007_retire_legacy_chat` | 0.30.0-beta.1 | 2026-05-31 | connectors.json, sessions/notifications.jsonl | Strip dead telegram/mcpAsk from connectors.json (keep web) + delete orphan notifications.jsonl after legacy chat cluster removal |
