Ultimate

X_TENANT_LEAK

Means

another tenant's row reached a call's output or effect

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), before A's own call or after it, and a canary seeded into A's rows, or an id of A's that B was not handed, came back in its output or an effect (a mail, an outbound body, an enqueued job's input) — by an id B chose, or by a statement no tenant predicate scopes. The finding names the path

Fix

x exercise <name> --json — then read the row behind the named path through the repository scoped to ctx.actor, never by the input id alone, nor by an unscoped statement

Listed under Testing

This page as markdown