From 7b0ac133f877768810f4e3d1d9c83acdc0259265 Mon Sep 17 00:00:00 2001 From: "automation-nsheaps[bot]" <251779498+automation-nsheaps[bot]@users.noreply.github.com> Date: Mon, 27 Jul 2026 07:20:04 +0000 Subject: [PATCH 1/2] [sync] Create .github/workflows/pr-status-dispatch.yaml --- .github/workflows/pr-status-dispatch.yaml | 62 +++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 .github/workflows/pr-status-dispatch.yaml diff --git a/.github/workflows/pr-status-dispatch.yaml b/.github/workflows/pr-status-dispatch.yaml new file mode 100644 index 0000000..5d7037d --- /dev/null +++ b/.github/workflows/pr-status-dispatch.yaml @@ -0,0 +1,62 @@ +# PR Status Dispatch — CONSUMER-REPO TEMPLATE (GSD-101, #706) +# +# Copy this file into ANY repo in REPOS.md scope as +# `.github/workflows/pr-status-dispatch.yaml`. It fires a `repository_dispatch` +# (event type `pr-status-refresh`) at nsheaps/.org whenever a PR in THIS repo +# changes state, so .org's PR Status Digest regenerates and picks up the change. +# +# Why this exists: .org's pr-status-digest.yaml only sees its OWN pull_request +# events. When a PR in agents / ai-mktpl / op-exec / … moves open→merged, .org +# never hears about it and the combined digest goes stale until the 12h cron. +# This template closes that gap — a state change here pings .org immediately. +# +# Requirements (already satisfied for REPOS.md repos via .github/secret-sync.yaml): +# - secrets.AUTOMATION_GITHUB_APP_ID +# - secrets.AUTOMATION_GITHUB_APP_PRIVATE_KEY +# The automation GitHub App must be installed on nsheaps/.org (it is — .org is a +# secret-sync target), so a token minted here can dispatch to .org. +# +# State changes only — explicitly NOT `synchronize` (don't ping on every push). + +name: PR Status Dispatch + +on: + pull_request: + types: [opened, closed, reopened, ready_for_review, converted_to_draft] + +# No write perms needed on THIS repo — the dispatch is authorized by the app +# token scoped to nsheaps/.org, not by GITHUB_TOKEN. +permissions: {} + +concurrency: + group: pr-status-dispatch-${{ github.event.pull_request.number }} + cancel-in-progress: true + +jobs: + dispatch: + runs-on: ubuntu-latest + # Only dispatch for same-repo PRs — fork PRs can't carry secrets and their + # state isn't tracked in the digest anyway. + if: github.event.pull_request.head.repo.full_name == github.repository + steps: + - name: Authenticate as GitHub App + id: app-token + uses: nsheaps/github-actions/.github/actions/github-app-auth@main + with: + app-id: ${{ secrets.AUTOMATION_GITHUB_APP_ID }} + private-key: ${{ secrets.AUTOMATION_GITHUB_APP_PRIVATE_KEY }} + owner: nsheaps + skip-checkout: "true" + + - name: Dispatch pr-status-refresh to nsheaps/.org + uses: peter-evans/repository-dispatch@28959ce8df70de7be546dd1250a005dd32156697 # v4 + with: + token: ${{ steps.app-token.outputs.token }} + repository: nsheaps/.org + event-type: pr-status-refresh + client-payload: |- + { + "source_repo": "${{ github.repository }}", + "pr_number": ${{ github.event.pull_request.number }}, + "action": "${{ github.event.action }}" + } From 6fa8ecf4531854fdbd9583bb483ee78c95388491 Mon Sep 17 00:00:00 2001 From: "automation-nsheaps[bot]" <251779498+automation-nsheaps[bot]@users.noreply.github.com> Date: Mon, 27 Jul 2026 07:20:21 +0000 Subject: [PATCH 2/2] chore: `mise format` Triggered by: 45d6aae638187bb2811e01b43d4e2c50fb322e2a Workflow run: https://github.com/nsheaps/github-actions/actions/runs/30245775293 --- .../1/1771874092/documentation/REPORT.md | 16 ++++++++-------- .github/workflows/pr-status-dispatch.yaml | 2 +- LICENSE.md | 2 +- pages/index.html | 3 +-- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/.claude/pr-reviews/nsheaps/github-actions/1/1771874092/documentation/REPORT.md b/.claude/pr-reviews/nsheaps/github-actions/1/1771874092/documentation/REPORT.md index 47964ad..65c5390 100644 --- a/.claude/pr-reviews/nsheaps/github-actions/1/1771874092/documentation/REPORT.md +++ b/.claude/pr-reviews/nsheaps/github-actions/1/1771874092/documentation/REPORT.md @@ -100,15 +100,15 @@ This PR delivers strong, well-structured documentation that significantly exceed ### Summary of Deductions -| Category | Deduction | Reason | +| Category | Deduction | Reason | | ---------------------------------- | --------- | --------------------------------------------------------------------- | --- | -------------------------------- | -| Missing troubleshooting/error docs | -5 | No guidance on common failure modes | -| Missing prerequisites | -2 | No runner/dependency requirements noted | -| Incomplete edge-case docs | -4 | maxdepth 2 limit, root-path sync naming, never-deletes implications | -| env-vars behavior mismatch | -2 | README implies compose-level injection, script does GITHUB_ENV export | -| auth-type values underdocumented | -2 | No explanation of what each auth type requires | -| Missing function docstrings | -2 | `discover_compose_files` and `export_env_vars` lack docstrings | -| Minor inline comment gaps | -1 | ` | | true`on curl,`sort -z` rationale | +| Missing troubleshooting/error docs | -5 | No guidance on common failure modes | +| Missing prerequisites | -2 | No runner/dependency requirements noted | +| Incomplete edge-case docs | -4 | maxdepth 2 limit, root-path sync naming, never-deletes implications | +| env-vars behavior mismatch | -2 | README implies compose-level injection, script does GITHUB_ENV export | +| auth-type values underdocumented | -2 | No explanation of what each auth type requires | +| Missing function docstrings | -2 | `discover_compose_files` and `export_env_vars` lack docstrings | +| Minor inline comment gaps | -1 | ` | | true`on curl,`sort -z` rationale | ## References diff --git a/.github/workflows/pr-status-dispatch.yaml b/.github/workflows/pr-status-dispatch.yaml index 5d7037d..08d263b 100644 --- a/.github/workflows/pr-status-dispatch.yaml +++ b/.github/workflows/pr-status-dispatch.yaml @@ -46,7 +46,7 @@ jobs: app-id: ${{ secrets.AUTOMATION_GITHUB_APP_ID }} private-key: ${{ secrets.AUTOMATION_GITHUB_APP_PRIVATE_KEY }} owner: nsheaps - skip-checkout: "true" + skip-checkout: 'true' - name: Dispatch pr-status-refresh to nsheaps/.org uses: peter-evans/repository-dispatch@28959ce8df70de7be546dd1250a005dd32156697 # v4 diff --git a/LICENSE.md b/LICENSE.md index e70157b..c3fc5da 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -11,7 +11,7 @@ Copyright (c) 2026 Nathan Heaps. All rights reserved. > (https://polyformproject.org/licenses/internal-use/1.0.0), which is > purpose-built for "use the software for internal business operations, do > not distribute it." The one substantive adaptation is that PolyForm grants -> rights to *"you and your company"* (whoever accepts the license), whereas +> rights to _"you and your company"_ (whoever accepts the license), whereas > this license grants them to a **single, specifically named licensee** > (Oura, defined below). That is a real difference: the licensor here is not > a generic member of the licensee's organization, so the "permitted diff --git a/pages/index.html b/pages/index.html index 820fe74..caec1b6 100644 --- a/pages/index.html +++ b/pages/index.html @@ -319,8 +319,7 @@

Detailed setup walkthrough

 cp pages/index.html docs/index.html
-# Settings → Pages → Source: GitHub Actions (or branch /docs)
+# Settings → Pages → Source: GitHub Actions (or branch /docs)

Then use https://<your-org>.github.io/<repo>/ as the redirect. Any other HTTPS static host (Vercel, Netlify, etc.) works equally well.