### Cycle schedules (repeating time boxes)
- A schedule is a `[cycle_schedules.<id>]` table in `tix.toml`: the **id** is the
identity and a mutable display `name` is only a label, with an explicit `cadence`
(`daily`|`weekly`|`monthly`|`interval`), a `duration`, an anchor `start_date`, an
explicit `timezone` (`UTC` or a fixed `±HH:MM` — a named zone is refused),
`look_ahead`, and a `state` of `active`|`paused`|`ended` (terminal). A duration
that provably reaches past its cadence step is refused; back-to-back is allowed
- `tix cycle schedule list` / `show <SCHEDULE>` read the registry;
`create … --confirm` / `edit <SCHEDULE> … --confirm` / `delete <SCHEDULE>
--confirm` manage it. A generated cycle is an ordinary `docs/cycles/*.md` record
carrying `schedule_id`, `sequence` and `state`: its stable id is
`{schedule-id}:{sequence}` (`sprint:000001`) and its reference name is
`<name> <start-date> <sequence>` (`Engineering sprint 2026-01-05 000001`)
- `tix cycle schedule detect [--date YYYY-MM-DD]` is **read-only** — it reports what
is ended or due and writes nothing. `tix cycle schedule generate <SCHEDULE>
--confirm` creates the next cycles idempotently, keyed on the stable
`(schedule-id, sequence)`: an existing key is a no-op and a rejection ends the
batch rather than skipping a hole
- The seven lifecycle actions are one confirmed request each:
`close <SCHEDULE> --reason TEXT` (captures an immutable snapshot under
`docs/cycle_snapshots/`, marks the record closed and appends `cycle_closed` to the
cycle record's own body), `extend … --reason TEXT`, `skip … --reason TEXT`,
`adjust-future … --reason TEXT`, `pause`, `resume` and `ignore` (writes nothing).
**Every mutation requires `--confirm`**; a reason is required for `close`,
`extend`, `skip` and `adjust-future`
- A close's snapshot is written **once** and never recomputed from the live
schedule, so it survives a later schedule edit or rename. The CLI reads the file
`close` names; the TUI and MCP's `cycle_snapshot_list` list them. No action
creates, moves or rewrites an issue — a cycle's trail is its record, its snapshot
and its cursor, not an issue `## History`
- The TUI's `F8` Schedule page opens the same registry on its **Cycle schedules**
tab (`n` create, `E` edit, `g` generate, `c` close, `e` extend, `a` adjust-future,
`p` pause, `r` resume, `s` skip, `i` ignore), rendering exactly the values the CLI
prints. MCP exposes the `cycle_schedule_*` tools, the writes requiring
`confirm: true`