-- Path B for loops (P2): give every enabled loop its own per-loop team -- container so scheduled runs don't share state / memory with other loops -- or with the research pipeline. Two nullable columns: -- -- zeroclaw_container — deterministic docker container name; NULL -- until the first `run_now` / `webhook_receive` -- / scheduler tick spawns one, set + reused -- on subsequent fires. -- zeroclaw_gateway_url — http://:42617; topology_worker -- prefers this over the workspace-wide URL when -- the run belongs to a loop with a spawned -- container. -- -- Fallback semantics match research: NULL means "no per-loop container -- yet, use the env-derived executor". Never-spawned loops (e.g. from -- workspaces where docker isn't reachable) keep firing on the shared -- gateway — degraded, not broken. ALTER TABLE loops ADD COLUMN zeroclaw_container TEXT, ADD COLUMN zeroclaw_gateway_url TEXT;