CodeIssuesPull RequestsActionsSecurityInsights
✨ AI
More
Settings

fix(ci): the runner's healthcheck had the same lie as the broker's #5604

MergedXSccantynz wants to mergefix/runner-readinessmainopened 1d ago
ccantynzcommented 1d ago

The broker shipped this morning reporting healthy while unable to reach the docker socket at all, because its /healthz returned a constant "ok" (#5603). Having fixed that, I checked whether anything else on the box had the same shape.

The runner did. Its one external dependency is the shared checkout volume, and without it every step fails with "the ci-work volume must be mounted at the same path on both services" — while the container reports healthy and the deploy goes green.

Now /healthz checks it and answers 503 with the sentence naming the fix.

Checked and deliberately NOT changed: the app

Its /healthz is liveness-only by design and says so, with /readyz doing the database and repo-mount checks — and autoheal correctly watches liveness, so a Neon blip restarts nothing.

That split is right. The lesson does not generalise to "every healthcheck should check everything". The rule it generalises to is narrower:

When a service has exactly one external dependency, "is it up" and "can it reach that dependency" are the same question — and answering the easier one is how a deploy passes while the feature is dead.

One deliberate exception

An unconfigured workdir is still reported healthy. A dev machine runs this agent with no volume at all, and reporting that as broken trains people to ignore the check — which costs more than the check is worth.

Mutation-verified: restoring the constant "ok" fails both tests.

ccantynzAI Reviewcommented 1d ago

AI Triage

(no summary)

Priority: medium Risk area: mixed

Suggested labels: (no label suggestions) Suggested reviewers: (no reviewer suggestions)

Suggestions only — nothing has been applied. The PR author stays in control.

gluecron[bot]🤖 botAI Reviewcommented 1d ago

AI review unavailable

The platform's AI balance is exhausted, so AI generation is temporarily unavailable. Nothing was lost. You can queue this as a repair for the internal agent from the repository's Health page, or try again once the balance is restored. The PR is otherwise unchanged.

Cross-repo impact

See what breaks downstream if this PR merges.

Analyze →
⮌ Merged

This pull request was merged into main.

c comment · e edit title · m merge · a approve · r request changes · ? shortcuts