gateline arm's body: decide()-style flow with { action: 'arm' }
(DecisionError → exit 1 with its message — covers already-armed;
nonexistent-run comes from findRun's existing refusal), then a
best-effort draft-PR ensure (R8) using the source's dir (the sync
command's (source as {dir?}).dir pattern) — a skipped note is success.
gateline arm's body:decide()-style flow with{ action: 'arm' }(DecisionError → exit 1 with its message — covers already-armed; nonexistent-run comes fromfindRun's existing refusal), then a best-effort draft-PR ensure (R8) using the source's dir (thesynccommand's(source as {dir?}).dirpattern) — a skipped note is success.