Skip to content

ci: build once, gate the digest, promote what was tested (RT#1550) - #40

Merged
fatherlinux merged 2 commits into
mainfrom
feat/container-release
Nov 11, 2026
Merged

fatherlinux merged 2 commits into
mainfrom
feat/container-release

Conversation

@fatherlinux

Copy link
Copy Markdown
Member

Summary

  • Gate: boot: healthcheck (the Containerfile HEALTHCHECK, openclaw health) with a minimal gateway config from tests/image/home mounted at ~/.openclaw as production does (overlay mount), plus the existing RT#1534 OpenRouter private-network smoke test as contract-test. Both run against the pushed digest. Locally the healthcheck passes on the built image and is REFUSED without the config; the smoke test passes.
  • Removed: build.yml (dual Quay/GHCR push, scan-by-rebuild) and the dispatch-only weekly-rebuild.yml; replaced by one container.yml with a Monday weekly schedule. security.yml (scans the published :latest, no rebuild) is kept.
  • GHCR cleanup: workflows and .specify/memory/constitution.md no longer mention it; .gemini/styleguide.md had no such lines.
  • Constitution v1.31.0 -> v1.39.1 (Inherits: and the validate and dependabot-automerge pins); validator PASS.
  • LATEST_SEMANTICS: unchanged (:latest already moved only on v* tags since constitution 1.33.0).

Test plan

  • local gate: python3 container_release.py boot --image localhost/openclaw:gate --profile healthcheck --run-args '-v ./tests/image/home:/app/.openclaw:O' -> healthy; smoke test PASS: private baseUrl blocked without opt-in
  • PR run: build, gates, mark green

🤖 Generated with Claude Code

https://claude.ai/code/session_01R7Y1jh5QhdxRuFKyWVev5h

Replace build.yml (dual Quay/GHCR push, scan-by-rebuild) and the dispatch-only weekly-rebuild.yml with one container.yml calling constitution container-release.yml v1.39.1. Gate: boot=healthcheck (the Containerfile HEALTHCHECK, openclaw health, with a minimal gateway config mounted at ~/.openclaw from tests/image/home) plus the existing RT#1534 OpenRouter private-network smoke test as contract-test, both run against the pushed digest. Proven locally: passes on the built image, REFUSED without the config. Drops GHCR everywhere; Quay only. Moves Inherits and all constitution workflow pins from v1.31.0 to v1.39.1.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gatehouse found 1 issues (1 critical)

Full review.

1 finding(s) dropped: their evidence is not in the diff.

Comment thread .github/workflows/container.yml Outdated
push:
branches: [main]
tags: ["v*"]
schedule:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CRITICAL (Constitution): The constitution explicitly requires the weekly rebuild to be triggered by workflow_dispatch pulsed by Hermes, not by a schedule: trigger. This adds a scheduled weekly trigger.

Suggestion: Remove the schedule: trigger and have Hermes invoke the workflow through workflow_dispatch.

Evidence:

  schedule:
    - cron: "17 5 * * 1"

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed: the schedule: trigger is gone. The weekly rebuild stays a workflow_dispatch pulsed by Hermes, as the constitution says.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed in 381bb58: the schedule trigger is removed; the weekly rebuild stays a Hermes-pulsed workflow_dispatch, which the release workflow gates like any build.

The repo's constitution says the weekly rebuild is a workflow_dispatch
pulsed by Hermes, not a schedule: trigger. The conversion had added one.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01R7Y1jh5QhdxRuFKyWVev5h

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gatehouse found no issues.

Reviewed 1 commit since 72c6712 (incremental).

2 finding(s) dropped: their evidence is not in the diff.

@fatherlinux
fatherlinux merged commit f7c2caa into main Nov 11, 2026
22 of 25 checks passed
@fatherlinux
fatherlinux deleted the feat/container-release branch November 11, 2026 15:59
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