OpenFGA (local)

Fix authorization checks and 503 responses.

If API routes return 503 Service unavailable, OpenFGA is likely not running or OPENFGA_STORE_ID is missing. Apply the model after starting the OpenFGA container.

pnpm run compose:openfga
pnpm run openfga:apply-model

See docs/authz.md for the owner / admin / member model and tuple key format.