### Roadmap (initiatives over existing delivery)
- An initiative is a **stable generated id** — the `[initiatives.<id>]` registry key
in `tix.toml` — with a mutable display `name`, plus optional
outcome/owner/status/priority/labels/target date and explicit project-**id**,
epic-**id** and milestone-**name** references. A rename changes the label only and
re-keys nothing
- `tix initiative create <name> [--outcome --owner --status --priority --labels
--target-date --projects --epics --milestones]`, `tix initiative edit <id>
[--name …]` (label only), `tix initiative list` (id, name, target date, status),
`tix initiative show <id>`, `tix initiative delete <id> [--yes]` (the registry
entry only — no issue, project, epic or milestone is ever deleted)
- Associate and dissociate: `tix initiative associate <id>
--project|--epic|--milestone <ref>` and `tix initiative dereference <id> …`,
naming **exactly one** kind flag. A repeated association is an idempotent no-op,
and a well-formed reference that names nothing is stored and diagnosed rather than
resolved or inferred from an owner
- Read the roadmap: `tix roadmap list [--from <date> --to <date> --owner <id>
--status <state> --label <label> --query <text>]` and `tix roadmap show <id>`.
Rows are ordered by target date ascending, then stable id; an initiative with no
target date renders the explicit `undated` state and sorts last — never an invented
period — and a bounded period excludes it
- The one filter: the CLI flags, the TUI filter editor, the MCP arguments and the
portable document all parse into the same normalized `RoadmapFilter`. Malformed
syntax (a non-`YYYY-MM-DD` date, a reversed period, a blank owner/status/label) is
refused before anything is projected; a well-formed value that names nothing simply
matches nothing
- The summary is a **join, not a blend**: each row carries one contribution per
referenced source entity — its `<kind>:<id>` provenance, its derived label, its
resolution, the owning service's own progress value, the shared health policy's
risk state and the policy version — and no aggregate percentage, score or average.
States are `complete` / `partial` / `empty` / `missing_reference` / `unknown`; a
genuine zero is a value, never conflated with empty or unknown
- Missing references stay visible on the row, in the detail and in the ordered
diagnostics (field, reference and remedy), never dropped and never silently
repaired. `tix lint` reports **issue-held** project/epic references (and an epic
registry's own references); an initiative's references are config-held and are
diagnosed on the roadmap surfaces, not by `tix lint`
- `tix export --target roadmap [--output <path>]` writes the versioned portable
document. The TUI's `F10` Portfolio page has a **Roadmap** tab (`c` create, `e`
rename, `a` associate, `x` dereference, `f` filter, `r` re-read, `j`/`k` rows), and
MCP exposes
the `initiative_*` management tools plus `roadmap_list`/`roadmap_show`/
`roadmap_summary`. Applying or filtering a roadmap view never mutates an issue,
project, epic or milestone
- An initiative change appends **no** `## History` event: an initiative is a config
record, so the atomic `tix.toml` write is the audit