Repository navigation
feat(heart): token push check — prove pyautolabs-bot can push to the five release libraries - #316
Merged
Merged
Conversation
…tity New scheduled/dispatchable token_push_check.yml mints a pyautolabs-bot App token scoped to the five release libraries and runs heart/checks/token_push.py: git ls-remote + git push --dry-run per library (no pack sent, no ref created). The result is committed as state/token_push.json, folded into the snapshot by state.aggregate and graded by readiness: a refused push is RED, a missing, partial or >48 h sidecar is STALE (with dashboard remedies). Refs PyAutoLabs/PyAutoHands#321 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds a pull_request trigger (paths: the workflow and heart/checks/token_push.py) so the real App token is exercised before merge. PR runs probe, log, upload the sidecar as an artifact and fail on refusal, but never commit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Merged
4 of 5 tasks
The tenant firewall rejects instance facts in organ code. token_push.py now takes the library list from readiness.load_release_gate_names() and each owner from config/repos.yaml (dashboard._repo_owners); the dashboard remedy command and the tests derive names the same way. The workflow resolves the App token's `repositories:` scope from the same list via --print-repos, so the scope and the probe can never disagree. Co-Authored-By: Claude Opus 5.5 <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.
Summary
Adds a read-only release gate input that proves the org-owned
pyautolabs-botGitHub App can push to the five release libraries (PyAutoNerves, PyAutoFit, PyAutoArray, PyAutoGalaxy, PyAutoLens). This is the identity the PyAutoHands release path moves to in token phase 1 (PyAutoLabs/PyAutoHands#321)..github/workflows/token_push_check.yml, triggered daily at 04:30 UTC, byworkflow_dispatch, and on PRs that touch the check. It mints an App token scoped to the five libraries (contents write) and runsgh auth setup-git. For each library it then runsgit ls-remoteandgit push --dry-run … HEAD:refs/heads/token-push-check-dryrun. The dry run sends no pack and creates no ref.heart/checks/token_push.pyruns the probe and writes the sidecarstate/token_push.json. On schedule and dispatch the sidecar is committed with[skip ci]. PR runs only upload it as an artifact. Any refused push fails the job.state.aggregatefolds the committed sidecar into the snapshot astoken_push.readinessgrades it: a refused push is RED, and a missing, partial or >48 h old sidecar is STALE. The dashboard gets remedies for the STALE keys.Heart YELLOW acknowledged by the human 2026-10-23 (manifest drift; PyAutoLens release validation stale).
Refs PyAutoLabs/PyAutoHands#321. This PR closes nothing; the issue closes after both PRs merge.
API Changes
None. This adds a new check module and a new readiness reason. There is no change to any public interface.
See full details below.
Test Plan
python -m pytest tests -q -x→1305 passedcreate-github-app-token@v3predatesclient-id.push=Trueon all five libraries, and notoken-push-check-dryrunbranch was created.Token Push Checkrun on this PR showspush=Truefor all five libraries using the real App token.Full API Changes (for automation & release notes)
Removed
Added
heart.checks.token_push(probe,build,load,main): the App push-credential probe and sidecar reader.token_push_refused(red),token_push_unknown(stale) andtoken_push_stale(stale).Migration
Generated by the PyAutoLabs agent workflow.
🤖 Generated with Claude Code