feat(max2): worker-flows ontsleutelen de scrum4me_worker-DB-env vóór de recreate (ISS-13) #89

Merged
janpeter merged 1 commit from feat/worker-db-env into master 2026-09-28 00:20:59 +02:00
Owner

max2 ISS-13 / PBI-7 / ST-017 (T-43), ADR worker-db-rol route A. De rol scrum4me_worker bestaat al op 154 (Ops-dashboard #256); het wachtwoord staat in /srv/scrum4me/secrets/worker-db.env.sops, versleuteld voor 154 en max2.

Wijziging (baseline max2-workflows):

  • decrypt_worker_db_env: sops ontsleutelt dotenv naar worker-db.env via tmp en mv, met umask 027.
  • De stap staat in redeploy_all_workers, redeploy_workers en redeploy_codex_worker, na de builds en vóór de eerste recreate. Een mislukte decrypt breekt af voordat er iets verstoord raakt.
  • Nieuwe flow refresh_worker_db_env: decrypt, recreate en health-wait zonder git-sync of rebuild, voor rotatie.
  • Compose (live, geen git) krijgt /srv/scrum4me/secrets/worker-db.env als laatste env_file voor worker-idea en agent-codex. Dat wordt toegepast bij de uitrol.

Tests:

  • __tests__/worker-db-env.test.ts (6) plus de bestaande wait- en deployment-hardening-tests: 38/38 groen. Zonder de baseline-wijziging zijn 6 van de 6 rood.
  • De command-string uit de YAML is als ops-agent op max2 uitgevoerd: exit 0, worker-db.env staat op 0640 ops-agent en bevat beide URL's.

🤖 Generated with Claude Code

max2 **ISS-13** / PBI-7 / ST-017 (T-43), ADR `worker-db-rol` route A. De rol `scrum4me_worker` bestaat al op 154 (Ops-dashboard #256); het wachtwoord staat in `/srv/scrum4me/secrets/worker-db.env.sops`, versleuteld voor 154 en max2. **Wijziging (baseline max2-workflows):** - `decrypt_worker_db_env`: sops ontsleutelt dotenv naar `worker-db.env` via tmp en mv, met `umask 027`. - De stap staat in `redeploy_all_workers`, `redeploy_workers` en `redeploy_codex_worker`, **na de builds en vóór de eerste recreate**. Een mislukte decrypt breekt af voordat er iets verstoord raakt. - Nieuwe flow `refresh_worker_db_env`: decrypt, recreate en health-wait zonder git-sync of rebuild, voor rotatie. - Compose (live, geen git) krijgt `/srv/scrum4me/secrets/worker-db.env` als laatste `env_file` voor worker-idea en agent-codex. Dat wordt toegepast bij de uitrol. **Tests:** - `__tests__/worker-db-env.test.ts` (6) plus de bestaande wait- en deployment-hardening-tests: 38/38 groen. Zonder de baseline-wijziging zijn 6 van de 6 rood. - De command-string uit de YAML is als `ops-agent` op max2 uitgevoerd: exit 0, `worker-db.env` staat op 0640 ops-agent en bevat beide URL's. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(max2): worker-flows ontsleutelen de scrum4me_worker-DB-env vóór de recreate
All checks were successful
CI / Compose config (pull_request) Successful in 8s
CI / Build-arg coverage (pull_request) Successful in 9s
CI / Docker build (pull_request) Successful in 10s
0d370d93af
max2 ISS-13 (ADR worker-db-rol, route A): de workers loggen voortaan in als
scrum4me_worker. De DB-URL's staan sops-versleuteld in
/srv/scrum4me/secrets/worker-db.env.sops; compose laadt de ontsleutelde
worker-db.env als laatste env_file.

- commands.yml: decrypt_worker_db_env (sops -d dotenv, umask 027, tmp + mv).
- redeploy_all_workers, redeploy_workers, redeploy_codex_worker: ontsleutelen na
  de builds en vóór de eerste recreate; een mislukte decrypt breekt af vóór
  enige verstoring, en elke redeploy neemt een geroteerd geheim mee.
- refresh_worker_db_env: nieuwe flow voor env-only wijzigingen (rotatie):
  decrypt → recreate → health-wait, zonder git-sync of rebuild.

Tests: __tests__/worker-db-env.test.ts (6), rood zonder de baseline-wijziging.
De command-string is als ops-agent op max2 uitgevoerd: exit 0, 0640.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
s4m-codex-reviewer left a comment

Verdict: APPROVED

  • Geen findings met blocker-, error- of comment-severity.
  • De decrypt-stap gebruikt een restrictieve umask en tmp + mv, breekt de flow af bij decrypt-falen en staat consequent na de laatste build en vóór de eerste recreate.
  • De toegevoegde Vitest-dekking controleert het geheim-pad, de vereiste volgorde en de env-only refresh-flow.

Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.

## Verdict: APPROVED - Geen findings met blocker-, error- of comment-severity. - De decrypt-stap gebruikt een restrictieve umask en tmp + `mv`, breekt de flow af bij decrypt-falen en staat consequent na de laatste build en vóór de eerste recreate. - De toegevoegde Vitest-dekking controleert het geheim-pad, de vereiste volgorde en de env-only refresh-flow. Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.
janpeter merged commit 7174563a92 into master 2026-09-28 00:20:59 +02:00
janpeter deleted branch feat/worker-db-env 2026-09-28 00:20:59 +02:00
Sign in to join this conversation.
No reviewers
No labels
severity/s3
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
janpeter/scrum4me-docker!89
No description provided.