traverse-framework / traverse-framework/registry

sign-artifacts can't auto-commit new signatures to main (needs bot push access or a PAT)

Open
#341 2 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Rust
Stars
1
Forks
1
Avg merge
1h 17m
Merged PRs (30d)
217

Description

## Context

registry#334 built the Ed25519 `sign-artifacts` CI job and registry#335 backfilled all 83 published capabilities. Signing itself works end to end (verified: `docs/decision-log.md` entry 77).

The one remaining gap: on a **future** merge to `main` that publishes a *new* capability, the `sign-artifacts` job signs the artifact but **cannot commit the `signature.json` back to `main` on its own**. `traverse-framework/registry`'s `main` is protected by the org `traverse-governance-*` rulesets, and `github-actions[bot]` is not on their bypass list. The `GITHUB_TOKEN` also can't open a PR that runs CI (GitHub blocks `GITHUB_TOKEN`-triggered workflow runs), so an auto-opened PR can't satisfy required checks either.

## Current behaviour (registry#339)

The job always uploads `capabilities/**/signature.json` + `catalog/signing-key.pub` as the `artifact-signatures` workflow artifact, and on `push` events attempts the direct commit, degrading to a `::warning::` (run still succeeds) when the push is refused. So new publishes are *recoverable* — a maintainer downloads the artifact and opens a normal PR — but not automatic. Runbook: `docs/artifact-signing.md` step 3.

## Options

1. **Dedicated bot PAT / GitHub App token** as a repo secret, used by the job to push directly (or to open a PR that *does* trigger CI). Keeps `main` protection intact; adds one secret to rotate.
2. **Add `github-actions[bot]` to the `traverse-governance-*` ruleset bypass list** for `main`. Simplest mechanically, but weakens a governance ruleset — a deliberate governance decision, not a routine toggle.
3. **Leave as-is** — maintainer PRs the signature after each new-capability publish using the uploaded artifact. Fine while publish volume is low.

## Recommendation

Option 1 if/when publish cadence makes the manual step annoying; Option 3 until then. Needs an owner decision — not something to pick unilaterally.

## DoD

- [ ] Decision recorded (here or `docs/decision-log.md`).
- [ ] If option 1: PAT/App token provisioned, `sign-artifacts` job updated to use it, verified on a real new-capability publish.
- [ ] `docs/artifact-signing.md` step 3 updated to match the decision.

Contributor guide

Open the contributing guide

Research direction

Start with the sign-artifacts CI job and docs/artifact-signing.md step 3, then review the governance constraints and the three options in this issue. Record the owner decision here or in docs/decision-log.md; if automation is chosen, provision the token, update the job, verify a real new-capability publish, and align the runbook.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions
Domain
ci-cd, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.