docs(openspec): propose release-tools-image change with adversarial review #155
No reviewers
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/OpenSpec
Kind/Security
Kind/Testing
Priority/Critical
Priority/High
Priority/Low
Priority/Medium
RFC - Request For Comments
Reviewed/Confirmed
Reviewed/Duplicate
Reviewed/Invalid
Reviewed/Won't Fix
Status/Abandoned
Status/Blocked
Status/Need More Info
hermes-attempted
hermes-needs-clarification
hermes-ready
hermes-review
hermes-wip
human-required
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
agentic-forges/forgejo-mcp!155
Loading…
Reference in a new issue
No description provided.
Delete branch "refs/pull/155/head"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Proposes a dedicated release-tools OCI image to replace the runtime-install pattern in the op1st Tekton release Tasks. Three live release attempts (
v2.24.0/1/2) failed at distinct steps because tools were installed at Step runtime in stock images with mismatched assumptions (step-isolation, GOCACHE-in-workspace, distroless cosign).Tracks bead
forgejo-mcp-1b4(P0). This PR is proposal-only — no Containerfile, no pipelines, no code yet. Implementation follows once design lands.What's in this PR
openspec/changes/release-tools-image/proposal.md— the why and scopeopenspec/changes/release-tools-image/design.md— base-image choice (Hummingbird), CEL gating, versioning policy, secrets, signing posture, registry path, isolation contractopenspec/changes/release-tools-image/tasks.md— task breakdown + acceptance criteriaopenspec/changes/release-tools-image/specs/release-tools-image/spec.md— capability spec with scenariosopenspec/changes/release-tools-image/review.md— full adversarial review synthesis (see below)openspec validate release-tools-imagepasses.Key design decisions
registry.access.redhat.com/hi/go:<ver>-builder(Project Hummingbird, Red Hat hardened images). Builder variant retains bash + dnf for layering syft / goreleaser / cosign / node / jq / curl.image/release-tools/or.tekton/release-tools/. Lift-to-separate-repo =git mvof those two trees + the 5 operator actions enumerated in spec.md.files.any.exists(p, p.matches("^(image/release-tools/|\\.tekton/release-tools/).*")); tag publish ontarget_branch.matches("^refs/tags/release-tools/v.*"). Tag schemerelease-tools/vMAJOR.MINOR.PATCHwon't collide withv*forgejo-mcp tags.cosign-signing-keywithoptional: false(fail-closed) — diverges intentionally from the release artifact pipeline's fail-open posture.package-lock.json+npm ci --ignore-scripts+ SHA256 in VERSIONS.md. No live npm registry pull at build time.Adversarial review applied
A
team:debatepass (devils-advocate + supply-chain lens + proponent) produced 14 critiques. Defender response: 0 outright defends, 9 patches applied in-tree, 5 future-work items filed as blocked beads, 1 stalemate resolved as referee call.Full synthesis:
openspec/changes/release-tools-image/review.md.Future-work beads (blocked on
forgejo-mcp-1b4)forgejo-mcp-aun(P1)forgejo-mcp-3h2(P1)go install+curlinstalls lack SHA256 verifyforgejo-mcp-j52(P1)forgejo-mcp-46j(P2)Per the proposal's acceptance criteria, these MUST be filed before merge (done — all visible via
bd blocked).Out of scope (deferred to follow-up change
release-pipeline-use-release-tools-image).tekton/tasks/goreleaser-release.yaml,cosign-sign-release.yaml,mcpb-pack.yamlto reference the image/tmpGOCACHE workaroundOpen questions for reviewer
quay.io/operate-first/release-tools,ghcr.io/...,codeberg.org/...? Needs op1st-emea-b4mad maintainer decision before publish pipeline can land.op1st-pipelines≥ 0.22.0 (required forfiles.anyCEL)? Needs verification before merge —tasks.mditem 3.3.Test plan
This is a proposal-only PR. No code to test. Validate via:
openspec validate release-tools-image(passes)proposal.md→design.md→review.md→spec.md→tasks.mdin that orderbd blockedand depend onforgejo-mcp-1b4op1st Pipelines as Code/code-scans-zvldq is running.
Starting Pipelinerun code-scans-zvldq in namespace op1st-pipelines
You can monitor the execution using the op1st Pipelines as Code PipelineRun viewer or through the command line by
using the tkn CLI with the following command:
tkn pr logs -n op1st-pipelines code-scans-zvldq -fop1st Pipelines as Code/on-pull-request-v8q7k is running.
Starting Pipelinerun on-pull-request-v8q7k in namespace op1st-pipelines
You can monitor the execution using the op1st Pipelines as Code PipelineRun viewer or through the command line by
using the tkn CLI with the following command:
tkn pr logs -n op1st-pipelines on-pull-request-v8q7k -fop1st Pipelines as Code/openspec-validate-pr-wpq9v is running.
Starting Pipelinerun openspec-validate-pr-wpq9v in namespace op1st-pipelines
You can monitor the execution using the op1st Pipelines as Code PipelineRun viewer or through the command line by
using the tkn CLI with the following command:
tkn pr logs -n op1st-pipelines openspec-validate-pr-wpq9v -fop1st Pipelines as Code/code-scans-zvldq has successfully validated your commit.
Task Statuses:
fetch-source
gitleaks-version
gitleaks
op1st Pipelines as Code/openspec-validate-pr-wpq9v has successfully validated your commit.
Task Statuses:
fetch-source
validate
Tracking issue: #156
op1st Pipelines as Code/on-pull-request-v8q7k has successfully validated your commit.
Task Statuses:
fetch-source
build-and-test