Igor: clan opening, wired lifecycle (classification gate, conversation-to-work trigger, proactive skim, wrap-up accretion), spawn template with branch/name/model, synthesis-not-verification rule, model pinned to opus-4-6[1m], skill namespace fixed to spire:igor. Task-notification plumbing extracted to harness-notes.md. New mindset.md restores philosophical root lost in cross-repo extraction. Adept: earned authority stance, strict-domain gravity well, compression-means- successor in end-of-life. Athanor: furnace opening paragraph, fixed broken @include path. Implementation: fixed frontmatter name mismatch. Journal template: Assistant -> Igor, contexts-as-paths comment. Includes both review reports (Fable agent review, Sonnet skill audit).
1.9 KiB
1.9 KiB
Task Notification Mechanics
A <task-notification> with status: completed fires whenever a dispatched agent yields with no live background children of its own. An agent that sub-delegates to a background child and then yields will notify completed immediately — before any deliverable exists.
Rules
- Before concluding "the agent stopped/failed," read the
<result>text. A result that announces a hand-off ("I've dispatched...", "running in the background") + a missing artifact = a background child is still working. Wait for its notification; do not resume-and-redo. - Background children flatten to the session root: each grandchild sends its own later notification with a different
task-id. Expect N+1 notifications when sub-delegation happened. - The same
task-idmay notify more than once (each is one turn). Key your bookkeeping on the deliverable, not the notification count. - When unsure whether work is still in flight, call
ListAgentsbefore acting. Background grandchildren appear there as flat, top-level subagents of your session with statusrunning. If a child is alive and writing your output path, do notSendMessage-resume the parent — that starts a second writer racing the first.TaskStopthe child first only if you mean to abandon it. TaskListis the todo-list tool, unrelated to agents.TaskOutputon an agent dumps its whole transcript into your context — never use it for agents.ListAgentsis the only agent-liveness check.
Leaf tasks
When you dispatch a single self-contained task (read these files, write this one report), the prompt MUST say "do this work yourself; do not dispatch further agents." A general-purpose agent has the Agent tool and will hand off if the prompt reads like an orchestration brief. Only athanor is meant to fan out — route multi-part jobs there instead of hoping a leaf agent stays a leaf.