Build the image CI has never built - #29
Merged
Merged
Conversation
`docker compose up app` is the first instruction in the README, and the website and the organisation profile both print it. Nothing in CI built that image, so a green tick said nothing about whether it still works. Not hypothetical. The base bump from python:3.12-slim to 3.14-slim merged with a green tick that could not have caught a broken build. It turned out fine, which was luck rather than verification. The check goes past liveness. /health only proves uvicorn started; /v1/stats reports corpus statistics, so a successful call proves the corpus shipping inside the image is actually readable - which is what the offline promise rests on. An empty corpus fails the step rather than passing quietly. Wired into the aggregate CI job, so branch protection covers it without a second required context.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
docker compose up appis the first instruction in the README, and the website and the organisation profile both print it. Nothing in CI built that image, so a green tick said nothing about whether it still works.Not hypothetical. The base bump from
python:3.12-slimto3.14-slim(#13) merged with a green tick that could not have caught a broken build — the jobs are lint, tests, and package build. It turned out fine because theapiextra resolves on 3.14, which I checked by hand at the time. That check should not have to be done by hand.What the job does
Builds the image, starts it, and then goes past liveness:
/health— proves uvicorn came up;GET /v1/stats— proves the corpus that ships inside the image is readable, which is what the offline promise rests on. An empty corpus fails the step rather than passing quietly.PRAXIS_OFFLINE=1is already set in the image, so none of this needs a key, a GPU or the network. The wait is 90s because first start parses the corpus, and container logs are dumped on failure.Wired into the aggregate
cijob, so branch protection covers it without adding a second required context.Verified
YAML parses; job graph is
lint, test, build, docker, ciwith the aggregate requiring all four. Routes confirmed againstsrc/praxis/api/app.py— the endpoint is/health, not/healthz, and/v1/statsis a GET on thev1router.