You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -137,7 +132,7 @@ decisions before canonical guides, templates, or consumer workflows adopt it:
137
132
| Trigger ownership | The caller owns manual, schedule, default-branch push, and pull-request triggers. | Move some trigger policy into separate workflows or omit selected event classes. |
138
133
| Pull-request activities | Keep all six listed activity types. | Reduce the activity list if a v8 behavior is intentionally unsupported. |
139
134
| Concurrency | Use the workflow plus PR-number-or-full-ref key and cancel only pull-request runs. | Selected for the candidate: PR reconciliation must be resumable; non-PR runs serialize by full ref. |
140
-
| Permissions | Declare the five current scopes at workflow level. | Introduce settings-based least-privilege profiles or split read-only validation from release work. |
135
+
| Permissions | Set caller permissions to `{}` and use scoped GitHub App tokens inside the reusable workflow. | Selected for the candidate; built-in `GITHUB_TOKEN` authority must not be required. |
141
136
| Fork behavior | Skip fork-originated pull requests in this credentialed wrapper. | Add a separate secret-free workflow or define another supported fork-validation design. |
142
137
| Credentials | Explicitly map the three v8 credentials. | Define a narrower credential profile for repositories that cannot publish. |
143
138
| Optional surface | Permit only documented `TestData`, workflow inputs, schedule timing, and presentation metadata. | Allow additional extension points after naming and compatibility rules are agreed. |
@@ -172,7 +167,7 @@ fleet campaign. Branch names, `latest`, floating minor tags, and unqualified tar
172
167
| Manual dispatch | Keep `workflow_dispatch`. | Provides the documented default-branch manual release and recovery path. |
173
168
| Schedule | Keep a scheduled health run. | Exercises current dependencies even when repository code is unchanged. |
174
169
| Concurrency | Use the PR-number-or-ref key and cancel only pull-request runs. | New PR events supersede older declarative reconciliation runs; same-ref push, dispatch, and schedule runs serialize without cancellation. |
175
-
| Permissions | Declare the five documented permissions explicitly. | The called workflow cannot elevate caller permissions. |
170
+
| Permissions | Set top-level `permissions: {}` and grant no caller-job permissions. | Repository access and mutations use narrowly scoped GitHub App installation tokens created inside the reusable workflow. |
176
171
| Fork guard | Skip pull requests whose head repository differs from `github.repository`. | GitHub withholds the required repository secrets from fork pull requests. |
177
172
| Reference | Use the intended internal floating major tag (`v8`) after tag governance is enforced. | Compatible owned releases roll out centrally; breaking releases require a new major and campaign. |
178
173
| Credentials | Explicitly map the three required secrets. | Satisfies the `v7+` contract and prevents unrelated secret inheritance. |
@@ -205,7 +200,13 @@ an approved structure:
205
200
- a concurrency key other than workflow plus PR number or full ref, or cancellation behavior other than pull-request-only;
206
201
- trigger-level path filters that bypass Process-PSModule important-file evaluation;
207
202
- unrelated additional jobs in the caller wrapper;
208
-
- omitted documented permissions without a verified settings-based least-privilege profile.
203
+
- any built-in `GITHUB_TOKEN` permission granted by the caller.
204
+
205
+
The current v8 implementation still uses built-in token authority for checkout, linter status/reporting, and the standard
206
+
GitHub Pages deployment action. Before adopting the empty-permissions caller, each job must create a narrowly scoped
207
+
GitHub App installation token before checkout and pass it explicitly to checkout, GitHub CLI, and reporting actions.
208
+
Pages publication must either move to an App-authenticated deployment path or document the unavoidable `pages`/OIDC
209
+
exception if the standard Pages action remains.
209
210
210
211
Fork-originated pull requests are skipped by the candidate caller because reusable-workflow caller jobs cannot select a
211
212
GitHub Environment and repository secrets are unavailable to forks. Supporting fork CI requires a separate, secret-free,
0 commit comments