Files
morgmartandClaude 877a618278 fix(onboarding): let Fizz's live callback close the Welcome kickoff
The kickoff scripted a closer and assumed it was the last word. It never
could be: the teammate intros `@mention` Fizz, which is the mandatory
delegator callback in base_prompt.md, so Fizz is guaranteed to wake and
reply after them. The choreography and the base prompt were fighting, and
the user got two CTAs.

The scripted one was also the one that could be wrong. It raced the intros
on an 18s stopwatch (15s wait + 3s beat) — well under a real agent turn, so
it reliably announced "Honey and Bumble are taking longer than expected"
seconds before both intros landed. Fizz's live reply was better: contextual,
and right about the state of the world.

So let the guaranteed message be the close, and keep the script for
problems only:

- buildWelcomeKickoffCloser returns null for a clean kickoff. Failure
  variants are unchanged and still carry the CTA, where the user needs both
  the bad news and a way forward.
- Enforce the null inside sendWelcomeKickoffCloser rather than at the two
  call sites, so the delayed-teammate timer can't emit a bare CTA after the
  intros land and re-classify the kickoff as clean.
- TEAMMATE_INTRO_WAIT_MS 15s -> 60s. This only covers a teammate that is
  alive but silent, where waiting is correct; a crashed teammate is read
  from agent status and still closes immediately.

The closer marker was quietly doubling as the durable "kickoff finished"
signal, and a marker requires a message to exist — so "success posts
nothing" would have meant "success never latches", refetching the opener
subtree forever and restarting the whole Welcome team on every revisit.
welcomeKickoffAlreadyFinished now accepts a second piece of relay-side
evidence: an intro from every teammate in the opener's thread. The marker
still short-circuits first, so the failure paths and the solo opener are
untouched.

Verified live against Codex on 2026-07-18 with the base prompt as the only
variable: the intro loop terminated on its own at four replies.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-18 15:53:49 -07:00
..