Skip to content

CI never builds or boots the app image — packaging/runtime bugs slip through #84

Description

@JumpTechCode

Summary

CI runs the app from a host virtualenv (pip install -e ".[dev]") and compose only starts postgres/redis/kafka — the app image is never built or booted in CI. The non-editable production image therefore has no automated coverage, and two real bugs reached main because of it:

Both are invisible to the source-tree test suite (the files exist in the checkout) and to a build_app() import smoke (the crash is in the lifespan). Only a real container boot surfaces them.

Proposed fix

Add a CI job (PR or nightly) that:

  1. docker builds the image, then runs it and asserts /healthz (or /readyz) — i.e. the lifespan actually starts (load_settings() + PromptBundle.load succeed).
  2. Optionally runs the README "See it run" demo end-to-end against the built image as a contract test (matches the CLAUDE.md quality bar: "docker compose up boots the entire stack … returns a diagnosis … CI-verified contract").

Cost: a Docker build per run (the embedding-model preload dominates; cache it). Nightly is a reasonable cadence if per-PR is too slow.

Related, smaller

make compose-up is docker compose up -d --wait with no --build, so re-running after code changes silently reuses a stale app image. Consider --build (or a make compose-rebuild) and/or a README note.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions