From a48560b78f0d84240451b635fa9097ea3cc8d5ca Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Mon, 19 Oct 2026 13:02:54 +0100 Subject: [PATCH 1/3] =?UTF-8?q?ci(fork):=20governance=20lane=20=E2=80=94?= =?UTF-8?q?=20DEED=20syntax=20and=20the=20Hypatia=20verdict=20grid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two reusable lanes from hyperpolymath/standards (deed-conformance at 75bd5994, hypatia-scan-reusable on feat/verdict-grid until it merges), plus the caller-side jobs that post the grid on a pull request and publish shields endpoints to an orphan governance-badges branch. Adds the repo deed, the gitbot-fleet enrolment manifest and three fork badges in the README. Fork only; nothing here is for upstream. --- .github/workflows/governance.yml | 154 +++++++++++++++++++++++++++++++ MetaManifold-WebUI_chora.deed | 29 ++++++ README.md | 6 ++ 3 files changed, 189 insertions(+) create mode 100644 .github/workflows/governance.yml create mode 100644 MetaManifold-WebUI_chora.deed diff --git a/.github/workflows/governance.yml b/.github/workflows/governance.yml new file mode 100644 index 0000000..20910d5 --- /dev/null +++ b/.github/workflows/governance.yml @@ -0,0 +1,154 @@ +# SPDX-License-Identifier: MPL-2.0 +# SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell (hyperpolymath) +# +# Fork governance lane. Two reusable lanes from hyperpolymath/standards, each +# pinned to a commit: DEED syntax for the repo deed, and the Hypatia verdict +# grid (Hypatia, panic-attack, pons asinorum and the gitbot-fleet report-backs +# under .gitbot-fleet/). This workflow is the fork's; nothing in it is +# proposed upstream, and upstream's ci.yml is untouched. +# +# The reusable renders the grid; the two jobs below post it on the pull +# request and publish the badges, because a called workflow may not request +# permissions its caller does not grant. +name: Governance (fork) + +on: + push: + branches: [main] + pull_request: + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + deed: + name: DEED syntax + uses: hyperpolymath/standards/.github/workflows/deed-conformance.yml@75bd5994470661a099df562d6d5ad2fe744dbd66 + permissions: + contents: read + with: + require-files: true + + hypatia: + name: Hypatia verdict grid + uses: hyperpolymath/standards/.github/workflows/hypatia-scan-reusable.yml@feat/verdict-grid + permissions: + actions: read + contents: read + security-events: write + secrets: + HYPATIA_SCAN_PAT: ${{ secrets.HYPATIA_SCAN_PAT }} + + verdict: + name: Post the verdict grid + needs: [deed, hypatia] + if: ${{ always() && github.event_name == 'pull_request' }} + runs-on: ubuntu-latest + timeout-minutes: 5 + permissions: + contents: read + actions: read + pull-requests: write + steps: + - name: Download the verdict grid + continue-on-error: true + uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2 + with: + name: verdict-grid + path: verdict-grid + + - name: Update the compact PR verdict + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PR_NUMBER: ${{ github.event.pull_request.number }} + DEED_RESULT: ${{ needs.deed.result }} + HYPATIA_RESULT: ${{ needs.hypatia.result }} + HYPATIA_VERDICT: ${{ needs.hypatia.outputs.verdict }} + run: | + set -euo pipefail + # The DEED lane is a conformance row: pass is green, failure red, + # anything else (skipped, cancelled, no result) orange. The grid + # itself comes from the artifact; a missing artifact is orange. + case "$DEED_RESULT" in + success) deed='๐ŸŸข conformant' ;; + failure) deed='๐Ÿ”ด failing' ;; + *) deed="๐ŸŸ  indeterminate ($DEED_RESULT)" ;; + esac + { + echo '' + echo '# Fork governance' + echo + echo "| Lane | Status | Run |" + echo "|---|---|---|" + echo "| DEED syntax (repo deed) | $deed | [run $GITHUB_RUN_ID]($GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID) |" + echo "| Hypatia verdict grid | ${HYPATIA_VERDICT:-orange} (job: $HYPATIA_RESULT) | same run |" + echo + if [ -s verdict-grid/report.md ]; then + cat verdict-grid/report.md + else + echo '๐ŸŸ  indeterminate ยท no verdict-grid artifact was produced by the Hypatia lane; see the run.' + fi + } > "$RUNNER_TEMP/body.md" + # One comment per PR, updated in place; newest run wins. + comment_id=$(gh api --paginate --slurp "repos/$GITHUB_REPOSITORY/issues/$PR_NUMBER/comments" \ + | jq -r '[.[][] | select(.user.login == "github-actions[bot]" and (.body | contains("