OK    args: exit 2, target-branch
OK    args: exit 2, target-branch
OK    args: exit 4
OK    args: exit 4
OK    args: exit 4
OK    --base next refuses before the config is read (got 2)
OK    a missing system config exits 3 (got 3)
OK    nobus: exit 3
OK    schema-table: exit 2, bus-schema
OK    schema-meta: exit 2, bus-schema
OK    openBus opens the database read-only
OK    other-business: exit 2, decision-not-found
OK    no-raise: exit 2, decision-not-found
OK    not-a-merge: exit 2, not-a-merge
OK    open: exit 2, not-resolved
OK    withdrawn: exit 2, not-resolved
OK    by-agent: exit 2, not-human
OK    via-webui: exit 2, not-human
OK    no-answer: exit 2, not-human
OK    answer-role: exit 2, not-human
OK    answer-run: exit 2, not-human
OK    answer-choice: exit 2, not-human
OK    two-answers: exit 2, not-human
OK    chose-no: exit 2, not-merge-option
OK    two-refs: exit 2, work-ref
OK    bad-ref: exit 2, work-ref
OK    task-ref-disagrees: exit 2, work-ref
OK    raise-task-disagrees: exit 2, work-ref
OK    target-main: exit 2, target-branch
OK    superseded-question: exit 2, superseded
OK    superseded-task: exit 2, superseded
OK    superseded-by: exit 2, superseded
OK    no-verdict: exit 2, no-verdict
OK    changes-later: exit 2, not-approved
OK    short-commit: exit 2, not-approved
OK    wrong-task-body: exit 2, not-approved
OK    args: exit 2, decision-not-found
OK    earlier-merge: exit 0
OK    ref-moved: exit 2, ref-moved
OK    root-top: exit 2, root-file
OK    root-newdir: exit 2, root-file
OK    root-src: exit 2, root-file
OK    unrelated: exit 2, base-conflict
OK    empty: exit 2, base-conflict
OK    an empty reviewed diff says so
OK    dirty-changed: exit 2, checkout-dirty
OK    dirty-staged: exit 2, checkout-dirty
OK    dirty-untracked: exit 2, checkout-dirty
OK    conflict: exit 2, base-conflict
OK    a refusal after the worktree is added leaves no worktree or scratch
OK    cleanup looks for the worktree's Docker network
OK    dirty-during: exit 2, checkout-dirty
OK    a reviewed path dirtied during the gate moves no ref
OK    drift: exit 2, patch-drift
OK    patch-drift leaves no worktree or scratch
OK    gate-pkg: exit 2, gate-failed
OK    gate-failed names the failing step's log, and it exists
OK    gate-failed leaves no worktree or scratch
OK    gate-script: exit 2, gate-failed
OK    a failing scripts/test-*.sh fails the gate
OK    a failed gate moves no ref
OK    nomods: exit 4
OK    a target without node_modules leaves no worktree or scratch
OK    moved: exit 2, base-moved
OK    base-moved keeps the base where it moved to
OK    dry: exit 0
OK    --dry-run writes no ref
OK    --dry-run prints the commit with --subject and --attribution
OK    --dry-run runs the gate
OK    --dry-run leaves no worktree or scratch
OK    land: exit 0
OK    the landing is one commit on the old base
OK    its diff is the reviewed diff by patch-id
OK    its tree is the dry run's
OK    the message has the option's subject, the citations and the attribution last
OK    it prints the line for the PM
OK    the checked-out base has the reviewed paths and keeps the unrelated edit
OK    only refs/heads/refactor exists in the target
OK    the work ref is unchanged
OK    the bus database is unchanged
OK    the gate ran each package suite but queue, and each scripts/test-*.sh
OK    the landing leaves no worktree or scratch
OK    the target's node_modules is still there, with its contents
OK    the worktree's Docker network is removed
---
land-work selftests: 84 passed, 0 failed
