Skip to content

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

Merged
fatherlinux merged 1 commit into
masterfrom
feat/container-release
Nov 11, 2026
Merged

fatherlinux merged 1 commit into
masterfrom
feat/container-release

Conversation

@fatherlinux

Copy link
Copy Markdown
Member

Summary

  • Gate: boot: command. petit is a CLI (distroless, ENTRYPOINT ["petit"]), so the gate runs the pushed digest over test/data/test01.log with --hash and requires byte-identical output to the recorded known-good test/output/test01-hash.output, plus --version. That proves the entrypoint, venv and imports work and the output is right, not just that it starts. A different log fails the same comparison.
  • Removed: the Quay + GHCR build-and-push workflow (replaced by one container.yml calling container-release v1.39.1, default-branch: master, weekly schedule kept) and the container-scan job in security.yml that rebuilt the image only to scan it (Trivy now scans the gated digest). Kept CodeQL, dependency-audit, CI, packages, PyPI publish.
  • GHCR: dropped; .specify/memory/constitution.md now says Quay only. (docs/demo/Containerfile uses an upstream ghcr.io/charmbracelet base, which is fine and is not published.)
  • Constitution: Inherits and every workflow pin moved v1.31.0 to v1.39.1; validator PASS, no other changes needed.
  • LATEST_SEMANTICS: unchanged (:latest already moved only on a stable v* tag). Note the old branch tag :master becomes :main.

Test plan

  • local gate: Version: 4.10.3 then golden-output compare of test01 hash output OK (exit 0); test02 log against test01 expected output fails as intended
  • validate-constitution.py v1.39.1: PASS
  • PR run: build, gates, mark green

🤖 Generated with Claude Code

https://claude.ai/code/session_01R7Y1jh5QhdxRuFKyWVev5h

Replace the Quay+GHCR build-and-push workflow with the constitution v1.39.1 container-release caller. Gate: boot=command runs the pushed digest over test/data/test01.log and requires byte-identical output to the recorded known-good test/output/test01-hash.output (plus --version), proving the entrypoint, venv and imports work end to end; proven locally and a mismatching log fails it. Remove the security.yml container-scan job that rebuilt the image only to scan it (the release workflow scans the gated digest). Drop GHCR from .specify/memory/constitution.md. Move Inherits and all workflow pins from v1.31.0 to v1.39.1; validator passes.

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

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Gatehouse found no issues.

Full review.

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

@fatherlinux
fatherlinux merged commit 90e46d0 into master Nov 11, 2026
60 of 66 checks passed
@fatherlinux
fatherlinux deleted the feat/container-release branch November 11, 2026 16:30
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