mirror of
https://github.com/saltbo/agent-kanban.git
synced 2026-09-19 09:01:47 +08:00
25 lines
964 B
Markdown
25 lines
964 B
Markdown
# 0009: Notify assigned Agents after Task lifecycle commits
|
|
|
|
Status: accepted
|
|
|
|
## Context
|
|
|
|
Assignment and later lifecycle decisions must wake or inform an assigned Agent
|
|
through Inbox. D1 and Inbox do not share a transaction, so a distributed write
|
|
can partially succeed.
|
|
|
|
## Decision
|
|
|
|
AK commits the authoritative Task mutation first, then sends an Inbox message
|
|
for assignment, review rejection, completion, and cancellation. Each message
|
|
uses the stable key `ak:<event>:<taskId>:<taskVersion>`. If delivery fails, AK
|
|
returns a retryable service failure. Retrying the same idempotent lifecycle
|
|
request retries the notification without applying the Task mutation twice.
|
|
|
|
## Consequences
|
|
|
|
Task state is never rolled back because Inbox is unavailable. A caller may see
|
|
an error after the Task changed and must retry the same request. Inbox must
|
|
deduplicate the stable message key; AK logs the boundary failure without
|
|
placing credentials or message bodies in logs.
|