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/apply-repo-settings.yaml b/.github/workflows/apply-repo-settings.yaml new file mode 100644 index 0000000..0cbbd98 --- /dev/null +++ b/.github/workflows/apply-repo-settings.yaml @@ -0,0 +1,68 @@ +# This file is managed by nsheaps/.github (sync-files). +# Source: https://github.com/nsheaps/.github/blob/main/ansible/templates/.github/workflows/apply-repo-settings.yaml +# Edit-in-place will be overwritten on the next sync. +name: Apply Repo Settings + +# Reads `.github/settings.yml` from THIS repo and applies the +# repository config + rulesets via the apply-repo-settings action +# (https://github.com/nsheaps/github-actions/tree/main/.github/actions/apply-repo-settings). +# +# Ephemeral, in-workflow alternative to the third-party +# repository-settings GitHub App. Runs only when invoked. +# +# Auth: reuses the org's automation App (AUTOMATION_GITHUB_APP_*) — +# same app used by sync-labels / sync-files / sync-secrets / sync-stars. +# That app must have `Administration: write` for rulesets to apply; if +# they don't, check the app's permission grants first. +# +# Triggers: +# workflow_dispatch manual, with dry-run toggle +# repository_dispatch external triggers (other workflows / curl) +# push to main when .github/settings.yml changes + +on: + workflow_dispatch: + inputs: + dry-run: + description: "Render only; don't apply" + type: boolean + default: false + repository_dispatch: + types: [apply-repo-settings] + push: + branches: [main] + paths: + - '.github/settings.yml' + - '.github/workflows/apply-repo-settings.yaml' + +permissions: + contents: read + +concurrency: + # Serialize per-ref so a fast follow-up push waits for the in-flight run. + group: apply-repo-settings-${{ github.ref }} + cancel-in-progress: false + +jobs: + apply: + name: Apply settings to this repo + runs-on: ubuntu-latest + steps: + - name: Checkout as GitHub App + id: checkout + uses: nsheaps/github-actions/.github/actions/checkout-as-app@main + with: + app-id: ${{ secrets.AUTOMATION_GITHUB_APP_ID }} + private-key: ${{ secrets.AUTOMATION_GITHUB_APP_PRIVATE_KEY }} + + - name: Apply + id: apply + uses: nsheaps/github-actions/.github/actions/apply-repo-settings@main + with: + token: ${{ steps.checkout.outputs.token }} + dry-run: ${{ inputs.dry-run || false }} + + - name: Show summary + if: always() + run: | + echo "Summary: ${{ steps.apply.outputs.summary }}" 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.