Implements complete multi-target alias ILM integration (plan §13.7):
- Add TaskStore::upsert_alias for ILM multi-target alias updates
- Update ILM to use upsert_alias instead of create_alias for rollovers
- Implement miroir-ctl alias commands (create, delete, list, show)
- Add alias kind and manager display to CLI output
- Document multi-target alias lifecycle and ILM ownership
Acceptance criteria met:
1. ✓ Operator edits to multi-target aliases return HTTP 409 miroir_multi_alias_not_writable
2. ✓ ILM exclusively manages multi-target aliases via kind='multi'
3. ✓ ILM atomic flips update target_uids and version correctly
4. ✓ Multi-target reads fan-out across all targets
5. ✓ Multi-target aliases reject writes with miroir_multi_alias_not_writable
6. ✓ miroir-ctl alias commands show alias kind and manager
7. ✓ Document multi-target alias lifecycle and ILM ownership
Closes: bf-5thu9
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Created docs/ctl/*.md runbooks for all 16 miroir-ctl subcommands
- Each runbook includes: purpose, preconditions, examples, gotchas, see also
- Added runbook location to --help output
- All runbooks under 50 lines for easy reading
Closes: miroir-uyx.4