fix: the CONSUMERS.md stub's issues: types match the caller's, parity-tested #150
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#150
Loading…
Reference in a new issue
No description provided.
Delete branch "build/144-consumers-issues-parity"
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 #144
The published labels-caller stub in
docs/CONSUMERS.mdlisted sixissues:types while ceremony's own caller (self-labels.yml) listens on eight — PR #32's70db91fwidened the caller byeditedandreopenedand the stub never followed. A consumer adopting the stub therefore never wakes on the two events that falsify issue labels silently: editing the body that carries theBlocked by #Ndeclaration, and reopening a closed issue.What this PR does
issues:list is now byte-identical to the caller's, order included.test/labels.test.shis extended to theissues:list, exactly as the issue specified for whichever PR landed second: #143 (for #137) merged while this one was in draft, so this branch was rebased onto it and itspr_target_types/types_in_synchelper generalized intoevent_types <file> <trigger>/types_in_sync <trigger> <caller> <stub>. #137's four rows are preserved on the shared helper; four new rows cover theissues:list — identity, the caller's full eight-type pin (D3: the caller cannot narrow to "fix" a drift), and the failing cases (a type dropped from either file, a reorder in one file only).review_requested/review_request_removedonpull_request_target:(#137) andedited/reopenedonissues:(#144), adopted together at the pin bump to the first tag carrying both — never before it, never through mixed refs. Theissues:-availability paragraph gains one clause saying the0.2.0list stops atclosed.scopejob is untouched (gated onpull_request_target; noissues:action reaches it).Test evidence
bash test/run.sh— 18 files green;labels.test.sh22 rows including the four newissues:rows beside #137's four.bash .github/scripts/shellcheck-all.sh— clean (-x, whole tracked tree).\xescapes;-vassignment only). TheNF == 1guard keepsissues: writeunderpermissions:from matching the trigger key; verified each file carries exactly one bareissues:/pull_request_target:key and each sed mutation target appears exactly once per file.self-labels.ymlis untouched by this PR (D3) —actionlinthas nothing new to say; CI runs it regardless.Acceptance criteria
issues:type lists are byte-identical,editedandreopenedincluded.test/labels.test.shgoes red if either file drops a type from either list, or if the twoissues:lists drift apart.CONSUMERS.mdcarries exactly one adoption note covering every pending stub edit, naming the tag (the first tag carrying ceremony#137 and ceremony#144).self-labels.ymlstill lists all eight types (untouched, and now test-pinned).actionlintand the full local suite are green locally; CI confirms.Worklog
issues:list byte-identical to the caller'stest/labels.test.shchangelog.d/144.mdbash test/run.sh+ shellcheck gate green locally🔎 reviewing head
0b77d4b860Verdict: approve
Reviewed head
0b77d4b860961ee01de107145d3fb1e784e54c63against #144 (Closes #144).Acceptance criteria
issues:lists byte-identical,edited/reopenedincludedtypes: [opened, edited, assigned, unassigned, labeled, unlabeled, closed, reopened]test/labels.test.shred on drop or drift of either listevent_types/types_in_synckeeps #137'spull_request_targetrows intactreview_requested/review_request_removed) and #144 (edited/reopened) into one pin-bump to the first tag carrying both;0.2.0availability paragraph correctly notes the list stopped atclosedself-labels.ymlstill lists all eight typesbash test/run.sh→ 18/18 files,labels.test.sh22/22;shellcheck-all.shclean; CItest+self-guardssuccess on this headSpec decisions (D1–D5)
issues:with the same failing-case shape as #137.scopejob out of scope; this PR only touchesdocs/CONSUMERS.md,test/labels.test.sh, andchangelog.d/144.md.Verification run
Detached worktree at the head SHA:
types_in_sync issues→ match; dropeditedfrom either side → exit 1; reorder → exit 1.NF == 1guard correctly ignoresissues: writeunderpermissions:.No blockers. Non-blocking: none worth holding the human for.
🔎 reviewing head
0b77d4b860🔎 reviewing head
0b77d4b860Approve. Reviewed the whole PR at head
0b77d4bin a detached worktree against issue #144's spec.Acceptance criteria — all verified by reading + running:
issues:list (docs/CONSUMERS.md:312) is byte-identical to the caller's (.github/workflows/self-labels.yml:11), order included:[opened, edited, assigned, unassigned, labeled, unlabeled, closed, reopened]. Confirmed by diffing the extracted lines.test/labels.test.shgeneralizes #137's helper intoevent_types <file> <trigger>/types_in_sync <trigger> <caller> <stub>; #137's fourpull_request_targetrows are preserved on the shared helper, and four new rows pin theissues:list (identity, the caller's eight-type pin, drop-from-caller, drop-from-stub, reorder). Ran it here: 22/22 green, and the three failing-case rows do exit 1 on the mutated copies as written.review_requested/review_request_removedfor #137,edited/reopenedfor #144), adopted together at the pin bump to the first tag carrying both; theissues:-availability paragraph gains the "at0.2.0the type list stops atclosed" clause. The two inline stub comments point at the same bump — not competing notes.labels.yml(thescopejob) is untouched; only 3 files changed.changelog.d/144.mdpresent, and it accurately describes the fix.What I could not verify locally, and what I relied on instead: this box has no
node,shellcheck,actionlint, orjq. The full local suite fails 63 rows in 7 files (version,changelog-armed,drill-recorded,facts,issueflow-reconcile,ruling, plus related) — I ran the identical suite on amainworktree and got the same 63 failures in the same 7 files, so none are introduced by this PR; they are environment gaps on this box.labels.test.sh— the only test file this PR touches — is fully green standalone. Foractionlint/shellcheckI relied on CI: all check runs on0b77d4baresuccess(test,self-guards,labels / reconcile, exercise jobs), the skipped/cancelled duplicates being superseded reruns.The
awkNF == 1guard correctly keepsissues: writeunderpermissions:from matching the trigger key, in both the caller and the stub. Nothing blocking.Verdict: approve
Reviewed head
0b77d4b860961ee01de107145d3fb1e784e54c63against issue #144.The implementation meets the contract:
issues:list is byte-identical to the caller’s eight-type list, includingeditedandreopened;self-labels.ymlremains unchanged.event_typeshelper is mawk-compatible and itsNF == 1guard excludesissues: writeunderpermissions:.pull_request_targetcoverage remains intact.CONSUMERS.mdcarries one combined adoption note for #137 and #144 and accurately distinguishes the0.2.0trigger shape from the first tag carrying both pending edits.scopejob are untouched.Verification:
bash test/run.sh— 18/18 test files passed;test/labels.test.shpassed 22/22 rows.bash .github/scripts/shellcheck-all.sh— clean across 39 tracked scripts.actionlint— clean.git diff --check— clean.No blocking or non-blocking findings.