Skip to content

fix(agent-image): broken runtime venv + invalid smoke workflow YAML - #66

Merged
stubbi merged 4 commits into
mainfrom
ci/fix-agent-image-smoke-yaml
Jun 13, 2026
Merged

fix(agent-image): broken runtime venv + invalid smoke workflow YAML#66
stubbi merged 4 commits into
mainfrom
ci/fix-agent-image-smoke-yaml

Conversation

@stubbi

@stubbi stubbi commented Jun 10, 2026

Copy link
Copy Markdown
Collaborator

Summary

Three layered defects, each hiding the next:

  1. Invalid workflow YAML: four step names in agent-image-smoke.yaml had 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.
  2. Smoke step could never pass: the --help check ran through hermes-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.
  3. The published agent image is broken (the bug the smoke test exists to catch): the builder stage set VIRTUAL_ENV=/opt/venv, but uv sync ignores VIRTUAL_ENV and targets the project environment (.venv) unless UV_PROJECT_ENVIRONMENT is set. The locked packages were installed into /build/.venv while the empty /opt/venv was copied into the runtime stage — so the image has no hermes-agent executable at all (exec: "hermes-agent": executable file not found in $PATH). Fixed by setting UV_PROJECT_ENVIRONMENT=/opt/venv. Reproduced the uv behavior with a minimal project locally.

Implications

Any ghcr.io/paperclipinc/hermes-agent tag built from this Dockerfile is non-functional (empty venv) and should be rebuilt/republished after this merges. Tags predating this Dockerfile (e.g. the v0.13.0 used by e2e fixtures) are unaffected.

Test Plan

  • Workflow YAML parses (yaml.safe_load)
  • uv VIRTUAL_ENV-ignore behavior reproduced locally with a minimal project (deps land in .venv, target venv stays empty)
  • Smoke job on this PR: build succeeds, --help exits 0 via the CLI, entrypoint still exits 78 without config, UID 1000

🤖 Generated with Claude Code

stubbi added 3 commits June 10, 2026 14:00
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 stubbi changed the title ci: quote step names with colons in agent-image-smoke workflow fix(agent-image): broken runtime venv + invalid smoke workflow YAML Jun 10, 2026
@stubbi
stubbi merged commit ec6016c into main Jun 13, 2026
13 of 14 checks passed
@stubbi
stubbi deleted the ci/fix-agent-image-smoke-yaml branch June 13, 2026 17:41
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant