docs: add actions read to private caller guidance #174
No reviewers
Labels
No labels
attention
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-ruling
needs-triage
offsite
post-merge
ready
release
scope:docs
scope:guards
scope:labels
scope:release-flow
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/ceremony#174
Loading…
Reference in a new issue
No description provided.
Delete branch "build/173-private-read-scopes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #173
Summary
Document the complete private-repository permission set for labels reconciliation and keep the blind-sweep warning aligned with the proven
actions: readrequirement.Worklog
actions: readand its private-repository rationale to the consumer caller exampleAcceptance criteria
test/labels-reconcile.test.shpasses with the updated expectation and fails against the old hint textdocs/CONSUMERS.mdcarriesactions: readwith the why-comment and retains the empty-state:*symptomchangelog.d/173.mdexists in flat form with entries at most 300 charactersTesting
bash test/labels-reconcile.test.sh— 150 passed / 0 failedbash test/run.sh— 18 test files passed / 0 failedbash .github/scripts/shellcheck-all.sh— pass (39 scripts)bash .github/scripts/actionlint-all.sh— pass (6 workflows)🔎 reviewing head
eae000bd62Verdict: approve
Head:
eae000bd624df8318a46b91a624634ba5166af84Issue: Closes #173
Acceptance criteria
blind_sweep_warningemit lines carry the three-scope candidate tail verbatim (checks: read, statuses: read and actions: read…), still framed as "one candidate", no diagnosis languagetest/labels-reconcile.test.shpins the new bytes and the suite is greendocs/CONSUMERS.mdexample gainsactions: readwith the incubator#60 why-comment; prose is "all three explicit reads"; empty-state:*symptom retainedself-guardsgreen; local shellcheck on the script is clean of new findings (only pre-existing SC1091 on theruling.shsource)changelog.d/173.mdflat, entry ≤300 charsVerification run
bash test/labels-reconcile.test.sh→ 150 passed, 0 failed.bash test/run.sh→ 18 test files passed, 0 failed.test,self-guards,action-exercise,docs-sync-exercise, labels jobs, release-exercise steps all success.Scope / non-blocking
Tight, mechanical catch-up to the private-repo contract incubator#60/62 proved. Comment block on
blind_sweep_warningstill documents the #101 D5 "report, do not diagnose" posture correctly; only the candidate list grew, as the issue required. No blocking nits.Non-blocking: the secondary grep assertions still only name
checks: readandstatuses: read(the full-line pin already locksactions: read). Optional follow-up if someone wants symmetry — not required by #173.🔎 reviewing head
eae000bd62Approve — head
eae000b.Reviewed the whole PR against #173's spec, which was byte-precise; the diff matches it exactly.
Verified by running, in a detached worktree at the head:
blind_sweep_warning()from the new script and ran both variants. With-reason and no-reason outputs match the spec's verbatim tail —— one candidate is missing checks: read, statuses: read and actions: read in the caller (private repos do not imply them)— byte-for-byte, and the no-reason variant keeps the candidate framing without diagnosis language (#101 D5 holds: the twogrant checks: read and statuses: readmust-fail guards in the test are negative assertions and still pass).origin/mainimplementation's output differs from the new pinned expectation — the updated test fails against the old hint text, as required.actions: readline with the why-comment sits afterstatuses: read; prose now says "all three explicit reads"; the empty-state:*-axis symptom sentence is retained. Matches spec item 2 verbatim.changelog.d/173.md: flat single bullet, 134 bytes, under the 300-character bound (#167).Could not verify locally, and relied on CI instead: this box has no
jqorshellcheck, so I could not run the full test file,test/run.sh, or the shellcheck/actionlint scripts myself. All applicable CI checks on this head are green (test,self-guards,labels / reconcile,action-exercise,docs-sync-exercise, the release-exercise jobs), which covers the suite and the lint gates the PR body claims.Nothing blocking; the change is minimal, spec-faithful, and evidenced.
🔎 reviewing head
eae000bd62Approve at
eae000bd624df8318a46b91a624634ba5166af84.Reviewed against #173's spec; every criterion verified by running it, not by reading the worklog:
blind_sweep_warning()carry the specced three-scope tail byte-for-byte —grep -cFon the verbatim tail returns exactly 2. The candidate framing ("one candidate is missing…") survives, no diagnosis language returns, and the #101 D5 incident comment block above the function is untouched.actions: readline verbatim, including the why-comment and(incubator#60)pointer, placed afterstatuses: read. The prose now reads "needs all three explicit reads above" and still describes the empty-state:*-axis symptom.labels-reconcile.shunder the PR's test and got 149 passed / 1 failed, failing on exactly the pinned warning bytes; with the PR's script, 150 passed / 0 failed. Fullbash test/run.sh: 18 test files passed / 0 failed.changelog.d/173.mdexists, flat, single entry at 133 characters (≤300).shellcheck-all.shandactionlint-all.shboth pass locally; all applicable CI checks are green on this head.Docs-only change with the test pin moving in lockstep — exactly the scope the issue minted, nothing extra. Ship it.
Closing round summary
What shipped
checks: read,statuses: read, andactions: read, while retaining candidate framing and avoiding diagnosis language.actions: read, explains why private repositories require it (as proven byheavy-duty/incubator#60), and keeps the empty-state:*symptom documented.Rounds
eae000bd624df8318a46b91a624634ba5166af84. Grok, Kimi, and Claude all approved that head. No blocking findings were raised and no review-round code changes were required. Grok left one explicitly non-blocking residue: the secondary negative grep assertions still name onlychecks: readandstatuses: read; the full-line assertion already pinsactions: read, so this is outside #173 and does not weaken the shipped contract.Verification
bash test/labels-reconcile.test.sh— 150 passed / 0 failed.bash test/run.sh— 18 test files passed / 0 failed.shellcheck-all.shandactionlint-all.shpass.blocker:*labels.Post-merge residue