Skip to content

fix: stop skipping GHCR publishes for docs-only pushes - #808

Merged
mrubens merged 1 commit into
developfrom
claude/epic-poincare-fea5f1
Jul 27, 2026
Merged

fix: stop skipping GHCR publishes for docs-only pushes#808
mrubens merged 1 commit into
developfrom
claude/epic-poincare-fea5f1

Conversation

@mrubens

@mrubens mrubens commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Problem

The Publish GHCR Images workflow skipped all build jobs for docs-only develop/main pushes. That skip is wrong in two ways:

  1. It ships stale content. Since Ship apps/docs in the app image so setup docs render #754 the app image copies apps/docs into the image — the web server reads setup-flow docs from ../docs at request time — so a "docs-only" change produces a genuinely different app image. The skip predates that change. The classifier also treated every *.md/*.mdx in the repo as docs, even though some markdown (for example workflow SKILL.md sources) is runtime content.

  2. It breaks immutable-tag consumers. A skipped push leaves the commit with no <channel>-<sha8> image tag. pnpm dev derives ghcr.io/roocodeinc/roomote-worker:develop-<first 8 chars of origin/develop> for hosted compute, so after a changelog-only push lands on develop (for example acab6738, where every build/publish job was skipped), Modal sandbox creation fails with an empty "Image build for im-... failed" error and every local task run fails to spawn until the next code push. Verified against the registry: develop-acab6738 returns 404 while develop-4a08f555 and the develop alias return 200.

Fix

Remove the docs-only skip entirely: delete the Classify changed paths step and the docs_only gates on deployment-acceptance, build, and create-github-release. Every develop/main push now builds and publishes, restoring the invariant that every branch commit has a published immutable tag and keeping shipped docs current.

Alternatives considered and dropped:

  • Client-side registry check in pnpm dev (probe GHCR, walk back to the newest published tag): works, but adds machinery to every consumer and leaves the tag gap in place.
  • Retagging the previous image under the new sha for docs-only pushes: fixes the tag gap cheaply, but publishes a stale app image under the new commit's tag, since docs-only changes do affect the app image (caught by review on an earlier revision of this PR).

Tradeoff: changelog-only and docs-only pushes now pay for a full image build. Those pushes are infrequent, and the previous behavior was silently shipping stale docs, so the skip was not a safe optimization to keep.

Validation

  • Workflow YAML parses cleanly; the diff is a pure removal (1 insertion, 54 deletions).
  • No docs_only references remain in the workflow.

@roomote-roomote

roomote-roomote Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

No code issues found. See task

  • .github/workflows/publish-ghcr.yml:408: Do not retag roomote-app for every docs_only push. The app Dockerfile copies apps/docs and builds the web app from it, so a change under apps/docs produces a new app image. This retag publishes the previous app image under the new commit tag and advances the channel alias, leaving the shipped setup-flow docs and docs assets stale. Build and publish the app image when apps/docs/** changes, or restrict this retag to paths that cannot affect it.

Reviewed 6a6203b

@mrubens
mrubens force-pushed the claude/epic-poincare-fea5f1 branch from 7a23293 to 0a86b77 Compare July 27, 2026 03:32
@mrubens mrubens changed the title fix: keep dev worker image pin on a published develop-<sha> tag fix: retag previous GHCR images for docs-only develop/main pushes Jul 27, 2026
The docs-only skip predates shipping apps/docs inside the app image
(#754): the web server now reads setup-flow docs from ../docs at
request time, so a docs-only change produces a genuinely different app
image. The classifier also treated every *.md/*.mdx file as docs, even
though some markdown (for example workflow SKILL.md sources) is runtime
content.

Skipping also left the pushed commit without an immutable
<channel>-<sha> image tag. Consumers that derive those tags from git
history (pnpm dev pins ghcr.io/roocodeinc/roomote-worker:develop-<sha>
for hosted compute) then referenced a tag that does not exist, and
Modal sandbox creation failed for every local task run until the next
code push published a new tag.

Always building restores the invariant that every develop/main commit
has a published immutable tag and keeps shipped docs current, at the
cost of a full image build for changelog-only pushes.
@mrubens
mrubens force-pushed the claude/epic-poincare-fea5f1 branch from 0a86b77 to 6a6203b Compare July 27, 2026 03:38
@mrubens mrubens changed the title fix: retag previous GHCR images for docs-only develop/main pushes fix: stop skipping GHCR publishes for docs-only pushes Jul 27, 2026
@mrubens

mrubens commented Jul 27, 2026

Copy link
Copy Markdown
Contributor Author

Good catch — confirmed: since #754 the app Dockerfile copies apps/docs into the image (the web server reads setup-flow docs from ../docs at request time), so retagging the previous app image under a docs-only commit would ship stale docs. Rather than restricting the retag, the PR now removes the docs-only skip entirely: the skip predates #754 and was already shipping stale docs by never publishing docs-only changes at all. Every develop/main push now builds and publishes.

@mrubens
mrubens merged commit 85e6abb into develop Jul 27, 2026
16 checks passed
@mrubens
mrubens deleted the claude/epic-poincare-fea5f1 branch July 27, 2026 03:41
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