diff --git a/agents/darkwing/work/queue-115/r1/build.md b/agents/darkwing/work/queue-115/r1/build.md new file mode 100644 index 000000000..df0004b16 --- /dev/null +++ b/agents/darkwing/work/queue-115/r1/build.md @@ -0,0 +1,116 @@ +# Row 115 (#1609) round 1: a closed decision sends the raising role a message + +Brief: docs/plans/2026-10-14_decision-close-message.md. Mos found the gap. Jason resolved decision 03130d08, and the PM, which raised it, never got a turn, because a close wrote only `decision_events` and nothing reached the role. + +BASE: 94ece491f05ecbb737227da8a7ba1d57a1ac75fd. I built the candidate on 54b7c7b3e and moved the worktree to 94ece491f before the mutants and the gate. The commits between them touch only packages/ledger, docs/SESSIONS.md and the queue files, none of the manifest paths. +Candidate: build.patch against BASE. candidate-manifest.sha256 lists the 5 files. I applied the patch to a fresh `git archive 94ece491f` export and every digest matched (DIGESTS_OK). + +## What changed + +### The close message + +packages/bus/src/broker.mjs, the `decision.resolve`/`decision.seen`/`decision.withdraw` case. After the `decision_events` insert and the human's `human.input` answer event, a close with `op !== 'seen'` by a human, or by a run other than `raised_by_run`, inserts one message: + +| Column | Value | +|---|---| +| `from_role`, `from_run` | `human`, `human-cli` for a human close; the closing role and run for a role close | +| `to_role` | `d.raised_by_role` | +| `class` | `DECISION` | +| `decision` | the decision's id | +| `in_reply_to`, `corrects` | null | +| `body` | `Decision on was resolved by : (