Acceptance Gates
Landing is proven, not reported.
Done is a derived state
A card does not move to done because a worker says it finished. It moves when the gate ledger holds a passing verdict for every gate the card requires, each one recorded against the run that produced it.
That is the difference between a status and a claim. A status you can read off the board; a claim you have to believe.
Executable Done-when
Every card carries a done_when — a command, not a description. pytest tests -q is a Done-when; “tests should pass” is not.
The gate runs it and records the outcome. A card whose Done-when cannot be executed is a card that cannot be finished, which is the correct behaviour: the alternative is a board full of items whose completion nobody can reproduce.
Refusal is a first-class outcome
A reviewer that refuses a card sends it to needs_rework with the reason attached, where a builder can pull it again. Nothing is silently dropped and nothing is retried in place hoping for a better roll.
An overrun is different and deliberately so: the card is parked as blocked with split this card as the stated reason. A card that will not fit one budget envelope will not fit it on the second attempt either.