Submit an issue View all issues Source
MIR-820

Saga sandbox controller panics on entity ID when creating sandbox

Done Bug public
phinze phinze Opened Mar 13, 2026 Updated Mar 13, 2026

Bug

When running with --labs sagas, the saga sandbox controller panics when trying to create a sandbox. The entity store rejects the saga's persisted state because the ID is passed as a raw string instead of being wrapped with entity.Id().

Error

panic in RPC handler: "entity has db/id attribute with value
create-sandbox-sandbox/bb-go-server-2cae7a-web-CZ1kpRRoP9gMLrUHuE3Qs
(kind String) but it is not recognized as an Id — use entity.Id() to wrap the value"

Impact

Every sandbox creation fails immediately via the saga path — the sandbox is marked DEAD before it ever starts. This means no apps can start when sagas are enabled.

Repro

  1. Start server with --labs sagas
  2. Deploy any app (e.g. miren deploy -a test -d testdata/go-server)
  3. App will show as "crashed" — sandbox never starts

Root cause

In the saga sandbox controller, when persisting initial saga state via EnsureAndCheck, the saga entity ID (e.g. create-sandbox-sandbox/...) is constructed as a plain string rather than wrapped with entity.Id().

Goal

Full blackbox test suite passing with --labs sagas enabled:

DEV_SERVER_FLAGS="--labs sagas" make dev-server-restart
make test-blackbox