fix(agent-image): broken runtime venv + invalid smoke workflow YAML - #66
Merged
Conversation
Unquoted colons in four step names made the file invalid YAML, so GitHub logged a failed workflow run on every push since the file landed, and the smoke test itself never ran.
The entrypoint exits 78 without a mounted config for every command, so the --help check can only run against the CLI directly. The entrypoint contract itself stays covered by the dedicated EX_CONFIG step.
uv sync ignores VIRTUAL_ENV and targets the project environment (.venv) unless UV_PROJECT_ENVIRONMENT is set, so the runtime stage copied an empty venv and the published image had no hermes-agent executable on PATH. The smoke workflow exists to catch exactly this but never ran due to its invalid YAML (fixed in this PR).
stubbi
pushed a commit
that referenced
this pull request
Jun 16, 2026
🤖 I have created a release *beep* *boop* --- ## [0.1.15](v0.1.14...v0.1.15) (2026-06-16) ### Features * **chart:** world-class Artifact Hub metadata + cosign chart signing ([#78](#78)) ([4e38216](4e38216)) ### Bug Fixes * **agent-image:** broken runtime venv + invalid smoke workflow YAML ([#66](#66)) ([ec6016c](ec6016c)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: paperclip-release-bot[bot] <288053502+paperclip-release-bot[bot]@users.noreply.github.com>
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.
Summary
Three layered defects, each hiding the next:
agent-image-smoke.yamlhad unquoted colons, so the file never parsed. GitHub logged a failed run on every push to every branch since June 4, and the smoke test never executed. Fixed by quoting the step names.--helpcheck ran throughhermes-entrypoint, which exits 78 for every command when no config is mounted (intended behavior, covered by the dedicated EX_CONFIG step). Fixed by bypassing the entrypoint for that one step.VIRTUAL_ENV=/opt/venv, butuv syncignoresVIRTUAL_ENVand targets the project environment (.venv) unlessUV_PROJECT_ENVIRONMENTis set. The locked packages were installed into/build/.venvwhile the empty/opt/venvwas copied into the runtime stage — so the image has nohermes-agentexecutable at all (exec: "hermes-agent": executable file not found in $PATH). Fixed by settingUV_PROJECT_ENVIRONMENT=/opt/venv. Reproduced the uv behavior with a minimal project locally.Implications
Any
ghcr.io/paperclipinc/hermes-agenttag built from this Dockerfile is non-functional (empty venv) and should be rebuilt/republished after this merges. Tags predating this Dockerfile (e.g. thev0.13.0used by e2e fixtures) are unaffected.Test Plan
yaml.safe_load)VIRTUAL_ENV-ignore behavior reproduced locally with a minimal project (deps land in.venv, target venv stays empty)--helpexits 0 via the CLI, entrypoint still exits 78 without config, UID 1000🤖 Generated with Claude Code