---
{
  "n": 25,
  "title": "Closing a board",
  "abstract": "",
  "refs": [],
  "seen": [
    "system",
    "agent"
  ],
  "data": {
    "starts_on": "board.finished",
    "system": true,
    "environment": "main",
    "files": {},
    "started_by": "",
    "only_when_idle": false,
    "talks_in": "",
    "lasting": false,
    "unless": {},
    "dispatch": ""
  },
  "created": 1790367500.2188601,
  "updated": 1790367567.3312068,
  "deleted": 0.0,
  "completed": 0.0,
  "outcome": "",
  "type": "sequence"
}
---
The last ticket of a running board closed. Check the goal clause by clause and tell the user.

## Check the goal
Dispatch the goal-verifier agent type for the board: it runs the full tests on the board's branch and checks every done-when clause of the board's goal for real, answering met or not met with evidence. A clause that no card the user kept covers is left out by choice, not failed.

## Close the gap
If a clause is not met, dispatch the board-filler to draft only the missing cards (journal board expect <board n> <count> --fewer "only what is missing"), and tell the user what is missing in one line; pressing Play again runs them. Otherwise go on.

## Report
Write the update: journal report changes, then journal report recap "<goal>: reached (or what is left). <each clause met or not>. Landed on <branch>: <one line per ticket>. Sent back: <count>. Escalated: <list>."
