Self-heals the power-cycle failure where go-fulfillr's gated routes (newsletter/outreach/cases) 404 because a transient boot-time HMAC Secrets Manager fetch left them unregistered, with the process still up so nothing restarts it.
fulfillr.yml + fulfillr-dev.yml: add a podman healthcheck on the containers.podman.podman_container task — wget the new dependency-free /api/v1/health/startup probe (busybox wget ships in the alpine image), interval 30s / timeout 5s / retries 3 / start_period 30s (covers the ~14s HMAC retry backoff so a healthy boot is never flagged), and healthcheck_failure_action: restart (--health-on-failure=restart) so podman restarts the container in place when those routes failed to register. Existing restart_policy: on-failure:3 kept (process-exit case).
main.yml: bump fulfillr + fulfillr-dev image → 20260628.1930 (the go-fulfillr build that adds /health/startup, SCRUM-97 PR #21, merged).
Deploy after merge: make deploy TAGS=fulfillr-dev (verify podman inspect ... Health.Status=healthy), then make deploy TAGS=fulfillr.
Self-heals the power-cycle failure where go-fulfillr's gated routes (newsletter/outreach/cases) 404 because a transient boot-time HMAC Secrets Manager fetch left them unregistered, with the process still up so nothing restarts it.
- `fulfillr.yml` + `fulfillr-dev.yml`: add a podman healthcheck on the `containers.podman.podman_container` task — `wget` the new dependency-free `/api/v1/health/startup` probe (busybox wget ships in the alpine image), `interval 30s / timeout 5s / retries 3 / start_period 30s` (covers the ~14s HMAC retry backoff so a healthy boot is never flagged), and **`healthcheck_failure_action: restart`** (`--health-on-failure=restart`) so podman restarts the container in place when those routes failed to register. Existing `restart_policy: on-failure:3` kept (process-exit case).
- `main.yml`: bump `fulfillr` + `fulfillr-dev` image → `20260628.1930` (the go-fulfillr build that adds `/health/startup`, SCRUM-97 PR #21, merged).
Deploy after merge: `make deploy TAGS=fulfillr-dev` (verify `podman inspect ... Health.Status=healthy`), then `make deploy TAGS=fulfillr`.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
After a power cycle a transient HMAC Secrets Manager blip leaves
go-fulfillr's gated routes unregistered (404) with the process still up,
so nothing restarts it. Add a podman healthcheck probing the new
dependency-free /api/v1/health/startup (503 until those routes register)
with healthcheck_failure_action: restart, so podman restarts the
container in place and the next boot self-heals.
- fulfillr.yml + fulfillr-dev.yml: healthcheck via busybox wget (ships in
the alpine image), interval 30s / timeout 5s / retries 3 /
start_period 30s (covers the ~14s HMAC retry backoff), failure_action
restart. Existing restart_policy on-failure:3 kept (process-exit case).
- main.yml: bump fulfillr + fulfillr-dev image to 20260628.1930 (the
build carrying the /health/startup probe).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
bastian
merged commit 8a5ebb1559 into master2026-06-28 15:35:51 -04:00
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.
Self-heals the power-cycle failure where go-fulfillr's gated routes (newsletter/outreach/cases) 404 because a transient boot-time HMAC Secrets Manager fetch left them unregistered, with the process still up so nothing restarts it.
fulfillr.yml+fulfillr-dev.yml: add a podman healthcheck on thecontainers.podman.podman_containertask —wgetthe new dependency-free/api/v1/health/startupprobe (busybox wget ships in the alpine image),interval 30s / timeout 5s / retries 3 / start_period 30s(covers the ~14s HMAC retry backoff so a healthy boot is never flagged), andhealthcheck_failure_action: restart(--health-on-failure=restart) so podman restarts the container in place when those routes failed to register. Existingrestart_policy: on-failure:3kept (process-exit case).main.yml: bumpfulfillr+fulfillr-devimage →20260628.1930(the go-fulfillr build that adds/health/startup, SCRUM-97 PR #21, merged).Deploy after merge:
make deploy TAGS=fulfillr-dev(verifypodman inspect ... Health.Status=healthy), thenmake deploy TAGS=fulfillr.🤖 Generated with Claude Code