Surfaced by the self-review on the #196 stack: candylandBaseURL / candylandDashboardURL / candylandLastIdentity (candyland_client.go) are mutable package globals that are correct only when every consumer runs after the single same-goroutine ensureCandylandUp. All current CLI paths respect this, but nothing enforces it — a future concurrent caller or a REST call before ensure would silently target the wrong endpoint.
Fix shape: a candylandEndpointState value returned by ensureCandylandUp and threaded through callers, retiring the globals.
🤖 Generated with Claude Code
Surfaced by the self-review on the #196 stack:
candylandBaseURL/candylandDashboardURL/candylandLastIdentity(candyland_client.go) are mutable package globals that are correct only when every consumer runs after the single same-goroutineensureCandylandUp. All current CLI paths respect this, but nothing enforces it — a future concurrent caller or a REST call before ensure would silently target the wrong endpoint.Fix shape: a
candylandEndpointStatevalue returned byensureCandylandUpand threaded through callers, retiring the globals.🤖 Generated with Claude Code