# v0.26.0 — Unified Config Defaults System

## What Changed

**Single source of truth for config defaults** — Config defaults are now defined once in ConfigDefaults.ts and consumed by both the init command (new agents) and PostUpdateMigrator (existing agents). This structurally prevents the recurring bug where new config fields were added to init but forgotten in the migration path, causing existing agents to silently miss features.

**Agent-type-aware defaults** — Managed-project and standalone agents get different defaults where appropriate (e.g., quota tracking). Migration uses more conservative values for security-sensitive fields like trust levels.

**Safety mechanisms** — Atomic config writes with backup, opt-out via _instar_noMigrate, migration version tracking via _instar_migrations, and audit trail to security.jsonl.

**CI enforcement** — 15 tests verify init/migration equivalence, idempotency, no-overwrite guarantees, opt-out handling, type safety, and array-as-leaf behavior.

## What to Tell Your User

Config management got a structural upgrade. New features will now automatically be available to both new and existing agents on update. Previously, some features like PromptGate were missing for existing agents because the update path did not include them. That gap is now structurally impossible — any new config default added by the developer is automatically applied to all agents on their next update, while never overwriting your customizations.

## Summary of New Capabilities

| Capability | How to Use |
|-----------|-----------|
| Auto-applied config defaults | Automatic on update — no action needed |
| Opt-out of specific migrations | Add field names to _instar_noMigrate array in config.json |
| Migration audit trail | Check _instar_migrations in config.json or security.jsonl |
