Check follow-ups.
- onboarding.ensure_setup_session is back. It creates or finds the
setup chat by title, so every call returns the same chat and whether
it is empty. It takes optional seed messages and writes them only
into an empty chat.
- The kickoff now seeds through it instead of its own titled
session.create, and adopts a title hit only when it has messages. An
empty row no longer breaks the title lookup; the kickoff seeds it.
- The setup config no longer lists "start_chat" in
platform_toolsets.cli. The toolset does not exist on this branch, so
config validation and CLI startup warned about an unknown toolset.