Version: 0.1.68 (release dmg), Claude Code backend.
What happened
A leader goal loop fanned out five children (all --type goal, none with --predicate). Every child finished its item, posted a RESULT to the Mailroom, and the leader merged, ticked the backlog, pushed with CI green and posted a CLOSING note. Forty minutes later every one of the six cards still reads IDLE; none ever became SUCCEEDED, no edge downstream of a child would have fired, and six claude sessions (~2 GB RSS) stayed resident until deleted by hand.
The briefing text says a goal loop without a predicate resolves when "finishing the work is what resolves it" — that is not what the daemon does. graphcode status agreed: idle goalBased ×6.
Why it matters for a first-time user
Suggested fix
Treat a predicate-less goal loop as resolved when its backend session ends its turn after the /goal condition has been satisfied (Claude Code already reports this through the Stop hook), or when the loop itself posts a result / calls a graphcode node done verb. Show SUCCEEDED on the card and free the session by policy (keep transcript, end the PTY).
Version: 0.1.68 (release dmg), Claude Code backend.
What happened
A leader goal loop fanned out five children (all
--type goal, none with--predicate). Every child finished its item, posted a RESULT to the Mailroom, and the leader merged, ticked the backlog, pushed with CI green and posted a CLOSING note. Forty minutes later every one of the six cards still reads IDLE; none ever became SUCCEEDED, no edge downstream of a child would have fired, and sixclaudesessions (~2 GB RSS) stayed resident until deleted by hand.The briefing text says a goal loop without a predicate resolves when "finishing the work is what resolves it" — that is not what the daemon does.
graphcode statusagreed:idle goalBased×6.Why it matters for a first-time user
/goalstop hook keeps the Claude session alive, so "done" from the agent's own point of view is also invisible.Suggested fix
Treat a predicate-less goal loop as resolved when its backend session ends its turn after the
/goalcondition has been satisfied (Claude Code already reports this through the Stop hook), or when the loop itself posts a result / calls agraphcode node doneverb. Show SUCCEEDED on the card and free the session by policy (keep transcript, end the PTY).