X_TENANT_WRITE_CROSSED
Means
a call by one tenant changed another tenant's row
Typical cause
the exercise pass called a primitive as tenant B with A's own input (A's ids bound in, where it takes any), and a row seeded for A hashed differently after B's call, or was gone — by an id B chose, or by a statement no tenant predicate scopes. Never on a tenant: 'none' job handed none of A's ids: its run is the same whoever enqueues it. The finding names the table and the row's id
Fix
x exercise <name> --json — then write the named row through the repository scoped to ctx.actor, never by the input id alone, nor by an unscoped statement