feat: pilot quorum + on-chain submit workflows - #509
Closed
willemneal wants to merge 3 commits into
Closed
Conversation
Add four issue-form templates for on-chain registry method requests: publish, register, deploy, and admin (the high-sensitivity kind that covers update_contract_owner/address, rename_contract, and upgrade_contract). Each form applies `registry-intake` plus a kind subtype label (`registry-intake:publish` etc.) at creation time. No workflows consume these labels yet — that lands in follow-up commits. Testable after merge: visit "New issue", confirm the four templates render, fill one out, confirm both labels appear on the created issue. No validation, no votes — just form intake. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add the validate-registry-intake workflow plus its supporting bits: - issue-ops/parser + issue-ops/validator wiring against the kind- specific template (resolved from the issue's `registry-intake:<kind>` label). - Custom JS validators for Stellar strkeys (G…/C…, 56 char base32), sha256 wasm hashes (64 hex), semver versions, contract/wasm names (kebab-case with optional `<prefix>/`), and https URLs. - Python helper that pretty-prints the validator's error JSON into a friendly issue comment listing the offending fields. On validation success the issue is labeled `registry-intake:in-review` and a comment tells pilots how to vote. On failure the issue is labeled `issueops:validation-error` and the rendered errors are posted as a comment; the workflow re-runs whenever the issue is edited. Testable after merge: open an issue from any of the four templates, once with valid fields (expect `:in-review` + hint comment) and once with a malformed strkey/hash/semver (expect `issueops:validation-error` + rendered errors). No org PAT, no env, no signer secret needed yet. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add the two workflows that close the loop from in-review issue to
on-chain registry transaction, plus the per-kind quorum policy and
the CLI-args parser:
- .github/registry-quorum.yml: per-kind `min_voters` and
`require_unanimous` (admin kind requires unanimous; any 👎 blocks).
Default formula mirrors SCF pg-atlas: `ups ≥ min_voters + 2*downs`.
- registry-quorum-check.yml: triggered on `.quorum-check` comments,
allowlisted to the `registry-pilots` team via a read-org PAT.
Tallies pilot 👍/👎 reactions against the policy, swaps
in-review → accepted/rejected, dispatches the on-chain workflow on
accept, closes+locks the issue on reject.
- registry-onchain-submit.yml: workflow_dispatch only. Re-fetches and
re-validates the issue body (defense in depth), parses to CLI args
via parse_intake_to_args.py, runs stellar-registry-cli from a
protected GitHub Environment (`registry-testnet` / `registry-mainnet`)
that gates the signer secret behind required reviewers, posts the tx
hash back, labels `:submitted` or `:submission-failed`.
- parse_intake_to_args.py: single source of truth for kind → CLI
subcommand + flags mapping; emits a download URL when the publish
method is selected (workflow fetches the wasm before invoking).
Tied together, these expect the operator to have already created the
`registry-pilots` team, set `READ_ORG_MEMBERS_PAT`, generated a CI
keypair, called `set_manager(<CI_PUBKEY>)` once per network as registry
admin, and provisioned the `registry-{testnet,mainnet}` environments
with secrets and reviewers. See docs/ci-publishing.md (follow-up
commit) for the runbook.
Testable after merge (with bootstrap done): pilots vote on an
in-review issue, one comments `.quorum-check`, the on-chain workflow
pauses at the env gate, a reviewer approves, the tx hash is posted
back to the issue.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
willemneal
force-pushed
the
feat/registry-issueops-validate
branch
from
May 13, 2026 13:33
c7efe7a to
95edd7e
Compare
Contributor
Author
|
Closing in favor of #518 — registry governance is moving on-chain via the Tansu-DAO-gated registry manager rather than the GitHub IssueOps quorum approach. |
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.
Add the two workflows that close the loop from in-review issue to
on-chain registry transaction, plus the per-kind quorum policy and
the CLI-args parser:
min_votersandrequire_unanimous(admin kind requires unanimous; any 👎 blocks).Default formula mirrors SCF pg-atlas:
ups ≥ min_voters + 2*downs..quorum-checkcomments,allowlisted to the
registry-pilotsteam via a read-org PAT.Tallies pilot 👍/👎 reactions against the policy, swaps
in-review → accepted/rejected, dispatches the on-chain workflow on
accept, closes+locks the issue on reject.
re-validates the issue body (defense in depth), parses to CLI args
via parse_intake_to_args.py, runs stellar-registry-cli from a
protected GitHub Environment (
registry-testnet/registry-mainnet)that gates the signer secret behind required reviewers, posts the tx
hash back, labels
:submittedor:submission-failed.subcommand + flags mapping; emits a download URL when the publish
method is selected (workflow fetches the wasm before invoking).
Tied together, these expect the operator to have already created the
registry-pilotsteam, setREAD_ORG_MEMBERS_PAT, generated a CIkeypair, called
set_manager(<CI_PUBKEY>)once per network as registryadmin, and provisioned the
registry-{testnet,mainnet}environmentswith secrets and reviewers. See docs/ci-publishing.md (follow-up
commit) for the runbook.
Testable after merge (with bootstrap done): pilots vote on an
in-review issue, one comments
.quorum-check, the on-chain workflowpauses at the env gate, a reviewer approves, the tx hash is posted
back to the issue.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
Stack created with GitHub Stacks CLI • Give Feedback 💬