Commit 39ef52c
## Problem
Every `HermesInstance` fails to reach `Ready` because the operator's
`init-uv` init container is incompatible with the published
`ghcr.io/paperclipinc/hermes-agent` image (issue #68, confirmed by
multiple users).
`internal/resources/runtime_init.go` renders:
```
set -eu; cd /home/hermes/.hermes; \
cp /opt/venv-template/pyproject.toml /opt/venv-template/uv.lock .; \
uv sync --frozen
```
…but `images/hermes-agent/Dockerfile` builds the venv at `/opt/venv` and
copies **nothing** to `/opt/venv-template/`. So `init-uv` exits 1:
```
cp: cannot stat '/opt/venv-template/pyproject.toml': No such file or directory
```
…the `hermes` container never starts, the StatefulSet never reaches
`readyReplicas == replicas`, and the instance never becomes
`Ready=True`.
## Fix
Add one `COPY` to the runtime stage shipping the lockfile + project
metadata at `/opt/venv-template/`, exactly where the operator's contract
expects them. The files already exist at `/build/` in the builder stage.
## Scope
Minimal, surgical fix — Dockerfile only. No change to the
build/sign/SBOM/multi-arch pipeline.
## Follow-up
Once a fixed agent image is republished, un-skip the `#68`-gated specs
in `test/conformance/idempotency_test.go`
(`idempotencyImageContractSkip`).
Fixes #68
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent b287bad commit 39ef52c
1 file changed
Lines changed: 9 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
87 | 87 | | |
88 | 88 | | |
89 | 89 | | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
90 | 99 | | |
91 | 100 | | |
92 | 101 | | |
| |||
0 commit comments