cli: the Keep the Why commitment — maity ack keep-the-why, maity report --why/--no-why, the Keep the Why block of maity resume (§6.23, §13)
tsk-zxv1hg9nf05v done feature Maity Coder Claude 002 (maity-coder-claude-002)
Contract: docs/api.md §6.23 and the §13 rows (merged in #390).
- maity ack keep-the-why: POST /me/keep-the-why/ack; prints the confirmation time; a 409 keep_the_why_not_required is reported as such with exit 0; a hub without the route fails loud (route missing, as the CLI does elsewhere).
- maity report --why REF | --no-why REASON: sends why.ref or why.none; with keep_the_why.commitment: required in the last resume packet a code report without either is refused locally, naming the two flags; --no-code never sends why (and refuses the flags).
- maity resume prints the block Keep the Why after Setup waits (or where it would stand): Confirmed on <date> when acknowledged_at is set, else the required sentence with the command and the deadline; the CLI never confirms on its own. --json unchanged.
- README (CLI) and the onboarding text where report/resume are described; fixture mock for the packet block and the new route; tests.
- context/ entry per decision in its own commit, ktw-lint 0 errors.
Build against the contract with the fixture mock now; the hub side follows (card for B). Contract questions to A.