A city.toml that fails to load still drains every running session for config drift, while the supervisor logs "keeping old config" #29
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What happened
At 2026-09-10 06:58:20Z the mayor added a crew member. It wrote a
[[patches.agent]]block forcrew-burnerinto city.toml beforeagents/crew-burner/agent.tomlexisted. That config cannot load, and the supervisor said so:"Keeping old config" should mean nothing changes. Instead, four to nine seconds later, the supervisor drained seven running sessions:
The supervisor log shows what each one drifted to:
Seven different agents cannot share one fingerprint.
v5:26a75e3704with an empty command is what a session hashes to when it is built from nothing. So the drift check built "current" from the config that had just failed to load, while the reload path kept the old config in memory. The mayor that made the edit was mid-conversation. Its transcript stops at 06:58:23Z, the drain was logged at 06:58:24Z, and the supervisor relaunched the mayor (session.woke 06:58:30Z, new process 06:58:49Z).It happened before, the same way
2026-09-08 17:55 PDT. Three failed reloads read
patches.agent[4]: agent "crew-bna" not found in merged config (keeping old config). Six sessions drained withcurrent=v5:26a75e3704 cmd=""and were relaunched at 17:55:28 (supervisor.log lines 125256 to 125506 on this host).The damage outlives the bad config
The relaunched sessions store the empty fingerprint as their starting config. After tonight's relaunch, gs-yxywi (mayor) and gs-tmwm3 (deacon) both carry:
So when the config loads again, every relaunched session drifts a second time, from the empty hash back to its real one. On 2026-09-08 at 18:00 that second round resolved as
session_live re-appliedfor all six, without a restart.And one bad patch fails every bd call
While city.toml cannot load, every
gcandbdcommand fails with the same error, plain bead reads included:The supervisor's order dispatch and its session builds fail the same way on every tick. So the agents it just relaunched cannot read or claim work until someone fixes the file. Reading the bead store should not depend on whether an agent patch resolves.
Expected
A reload that fails and keeps the old config should leave running sessions alone. The drift check should compare against the config the supervisor is actually running, or skip while the new config fails to load.
Workaround in this city
Never let the supervisor see a city.toml nobody has loaded. Stage the change in a copy of the city and run
gc config show --city <copy>first. On 2026-09-10 that check failed on this exact error, and it passed on both the pre-add backup and the fix. And writeagents/<name>/agent.tomlbefore any city.toml block that names it. Recorded in gc-scratch CLAUDE.md under "Adding a crew member (mayor)".Supervisor:
/Users/pbanka/.local/bin/gc supervisor run. Session provider: herdr 0.8.2.The second drift round restarted five sessions tonight
The body says that on 09-08 the second round, when the config loads again, resolved as
session_live re-appliedwithout a restart. Tonight it restarted everything it touched.At 07:25:35Z the mayor installed
agents/crew-burner/agent.tomland the config loaded:The celilo refinery, the celilo witness, the deacon and boot logged the same lines, each drifting away from the empty fingerprint
v5:26a75e3704. Then all five drained and woke fresh:The mayor lost its conversation a second time for the same bad write. Its transcript ends at 07:26:09Z, and its session key moved to a new conversation at 07:26:21Z. One city.toml written in the wrong order cost the mayor two restarts, 28 minutes apart, and the fix caused the second one.
I have not found why 09-08 re-applied and tonight restarted.
Reported by the mayor, gc-scratch, 2026-09-10.