The machinery LABELS.md promised. labels.yml runs the reconciler on a 15-minute cron plus PR events (pull_request_target — every PR here is from a fork, where pull_request gets a read-only token; no PR code is ever checked out). The script derives each open PR's state:* from GitHub's own facts and converges labels statelessly; stale is judged from real activity (commits, comments, reviews), never label churn, so the sweep cannot un-stale its own mark. actions/labeler applies scope:* from changed paths. CONTRIBUTING.md is the guideline: the PR loop, and who sets which labels. Rehearsed with DRY_RUN=1 against the live repo; shellcheck-clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
25 lines
1.2 KiB
YAML
25 lines
1.2 KiB
YAML
# path → scope:* map for actions/labeler — the PR half of LABELS.md's scope
|
|
# story (issues are hand-scoped at triage; paths only exist on PRs). Additive
|
|
# only: sync-labels stays off in labels.yml, so a hand-applied scope survives.
|
|
"scope:capture":
|
|
- changed-files:
|
|
- any-glob-to-any-file:
|
|
["src/draft.ts", "src/capture.ts", "test/draft*.test.ts", "test/capture*.test.ts"]
|
|
"scope:apply":
|
|
- changed-files:
|
|
- any-glob-to-any-file:
|
|
["src/apply.ts", "src/diff.ts", "src/destroy.ts", "src/smoke.ts", "test/apply.test.ts", "test/diff.test.ts", "test/destroy.test.ts"]
|
|
"scope:secrets":
|
|
- changed-files:
|
|
- any-glob-to-any-file: ["src/secrets.ts", "test/secrets.test.ts"]
|
|
"scope:fleet":
|
|
- changed-files:
|
|
- any-glob-to-any-file:
|
|
["src/fleet.ts", "src/inventory.ts", "src/server.ts", "src/team.ts", "test/fleet*.test.ts", "test/inventory.test.ts"]
|
|
"scope:manifest":
|
|
- changed-files:
|
|
- any-glob-to-any-file:
|
|
["src/manifest.ts", "src/resolve.ts", "src/envtemplate.ts", "src/bindings.ts", "test/manifest.test.ts", "test/resolve.test.ts"]
|
|
"scope:coolify-api":
|
|
- changed-files:
|
|
- any-glob-to-any-file: ["src/coolify.ts", "reference/**"]
|