Two repos. One missing guarantee.
In agent-governance-plane, a human's approval was cryptographically signed with Ed25519 and written to a tamper-evident journal. Solid. Except the only InteractionSource wired into the system was an in-memory test stub. A human could see an Allow/Deny prompt — but the click had no way home. The signed approval was a letter with no mailbox.
In claude-code-slack-channel, an agent's reply to a Slack thread was a synchronous tool call. If the process died between "decide to send" and "send," the reply vanished. No turn-terminal flush, no retry, no record that an obligation ever existed. The user just waited.
Different repos, different directions of travel — one inbound (receive a human's decision), one outbound (deliver an agent's reply). Same hole: the part where a human and an agent actually hand work to each other was the part nobody made durable.
On 2026-06-07 both repos closed that hole. They shipped the same four-move discipline. And one repo's spec was lifted, by name, from the other's pattern. That is the part worth your attention.






