--- id: "0029" date: 2026-07-12 status: Accepted supersedes: superseded-by: affected-paths: [plugins/os-backlog/lib/backlog/cards.rb, plugins/os-backlog/bin/os-backlog, plugins/os-backlog/skills/capture/SKILL.md, plugins/os-backlog/skills/list/SKILL.md] affected-components: [os-backlog] --- # 0029 — os-backlog card-move with CLI-enforced column ownership; afk-ready cards skip Review ## Context The os-backlog process policy always intended the AI to move the cards it works (Doing -> Review at most), but the shipped slices scoped column moves out of the CLI entirely, so worked cards piled up in their original columns with status comments instead of moving — blocked cards sat in Backlog and shipped work waited on manual mouse-driven moves. Separately, the Review -> Done human sign-off gate meant every completed autonomous card demanded per-card sifting by the user, a growing annoyance the user explicitly rejected (2026-07-12). ## Decision Add `os-backlog card-move --board NAME --card ID --to COLUMN` backed by planka-api 0.2.0 Cards#move, with the ownership rules enforced deterministically in lib/backlog/cards.rb rather than skill prose: (1) no move into or out of Next (human-curated both directions); (2) hitl-labeled cards are never moved by the AI; (3) no move out of Done; (4) move to Done allowed only for afk-ready-labeled cards; (5) all other moves among Backlog/Doing/Waiting/Review allowed. Autonomy semantics amended: afk-ready cards skip Review — shipped + verified goes straight to Done; semi cards still stop at Review for human sign-off. Working a card now means moving it: Doing when started, Waiting + blocker comment when blocked, Review (semi) or Done (afk-ready) when shipped. ## Consequences Easier: board state reflects reality without human mousing; blocked work is visible in Waiting; no Review pile of autonomous work to sift. Harder: mistakes in afk-ready work surface later since no human skims it before Done (accepted trade-off — 'we will deal with it then'); the guardrail table lives in code and must be changed via a superseding ADR, not a skill edit. ## Alternatives rejected 1) Keep Review -> Done as a human gate but batch it (user says 'approve review', AI moves them) — rejected by the user: still a recurring sifting chore, deferred as a possible future correction if unreviewed-Done becomes a pain point. 2) Unrestricted card-move with rules only in SKILL.md prose — rejected: prose rules are exactly what drifted out of sync with the CLI in the first place; deterministic enforcement cannot be forgotten by a future skill edit. 3) Status quo (comments instead of moves) — rejected: blocked cards lingering in Backlog created confusion.