feat(actions): signed-push composite action (verified commits via GitHub App)#509
Merged
Merged
Conversation
… GitHub App) Estate primitive for the "AI tools can't operate GitHub" problem: automation commits made with a PAT/GITHUB_TOKEN are Unverified, so any branch requiring signed commits (`required_signatures`) is BLOCKED from merging (e.g. IDApTIK #28). signed-push mints a GitHub App installation token (actions/create-github-app-token) and delegates to Asana/push-signed-commits, which replays local commits through the createCommitOnBranch GraphQL mutation — GitHub signs those itself, so they land as Verified and satisfy the ruleset. - SHA-pinned: create-github-app-token v3.2.0, push-signed-commits v1. - README documents App setup + the ruleset bypass caveat for PR-only/merge-queue. BLOCKED (draft): requires the org to register the App and set APP_ID / APP_PRIVATE_KEY secrets before it can run/verify. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
hyperpolymath
marked this pull request as ready for review
July 20, 2026 17:24
hyperpolymath
added a commit
that referenced
this pull request
Jul 20, 2026
#510) Follow-up to #509 (which merged the `signed-push` action). Adds a **manual** (`workflow_dispatch`) smoke test that proves the action produces GitHub-**Verified** commits end-to-end. ## What it does 1. Creates a throwaway branch `ci/signed-push-smoke-<run>`. 2. Commits a trivial change locally. 3. Pushes it via `./.github/actions/signed-push` (App token → `createCommitOnBranch`). 4. **Asserts** the resulting commit is `verified=true` (fails loudly if not — the classic "App not installed / wrong secret" case). 5. Deletes the throwaway branch. ## Before running Set on this repo (Settings → Secrets and variables → Actions): - Variable **`APP_ID`**, Secret **`APP_PRIVATE_KEY`** — the estate GitHub App. Then: Actions → "signed-push smoke test" → Run workflow (on this branch). Green = Arm B1 works. Validated: `actionlint` clean, YAML parses, checkout SHA-pinned. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



What
Adds
.github/actions/signed-push— an estate composite action that pushes a branch's local commits as GitHub Verified commits, using a GitHub App installation token +createCommitOnBranch(viaAsana/push-signed-commits).Why (Arm B1)
Automation commits made with a PAT or
GITHUB_TOKENare Unverified. Any branch whose ruleset enforcesrequired_signaturesthen cannot merge — this is exactly why IDApTIK #28 isBLOCKEDright now (all 4 commitsverified=false / unknown_key). A GitHub App authoring commits viacreateCommitOnBranchproduces Verified commits GitHub signs itself, satisfying the rule.The same App also unlocks
.github/workflowsedits (Workflows: write) anddelete_repo(Administration: write), retiring several "GitHub API won't let AI tools operate" blockers at once.Details
create-github-app-tokenv3.2.0 (bcd2ba4…),push-signed-commitsv1 (6e073ae…).required_signatures— the App may need adding to those rulesets' bypass list.⛔ Blocked / not yet verifiable
Requires the org to register the GitHub App and set
APP_ID+APP_PRIVATE_KEYsecrets before it can run. Draft until then. YAML validated (parses as a valid composite action); not runnable in CI without the App.Related
required_signatures: register the SSH Signing Key so existing commits flip to Verified.hyperpolymath/scripts#90(wiki-seed adapter), and the community feature request for a wiki API.🤖 Generated with Claude Code