Validate production config, add CI, and build from locked dependencies #78

Merged
ryan merged 1 commits from feat/config-ci into main 2026-10-12 23:27:25 -04:00
Owner

Priority 1 of the application-foundation batch.

  • Startup validation: scripts/validate_config.py fails startup on unsafe or malformed production settings (optional integrations stay optional). startup.sh runs it before migrations, stops if aerich upgrade fails, and execs the app so signals reach it.
  • Compose: forwards the context-budget, timeout and metrics settings; accepts the historical TAVILIY_API_KEY spelling.
  • Docker: multi-stage build from uv.lock (hash-checked export) and yarn.lock; pinned global npm tools.
  • CI (Gitea Actions): Ruff, unit tests, context evaluation, frontend tests, typecheck and build. The frontend job uses yarn: package-lock.json is stale (missing several deps), while yarn.lock is complete.
  • Docs: README, deployment and development docs updated to the current stack.

Validation: 440 unit tests and Ruff on current main; image built locally (docker build) and smoke-checked (aerich, node, uv, frontend dist, Python imports).

🤖 Generated with Claude Code

Priority 1 of the application-foundation batch. - **Startup validation:** `scripts/validate_config.py` fails startup on unsafe or malformed production settings (optional integrations stay optional). `startup.sh` runs it before migrations, stops if `aerich upgrade` fails, and `exec`s the app so signals reach it. - **Compose:** forwards the context-budget, timeout and metrics settings; accepts the historical `TAVILIY_API_KEY` spelling. - **Docker:** multi-stage build from `uv.lock` (hash-checked export) and `yarn.lock`; pinned global npm tools. - **CI (Gitea Actions):** Ruff, unit tests, context evaluation, frontend tests, typecheck and build. The frontend job uses yarn: `package-lock.json` is stale (missing several deps), while `yarn.lock` is complete. - **Docs:** README, deployment and development docs updated to the current stack. Validation: 440 unit tests and Ruff on current main; image built locally (`docker build`) and smoke-checked (aerich, node, uv, frontend dist, Python imports). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
ryan added 1 commit 2026-10-12 23:11:17 -04:00
Validate production config, add CI, and build from locked dependencies
CI / backend (pull_request) Successful in 1m23s
CI / frontend (pull_request) Failing after 37s
CI / backend (push) Successful in 36s
CI / frontend (push) Failing after 7s
de88679f25
- Fail startup on unsafe or malformed production settings (scripts/validate_config.py),
  run it before migrations, and stop on a failed `aerich upgrade`.
- Forward the context-budget, timeout and metrics settings through Compose; accept
  the historical TAVILIY_API_KEY spelling.
- Build the image from uv.lock and yarn.lock in a multi-stage Dockerfile.
- Add Gitea Actions CI: Ruff, unit tests, context evaluation, frontend tests,
  typecheck and build.
- Update README and deployment/development docs to match the current stack.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ryan merged commit 46cac94aa9 into main 2026-10-12 23:27:25 -04:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ryan/simbarag#78