fix(kanban): make creator wake turns graph-safe

Carry the worker's completion handoff into the synthetic creator wake
turn and label it as an automatic notification with inspect-the-board /
don't-recreate guidance, so a woken orchestrator doesn't re-decompose
work that already exists (#70752).

Salvaged from PR #71100 by @yinkev; ported onto the restructured wake
region (delivery_mode gating, scope_id, sub chat_id destinations). The
auto_subscribe_on_create config-default half of the original PR was
dropped as already superseded on main.
This commit is contained in:
kyinhub
2026-08-13 12:00:14 -07:00
committed by Teknium
parent 056f10acf6
commit e5fd1c7b43
21 changed files with 70 additions and 5 deletions
+2
View File
@@ -169,6 +169,8 @@ gateway:
status_default: "status changed"
status_joiner: ", "
message: "[kanban] Task {task_id} {status}.\nTitle: {title}\nAssignee: @{assignee}\nBoard: {board}\n\nCheck the result or decide the next step."
handoff: "Result: {summary}"
guidance: "This is an automatic task-status notification, not a request to decompose the task again. Inspect the current board before creating follow-up tasks; do not recreate tasks or graphs that already exist."
personality:
none_configured: "Geen persoonlikhede opgestel in `{path}/config.yaml` nie"
+2
View File
@@ -192,6 +192,8 @@ gateway:
status_default: "تغيّرت الحالة"
status_joiner: "، "
message: "[kanban] المهمة {task_id} {status}.\nالعنوان: {title}\nالمُكلَّف: @{assignee}\nاللوحة: {board}\n\nراجع النتيجة أو قرّر الخطوة التالية."
handoff: "Result: {summary}"
guidance: "This is an automatic task-status notification, not a request to decompose the task again. Inspect the current board before creating follow-up tasks; do not recreate tasks or graphs that already exist."
personality:
none_configured: "لا توجد شخصيات مُهيّأة في `{path}/config.yaml`"
+2
View File
@@ -169,6 +169,8 @@ gateway:
status_default: "status changed"
status_joiner: ", "
message: "[kanban] Task {task_id} {status}.\nTitle: {title}\nAssignee: @{assignee}\nBoard: {board}\n\nCheck the result or decide the next step."
handoff: "Result: {summary}"
guidance: "This is an automatic task-status notification, not a request to decompose the task again. Inspect the current board before creating follow-up tasks; do not recreate tasks or graphs that already exist."
personality:
none_configured: "Keine Persönlichkeiten in `{path}/config.yaml` konfiguriert"
+2
View File
@@ -184,6 +184,8 @@ gateway:
status_default: "status changed"
status_joiner: ", "
message: "[kanban] Task {task_id} {status}.\nTitle: {title}\nAssignee: @{assignee}\nBoard: {board}\n\nCheck the result or decide the next step."
handoff: "Result: {summary}"
guidance: "This is an automatic task-status notification, not a request to decompose the task again. Inspect the current board before creating follow-up tasks; do not recreate tasks or graphs that already exist."
personality:
none_configured: "No personalities configured in `{path}/config.yaml`"
+2
View File
@@ -169,6 +169,8 @@ gateway:
status_default: "status changed"
status_joiner: ", "
message: "[kanban] Task {task_id} {status}.\nTitle: {title}\nAssignee: @{assignee}\nBoard: {board}\n\nCheck the result or decide the next step."
handoff: "Result: {summary}"
guidance: "This is an automatic task-status notification, not a request to decompose the task again. Inspect the current board before creating follow-up tasks; do not recreate tasks or graphs that already exist."
personality:
none_configured: "No hay personalidades configuradas en `{path}/config.yaml`"
+2
View File
@@ -169,6 +169,8 @@ gateway:
status_default: "status changed"
status_joiner: ", "
message: "[kanban] Task {task_id} {status}.\nTitle: {title}\nAssignee: @{assignee}\nBoard: {board}\n\nCheck the result or decide the next step."
handoff: "Result: {summary}"
guidance: "This is an automatic task-status notification, not a request to decompose the task again. Inspect the current board before creating follow-up tasks; do not recreate tasks or graphs that already exist."
personality:
none_configured: "Aucune personnalité configurée dans `{path}/config.yaml`"
+2
View File
@@ -173,6 +173,8 @@ gateway:
status_default: "status changed"
status_joiner: ", "
message: "[kanban] Task {task_id} {status}.\nTitle: {title}\nAssignee: @{assignee}\nBoard: {board}\n\nCheck the result or decide the next step."
handoff: "Result: {summary}"
guidance: "This is an automatic task-status notification, not a request to decompose the task again. Inspect the current board before creating follow-up tasks; do not recreate tasks or graphs that already exist."
personality:
none_configured: "Níl aon phearsantachtaí cumraithe in `{path}/config.yaml`"
+2
View File
@@ -169,6 +169,8 @@ gateway:
status_default: "status changed"
status_joiner: ", "
message: "[kanban] Task {task_id} {status}.\nTitle: {title}\nAssignee: @{assignee}\nBoard: {board}\n\nCheck the result or decide the next step."
handoff: "Result: {summary}"
guidance: "This is an automatic task-status notification, not a request to decompose the task again. Inspect the current board before creating follow-up tasks; do not recreate tasks or graphs that already exist."
personality:
none_configured: "Nincs személyiség beállítva itt: `{path}/config.yaml`"
+2
View File
@@ -169,6 +169,8 @@ gateway:
status_default: "status changed"
status_joiner: ", "
message: "[kanban] Task {task_id} {status}.\nTitle: {title}\nAssignee: @{assignee}\nBoard: {board}\n\nCheck the result or decide the next step."
handoff: "Result: {summary}"
guidance: "This is an automatic task-status notification, not a request to decompose the task again. Inspect the current board before creating follow-up tasks; do not recreate tasks or graphs that already exist."
personality:
none_configured: "Nessuna personalità configurata in `{path}/config.yaml`"
+2
View File
@@ -169,6 +169,8 @@ gateway:
status_default: "status changed"
status_joiner: ", "
message: "[kanban] Task {task_id} {status}.\nTitle: {title}\nAssignee: @{assignee}\nBoard: {board}\n\nCheck the result or decide the next step."
handoff: "Result: {summary}"
guidance: "This is an automatic task-status notification, not a request to decompose the task again. Inspect the current board before creating follow-up tasks; do not recreate tasks or graphs that already exist."
personality:
none_configured: "`{path}/config.yaml` に人格が設定されていません"
+2
View File
@@ -169,6 +169,8 @@ gateway:
status_default: "status changed"
status_joiner: ", "
message: "[kanban] Task {task_id} {status}.\nTitle: {title}\nAssignee: @{assignee}\nBoard: {board}\n\nCheck the result or decide the next step."
handoff: "Result: {summary}"
guidance: "This is an automatic task-status notification, not a request to decompose the task again. Inspect the current board before creating follow-up tasks; do not recreate tasks or graphs that already exist."
personality:
none_configured: "`{path}/config.yaml`에 구성된 성격이 없습니다"
+2
View File
@@ -169,6 +169,8 @@ gateway:
status_default: "status changed"
status_joiner: ", "
message: "[kanban] Task {task_id} {status}.\nTitle: {title}\nAssignee: @{assignee}\nBoard: {board}\n\nCheck the result or decide the next step."
handoff: "Result: {summary}"
guidance: "This is an automatic task-status notification, not a request to decompose the task again. Inspect the current board before creating follow-up tasks; do not recreate tasks or graphs that already exist."
personality:
none_configured: "Nenhuma personalidade configurada em `{path}/config.yaml`"
+2
View File
@@ -169,6 +169,8 @@ gateway:
status_default: "status changed"
status_joiner: ", "
message: "[kanban] Task {task_id} {status}.\nTitle: {title}\nAssignee: @{assignee}\nBoard: {board}\n\nCheck the result or decide the next step."
handoff: "Result: {summary}"
guidance: "This is an automatic task-status notification, not a request to decompose the task again. Inspect the current board before creating follow-up tasks; do not recreate tasks or graphs that already exist."
personality:
none_configured: "В `{path}/config.yaml` не настроено ни одной личности"
+2
View File
@@ -169,6 +169,8 @@ gateway:
status_default: "status changed"
status_joiner: ", "
message: "[kanban] Task {task_id} {status}.\nTitle: {title}\nAssignee: @{assignee}\nBoard: {board}\n\nCheck the result or decide the next step."
handoff: "Result: {summary}"
guidance: "This is an automatic task-status notification, not a request to decompose the task again. Inspect the current board before creating follow-up tasks; do not recreate tasks or graphs that already exist."
personality:
none_configured: "`{path}/config.yaml` içinde yapılandırılmış kişilik yok"
+2
View File
@@ -169,6 +169,8 @@ gateway:
status_default: "status changed"
status_joiner: ", "
message: "[kanban] Task {task_id} {status}.\nTitle: {title}\nAssignee: @{assignee}\nBoard: {board}\n\nCheck the result or decide the next step."
handoff: "Result: {summary}"
guidance: "This is an automatic task-status notification, not a request to decompose the task again. Inspect the current board before creating follow-up tasks; do not recreate tasks or graphs that already exist."
personality:
none_configured: "У `{path}/config.yaml` не налаштовано жодної особистості"
+2
View File
@@ -169,6 +169,8 @@ gateway:
status_default: "status changed"
status_joiner: ", "
message: "[kanban] Task {task_id} {status}.\nTitle: {title}\nAssignee: @{assignee}\nBoard: {board}\n\nCheck the result or decide the next step."
handoff: "結果:{summary}"
guidance: "這是自動任務狀態通知,不是再次分解任務的請求。建立後續任務前請先檢查目前看板;不要重複建立已存在的任務或任務圖。"
personality:
none_configured: "`{path}/config.yaml` 中未設定人格"
+2
View File
@@ -169,6 +169,8 @@ gateway:
status_default: "状态变化"
status_joiner: ","
message: "[kanban] 任务 {task_id} {status}。\n标题: {title}\n执行者: @{assignee}\n看板: {board}\n\n请检查结果或决定下一步动作。"
handoff: "结果:{summary}"
guidance: "这是自动任务状态通知,不是再次分解任务的请求。创建后续任务前请先检查当前看板;不要重复创建已存在的任务或任务图。"
personality:
none_configured: "`{path}/config.yaml` 中未配置人格设定"