Skip to content

fix: smoke test reads container output; run smoke on PRs - #9

Merged
barryroodt merged 2 commits into
mainfrom
fix-smoke-host-read
Jul 17, 2026
Merged

fix: smoke test reads container output; run smoke on PRs#9
barryroodt merged 2 commits into
mainfrom
fix-smoke-host-read

Conversation

@barryroodt

Copy link
Copy Markdown
Owner

Follow-up to #7. The v0.1.4 release run's smoke job failed: test 1 (model-ready) passed, but test 2 read /work/.refine/log.json from the host after the container run and hit EACCES — the container writes output as root, which a non-root CI runner can't read (Docker Desktop masks this on Mac; real Linux users hit it too).

Fix

  • Assert on the container's own stdout markers (preparing shadow worktree + done: stop_reason=) plus exit ∈ {0,1}, instead of reading the root-owned bind-mount file. Still proves the shadow/git path is sound (a dubious-ownership abort exits with another code and never prints done:).
  • Run the smoke test inside the existing image build (smoke) ci.yml job, so it's validated on every PR (including release PRs). A smoke failure can no longer slip through post-merge and leave a phantom release tag.

Locally validated: container exits 1 (max_iterations) and prints both markers.

Follow-up (noted, not in scope here)

On Linux, docker run writes refined output as root into the user's dir. Worth a --user/chown pass in the CLI later; tracked separately.

After merge, release-please cuts 0.1.5, which finally publishes everything (models + pi 0.80.8 + shadow fix) to npm + GHCR. (v0.1.3/v0.1.4 were tagged by earlier failed runs but published nothing; I'll drop those GitHub Releases.)

The image smoke test read /work/.refine/log.json from the host after the
container run, but the container writes it as root, so a non-root CI runner
(and real Linux users) hit EACCES. Assert on the container's own stdout
markers ('preparing shadow worktree' + 'done: stop_reason=') instead, which
still proves the shadow/git path is sound without reading root-owned files.

Also run the smoke test in the ci.yml 'image build (smoke)' job so it is
validated on every PR (including release PRs) — a smoke failure can no
longer slip through and leave a phantom release tag.
fs.rmSync failed with EACCES trying to unlink the container's root-owned
.refine/log.json from the non-root host. Wrap cleanup in try/catch; the
ephemeral CI runner reclaims the temp dir regardless.
@barryroodt
barryroodt merged commit f358101 into main Jul 17, 2026
5 checks passed
@barryroodt
barryroodt deleted the fix-smoke-host-read branch July 17, 2026 08:40
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