56d2e07716
Adds a --names flag to ctask list that emits one workspace directory basename per line, no header, no decoration. Empty result is empty stdout with zero exit code (no "No workspaces found." placeholder). Used by shell completion scripts and external tooling. Candidates are directory basenames rather than bare slugs because basenames are unique under the resolver's exact-match step while slugs can collide across categories or dates. Respects existing list filters: --all, --task, --projects, --category, --limit. So: ctask list --names active workspaces only ctask list --names --all active and archived ctask list --names --projects active project workspaces The new TestListNamesCandidatesResolveUniquely test enforces the spec invariant: every line emitted by list --names must resolve to exactly one workspace via the standard resolver.