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
{{ message }}
Repository navigation
chore(work-items): migrate open issues' status labels into the Work status field #13485
Slice 4 of 5 of #7577: label to Work status field cutover.
Outcome
Every open issue in this repository holds its status in the Work status field, set from its labels. This follows the owner's B5 migration decision recorded on #7577: one cut-over, count first, dry run, recount.
Proposed work class: work-class: structural
Basis: automated intake triage; the lanes App applied this class.
Size: Medium
Complexity: Medium
Uncertainty: Knowable
Flags: none
Blocked by: #13484
Understood: this is slice 4 of 5 of #7577. It sets every open issue's Work status field from the state its status labels collapse to. A dry run lists each write, then a recount lists each issue and confirms the match.
Dry run (done-when 2), 2026-11-06 ~15:10Z, lane 2. The run wrote nothing: it used only read-only gh calls (the issue list, labels, issues/<n>/issue-field-values) against main c019f67. Writes it would make: 0 of 46.
Count by label: #7577 (comment below this one in time).
The planned driver called production mirrorIssue with writeStatus stubbed out. The session's permission classifier denied it, so this run collapses the labels by models.issue-statusorder in jq instead. It compares the field's value and does not check whether a trusted account set that value. sync-status checks that (sync-status.mjsmirrorIssue), and its 04:51Z full sweep found the same result with trust checked: swept 56: wrote 0, unchanged 56, failed 0 (run 42164881498).
Per issue: number | status labels | collapses to | field | result
Next: the cut-over is the App's 04:47 UTC full sweep after #13484's first field-triggered run succeeds. The recount repeats this read after that sweep and after the hourly mirror resets #13484's field.
The work-resolve-issue run that agent-ready started ended over 3 hours ago with no report and no pull request. work-unblock removed and added agent-ready back to start a fresh run on main's workflow files. If this run ends the same way, it re-fires the issue again, waiting longer each time.
Recount (done-when 3), 2026-11-07 04:56Z, lane 2: 24 of 24 open issues match. For every open issue, the Work status field equals the state its status labels collapse to.
The cut-over: the lanes App's scheduled full sweep at 04:51Z logged swept 24: wrote 0, unchanged 24, failed 0 (49 calls) (run 42340217825).
How the recount read state: only read-only gh calls: the open-issue list, each issue's labels, and issues/<n>/issue-field-values for field 48484079. It wrote nothing.
Collapse rule: labels collapse by models.issue-statuslabels and order in docs/conventions/pr-pipeline.yaml at main ff580d7. An issue with no status label collapses to needs-triage.
Not checked: as in the dry run, this compares values only. It does not check who set them.
Per issue: number | status labels | collapses to | field | result
After the cut-over, a recount shows every open issue's field matches the status its labels collapse to, with each issue listed: this comment, 24 of 24.
Note on closed issues. The sweep lists open issues only, so a closed issue keeps its last field value. Closed #13484 still reads agent-ready, the value of its field-triggered test. That is outside this issue's done-when, which covers open issues. #13486's S3 label strip and S4 are where closed-issue values would matter, if anything reads them.
Closing as completed. #13486 S2 was waiting on this recount and can now land.
Activity
github-actions commentedon Nov 5, 2026
Proposed work class: work-class: structural
Basis: automated intake triage; the lanes App applied this class.
Size: Medium
Complexity: Medium
Uncertainty: Knowable
Flags: none
Blocked by: #13484
Understood: this is slice 4 of 5 of #7577. It sets every open issue's Work status field from the state its status labels collapse to. A dry run lists each write, then a recount lists each issue and confirms the match.
Open items:
No duplicates found. #13486 and #13483 are sibling slices, not duplicates.
Automated triage, applied by the lanes App.
melodic-automation-lanes commentedon Nov 5, 2026
Not admitted to the issue lane yet: blocker #13484 is not closed by a listed human or a merge.
melodic-automation-lanes commentedon Nov 5, 2026
The latest triage verdict holds nothing: the issue is at
status: ready.19 remaining items
kyle-sexton commentedon Nov 6, 2026
Dry run (done-when 2), 2026-11-06 ~15:10Z, lane 2. The run wrote nothing: it used only read-only
ghcalls (the issue list, labels,issues/<n>/issue-field-values) against main c019f67. Writes it would make: 0 of 46.Count by label: #7577 (comment below this one in time).
The planned driver called production
mirrorIssuewithwriteStatusstubbed out. The session's permission classifier denied it, so this run collapses the labels bymodels.issue-statusorderin jq instead. It compares the field's value and does not check whether a trusted account set that value. sync-status checks that (sync-status.mjsmirrorIssue), and its 04:51Z full sweep found the same result with trust checked:swept 56: wrote 0, unchanged 56, failed 0(run 42164881498).Per issue: number | status labels | collapses to | field | result
Next: the cut-over is the App's 04:47 UTC full sweep after #13484's first field-triggered run succeeds. The recount repeats this read after that sweep and after the hourly mirror resets #13484's field.
github-actions commentedon Nov 6, 2026
github-actions commentedon Nov 6, 2026
already-leased: another session holds a live lease on #13485, so run https://github.com/melodic-software/claude-code-plugins/actions/runs/42241726835 ran no model.
melodic-automation-lanes commentedon Nov 6, 2026
The work-resolve-issue run that
agent-readystarted ended over 3 hours ago with no report and no pull request. work-unblock removed and addedagent-readyback to start a fresh run on main's workflow files. If this run ends the same way, it re-fires the issue again, waiting longer each time.github-actions commentedon Nov 6, 2026
github-actions commentedon Nov 6, 2026
already-leased: another session holds a live lease on #13485, so run https://github.com/melodic-software/claude-code-plugins/actions/runs/42270135507 ran no model.
kyle-sexton commentedon Nov 7, 2026
Recount (done-when 3), 2026-11-07 04:56Z, lane 2: 24 of 24 open issues match. For every open issue, the Work status field equals the state its status labels collapse to.
swept 24: wrote 0, unchanged 24, failed 0 (49 calls)(run 42340217825).ghcalls: the open-issue list, each issue's labels, andissues/<n>/issue-field-valuesfor field 48484079. It wrote nothing.models.issue-statuslabelsandorderindocs/conventions/pr-pipeline.yamlat main ff580d7. An issue with no status label collapses toneeds-triage.Per issue: number | status labels | collapses to | field | result
Note on closed issues. The sweep lists open issues only, so a closed issue keeps its last field value. Closed #13484 still reads
agent-ready, the value of its field-triggered test. That is outside this issue's done-when, which covers open issues. #13486's S3 label strip and S4 are where closed-issue values would matter, if anything reads them.Closing as completed. #13486 S2 was waiting on this recount and can now land.