Pulp Engine v0.48.0 — Release Notes
Superseded by v0.48.1. The v0.48.0 Docker images were never published to GHCR due to a build failure. See release-v0.48.1.md for the patch that fixed the build and shipped.
This release finishes the packaging and evaluator-readiness pass that started in v0.47.0. The product now presents a cleaner first-run experience, stronger container metadata, a reusable smoke-test path, and a clearer release/readiness surface for operators and evaluators.
What changed
1. Container metadata and release artifacts
All three published images now include richer OCI metadata:
org.opencontainers.image.vendororg.opencontainers.image.createdorg.opencontainers.image.licensesorg.opencontainers.image.urlorg.opencontainers.image.documentation
The release workflow now computes a build timestamp and applies the same label set consistently to the main API image, the worker image, and the controller image.
2. Compose files now work without manual placeholder edits
The evaluator compose files no longer require replacing OWNER and vX.Y.Z
before they are usable. They now default to the public GHCR images via env-var
substitution:
PULP_ENGINE_IMAGEPULP_ENGINE_CONTROLLER_IMAGEPULP_ENGINE_WORKER_IMAGE
Pinned-version and local-image override examples are documented inline in the compose files.
3. Build-and-run Docker smoke coverage
CI now does more than build the Docker image. The Docker smoke job:
- builds the main image locally
- starts it in file mode
- waits for health
- runs
scripts/smoke-test.sh - verifies the bundled editor route and an authenticated render path
This closes the gap where packaging regressions could previously survive until a tag-time release build.
4. Health endpoints expose application version
Both health endpoints now include a version field:
GET /healthGET /health/ready
The field is wired through the TypeBox schemas, Fastify/OpenAPI generation,
runtime handlers, tests, and API docs. The value comes from
process.env.APP_VERSION ?? package.json version, so container builds and local
source runs stay aligned.
5. Documentation and release surface
- New root
CHANGELOG.mdseeded with milestone releases - README restructured to lead with Docker Compose evaluation flows
- Deployment guide gains a quick-reference compose matrix near the top
- API guide health examples updated to reflect the new
versionfield
Validation
CI-verified — all CI jobs passed on the release commit:
ci (postgres), test-file-mode, test-sqlserver, test-e2e, test-e2e-auth, docker-build-smoke.
Locally verified:
pnpm lint— 0 errorspnpm typecheck— cleanpnpm --filter @pulp-engine/api test -- metrics.test.ts— passed (exercised newversionfield in health response)pnpm --filter @pulp-engine/api test -- server-editor.test.ts— passed (exercised bundled editor static route)node scripts/check-version.mjs— passed
Not verified:
- SQL Server storage path — no local instance; CI-covered by
test-sqlserverjob - E2E suites — CI-covered by
test-e2eandtest-e2e-authjobs - Deployment rehearsal — not performed; no migration or breaking config change in this release
Upgrade
No breaking API, auth, or storage changes are introduced in this release.
GET /health and GET /health/ready now return an additional version field.
Clients that ignore unknown fields are unaffected; any schema-strict consumers
should update their response contracts.
# v0.48.0 images were never published — use v0.48.1 instead:
docker pull ghcr.io/troycoderboy/pulp-engine:v0.48.1
docker pull ghcr.io/troycoderboy/pulp-engine-worker:v0.48.1
docker pull ghcr.io/troycoderboy/pulp-engine-controller:v0.48.1