The startup-profile heuristic picks the profile whose state.db is the most
recent and largest, and re-scores on every boot while active-profile.json is
heuristic-owned. Right after the first-run setup chat, the setup profile's
state.db is the freshest, so quitting during setup made every later launch
boot into the setup profile, where chats have only the setup toolsets. Skip
setup then "returned" to it, because the kickoff records the booted profile
as the one to go back to.
The setup profile (the one carrying .setup-profile.json) is no longer a
startup candidate. A heuristic-owned file that already names it is re-scored
on the next boot and repaired.