Two gaps surfaced by a live /new-task (task 9bce78ad): the plan was produced and approved, but the "plan ready" notice posted top-level (not in the task thread) and contained no plan to review. 1. THREADING — `run-team.py` `_build_notifiers` exposed `notify(message)` with no `thread_ts`. The coordinator's `_emit` calls `notify(message, thread_ts=root)`; that raised TypeError, and `_emit`'s fallback re-posted TOP-LEVEL. So every lifecycle milestone (plan-ready / parked / failed) landed unthreaded, despite the coordinator computing the root ts. (The clarifier QUESTION threaded fine — different path.) Fix: the sink now accepts and forwards `thread_ts` into the chat.postMessage payload (build_slack_poster already forwards the key). 2. PRESENTATION — the plan-ready milestone was a bare one-liner. It now posts a CONDENSED plan (summary + numbered phase names; step detail stays on the status dashboard) via new `Coordinator._summarize_plan`, so the plan is actually reviewable in-thread. Tests: notify sink forwards thread_ts (and omits it for top-level); condensed plan renders summary + phase names (not steps); malformed plan falls back; plan-ready milestone threads under the task root AND carries the plan. 1193 pass. |
||
|---|---|---|
| .. | ||
| db | ||
| nodes | ||
| transport | ||
| __init__.py | ||
| api.py | ||
| billing.py | ||
| ci_fetcher.py | ||
| ci_gate.py | ||
| coordinator.py | ||
| deadline_timer.py | ||
| dispatcher.py | ||
| graph.py | ||
| invoker.py | ||
| invoker_multi.py | ||
| ledger.py | ||
| operator_cli.py | ||
| recovery.py | ||
| responder.py | ||
| resume_worker.py | ||
| state_store.py | ||
| status_page.py | ||
| task_model.py | ||