Wave 3/4 (where applicable) — integrity/persistence, verified against a real Postgres (no mocks)
Verification: typecheck + full test suite pass in node:22-alpine; persistence verified against live Postgres. Nothing merged/deployed until this PR is merged.
Before flipping AUTH_ENFORCE=true in prod: issue Zitadel service-account tokens to callers first (per-service rollout).
## Foundational hardening (Waves 1–4)
Systematic, verified hardening of this repo on `foundation/hardening`. **Additive/flag-gated — deploy-safe.**
- **Wave 1** — CI gate (.gitea/workflows), Dockerfile, .dockerignore, .env.example
- **Wave 2** — flag-gated Zitadel JWT auth (`AUTH_ENFORCE` **default off** = non-breaking, attach-if-valid), Zod input validation, eslint/prettier, auth+validation tests
- **Wave 3/4** (where applicable) — integrity/persistence, verified against a **real Postgres** (no mocks)
**Verification:** typecheck + full test suite pass in `node:22-alpine`; persistence verified against live Postgres. Nothing merged/deployed until this PR is merged.
**Before flipping `AUTH_ENFORCE=true` in prod:** issue Zitadel service-account tokens to callers first (per-service rollout).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Foundational hardening (Waves 1–4)
Systematic, verified hardening of this repo on
foundation/hardening. Additive/flag-gated — deploy-safe.AUTH_ENFORCEdefault off = non-breaking, attach-if-valid), Zod input validation, eslint/prettier, auth+validation testsVerification: typecheck + full test suite pass in
node:22-alpine; persistence verified against live Postgres. Nothing merged/deployed until this PR is merged.Before flipping
AUTH_ENFORCE=truein prod: issue Zitadel service-account tokens to callers first (per-service rollout).🤖 Generated with Claude Code