docs: narrow CONSUMERS stub issues triggers, relax cron to hourly (#199)
Bring the published caller stub to the #199 shape in lockstep with self-labels.yml (preserving the stub<->caller parity #144 established): hourly cron, issues: [opened, closed], per-trigger why-comments. Rewrite the adoption prose — 0.2.0 shipped the broad set; #199 narrows it at its pin bump and supersedes the unreleased edited/reopened additions (#144). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
dfafeedeec
commit
12887cc9de
1 changed files with 34 additions and 18 deletions
|
|
@ -296,20 +296,30 @@ The complete caller is:
|
||||||
```yaml
|
```yaml
|
||||||
name: labels
|
name: labels
|
||||||
on:
|
on:
|
||||||
schedule: [{cron: "*/15 * * * *"}] # advisory; the handoff label is the real wake
|
# Hourly, not */15 (#199): the cron is a BACKSTOP. Events below carry every
|
||||||
|
# real state change in seconds; the cron only catches a forgotten handoff, so
|
||||||
|
# a quiet repo loses at most that case, and by ≤1h. */15 billed a full-board
|
||||||
|
# sweep four times an hour at GitHub's 1-minute floor for near-zero work.
|
||||||
|
schedule: [{cron: "0 * * * *"}]
|
||||||
workflow_dispatch: # bootstraps missing labels on a fresh repo
|
workflow_dispatch: # bootstraps missing labels on a fresh repo
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
# review_requested/review_request_removed are unreleased — not in 0.2.0;
|
# Fork PRs; these carry the head/draft/review facts state:* derives from.
|
||||||
# add them with the pin bump to the first tag carrying ceremony#137. They
|
# labeled/unlabeled are the handoff wake (state:needs-human confirmed here);
|
||||||
# wake the sweep that clears blocker:unrequested when the panel is asked.
|
# synchronize re-derives on every push. review_requested/review_request_removed
|
||||||
|
# are unreleased — not in 0.2.0; add them with the pin bump to the first tag
|
||||||
|
# carrying ceremony#137. They wake the sweep that clears blocker:unrequested
|
||||||
|
# when the panel is asked.
|
||||||
types: [opened, reopened, ready_for_review, converted_to_draft, synchronize, labeled, unlabeled, review_requested, review_request_removed]
|
types: [opened, reopened, ready_for_review, converted_to_draft, synchronize, labeled, unlabeled, review_requested, review_request_removed]
|
||||||
# Available at 0.2.0 and later (the first tag carrying ceremony#32); a
|
# Available at 0.2.0 and later (the first tag carrying ceremony#32); a
|
||||||
# consumer pinned to 0.1.0 omits this block.
|
# consumer pinned to 0.1.0 omits this block.
|
||||||
issues:
|
issues:
|
||||||
# edited/reopened are unreleased — not in 0.2.0; add them with the pin
|
# Narrowed to the two promptness-critical actions (#199): opened → the
|
||||||
# bump to the first tag carrying ceremony#144, the same bump as the
|
# mint→needs-triage check, closed → the blocker-closes→ready self-heal. The
|
||||||
# pull_request_target additions above.
|
# rest (labeled/unlabeled/assigned/unassigned/edited/reopened) only feed
|
||||||
types: [opened, edited, assigned, unassigned, labeled, unlabeled, closed, reopened]
|
# validation and the 48h claim clock, which the hourly cron catches within
|
||||||
|
# one cadence; labeled/unlabeled were the issues-churn source. The handoff
|
||||||
|
# wake is pull_request_target:labeled, not issues, so this leaves it intact.
|
||||||
|
types: [opened, closed]
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
checks: read # mergeability/check-rollup read for PR state
|
checks: read # mergeability/check-rollup read for PR state
|
||||||
|
|
@ -330,23 +340,29 @@ needs all three explicit reads above; without them the failure appears as an emp
|
||||||
The `issues:` trigger is available at `0.2.0` and later — `0.2.0` is the
|
The `issues:` trigger is available at `0.2.0` and later — `0.2.0` is the
|
||||||
first tag carrying ceremony#32. A consumer pinned to `0.1.0` omits it. Adopt
|
first tag carrying ceremony#32. A consumer pinned to `0.1.0` omits it. Adopt
|
||||||
it only by bumping every ceremony reference to `0.2.0` or later; never mix
|
it only by bumping every ceremony reference to `0.2.0` or later; never mix
|
||||||
refs to adopt it early. At `0.2.0` the type list stops at `closed`: `edited`
|
refs to adopt it early. `0.2.0` shipped the broad type list
|
||||||
and `reopened` are newer, part of the pending stub edit below.
|
(`labeled`/`unlabeled`/`assigned`/`unassigned` alongside `opened`/`closed`);
|
||||||
|
ceremony#199 narrows it to `[opened, closed]` and relaxes the cron to hourly,
|
||||||
|
so a consumer picks up the smaller trigger surface at the pin bump to the
|
||||||
|
first tag carrying ceremony#199. The narrowing supersedes the unreleased
|
||||||
|
`edited`/`reopened` additions (#144) rather than shipping them — those actions
|
||||||
|
are gone from the caller, not deferred — while keeping the stub and ceremony's
|
||||||
|
own caller byte-for-byte parity that #144 established. Only two `issues`
|
||||||
|
actions survive because only two carry reconcile behavior the cron cannot wait
|
||||||
|
one cadence for: `opened` drives the mint→`needs-triage` check, and `closed`
|
||||||
|
drives the blocker-closes→`ready` self-heal.
|
||||||
|
|
||||||
`pull_request_target` is intentional: fork PRs need the base repository's
|
`pull_request_target` is intentional: fork PRs need the base repository's
|
||||||
token to write labels. The reusable workflow executes no PR code. It checks
|
token to write labels. The reusable workflow executes no PR code. It checks
|
||||||
out only the consumer's base branch and the pinned ceremony implementation.
|
out only the consumer's base branch and the pinned ceremony implementation.
|
||||||
The #52 ruling invariants ride exactly these triggers — but the caller above
|
The #52 ruling invariants ride exactly these triggers — but the caller above
|
||||||
is no longer the #18 shape, so adopting current triggers is a stub edit, not
|
is no longer the #18 shape, so adopting current triggers is a stub edit, not
|
||||||
a bare pin bump. The pending edits are `review_requested` and
|
a bare pin bump. The one pending `pull_request_target:` edit is
|
||||||
`review_request_removed` on `pull_request_target:` (#137) — the wake that
|
`review_requested` and `review_request_removed` (#137) — the wake that
|
||||||
clears `blocker:unrequested` the moment the panel is asked, without which a
|
clears `blocker:unrequested` the moment the panel is asked, without which a
|
||||||
quiet repo wears that flag until the advisory cron — and `edited` and
|
quiet repo wears that flag until the advisory cron. Adopt it with the pin bump
|
||||||
`reopened` on `issues:` (#144): the wakes for a body edit rewriting the
|
to the first tag carrying ceremony#137 — never before it and never through
|
||||||
`Blocked by #N` declaration the reconcile sweep parses, and for a closed
|
mixed refs.
|
||||||
issue re-entering the queue wearing labels derived when it closed. Make both
|
|
||||||
edits together, with the pin bump to the first tag carrying ceremony#137 and
|
|
||||||
ceremony#144 — never before it and never through mixed refs.
|
|
||||||
|
|
||||||
`.github/labels.conf` has one mandatory panel setting, one mandatory
|
`.github/labels.conf` has one mandatory panel setting, one mandatory
|
||||||
`triage-actors` setting, and then zero or more scope rows:
|
`triage-actors` setting, and then zero or more scope rows:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue