# Changelog ## 2026-04-21 ### 2026-04-21 21h - Config Schema v2 Introduced - Refactored configuration to schema version `2` with named AI providers and role-based model chains. - Added support for per-role primary and fallback targets for embeddings and metadata. - Added optional background role overrides for backfill and metadata retry workers. ### 2026-04-21 21h - Automatic v1 -> v2 Migration - Added config migration framework with explicit schema versioning. - Implemented `v1 -> v2` migration to transform legacy provider blocks into named providers + role chains. - Loader now auto-migrates older config files, rewrites migrated YAML, and creates timestamped backups. ### 2026-04-21 21h - AI Registry and Role Runners - Added `ai.Registry` to build provider clients from named provider config entries. - Added `EmbeddingRunner` and `MetadataRunner` with sequential fallback execution. - Added target health tracking with cooldowns for transient/permanent/empty-response failures. ### 2026-04-21 21h - App and Tool Wiring Updates - Rewired app startup to use provider registry + role runners for foreground and background flows. - Updated capture, search, summarize, context, recall, backfill, metadata retry, and reparse paths to use new runners. - Preserved environment override behavior for provider credentials/endpoints across matching provider types. ### 2026-04-21 21h - Migrate Config CLI Added - Added `cmd/amcs-migrate-config` CLI to migrate config files to the current schema version. - Supports dry-run output and in-place write mode with automatic backup file creation. ### 2026-04-21 21h - Tests and Documentation Updated - Added focused tests for config migration, AI registry behavior, and runner fallback behavior. - Updated `configs/config.example.yaml` to the new v2 schema. - Updated README configuration sections and migration guidance to reflect v2 and `amcs-migrate-config` usage. ### 2026-04-21 21h - Uncommitted File Change List - Modified: `.gitignore` - Modified: `README.md` - Modified: `configs/config.example.yaml` - Modified: `internal/ai/compat/client.go` - Modified: `internal/ai/compat/client_test.go` - Modified: `internal/app/app.go` - Modified: `internal/config/config.go` - Modified: `internal/config/loader.go` - Modified: `internal/config/loader_test.go` - Modified: `internal/config/validate.go` - Modified: `internal/config/validate_test.go` - Modified: `internal/mcpserver/server.go` - Modified: `internal/mcpserver/streamable_integration_test.go` - Modified: `internal/tools/backfill.go` - Modified: `internal/tools/capture.go` - Modified: `internal/tools/context.go` - Modified: `internal/tools/enrichment_retry.go` - Modified: `internal/tools/links.go` - Modified: `internal/tools/metadata_retry.go` - Modified: `internal/tools/recall.go` - Modified: `internal/tools/reparse_metadata.go` - Modified: `internal/tools/retrieval.go` - Modified: `internal/tools/search.go` - Modified: `internal/tools/summarize.go` - Modified: `internal/tools/update.go` - Deleted: `internal/ai/factory.go` - Deleted: `internal/ai/factory_test.go` - Deleted: `internal/ai/litellm/client.go` - Deleted: `internal/ai/ollama/client.go` - Deleted: `internal/ai/openrouter/client.go` - Deleted: `internal/ai/provider.go` - New: `changelog.md` - New: `cmd/amcs-migrate-config/main.go` - New: `internal/ai/registry.go` - New: `internal/ai/registry_test.go` - New: `internal/ai/runner.go` - New: `internal/ai/runner_test.go` - New: `internal/config/migrate.go` - New: `internal/config/migrate_test.go` ### 2026-04-21 21h - Docker Support for Config Migration CLI - Added `amcs-migrate-config` binary to the Docker image build output. - Added `migrate-config` service in `docker-compose.yml` under the `tools` profile. - Documented compose-based migration commands (dry-run and in-place apply) in the README. ### 2026-04-21 21h - Startup Migration Write Disabled - Changed config loading to migrate legacy schemas in memory only during startup. - Removed automatic file rewrite and backup creation from the startup config loader. - Added loader log hint to use `amcs-migrate-config` when persistent conversion is needed.