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
feat(work-items): setup writes the binding to the convention home and migrates the JSON file #11879
/work-items:setup apply writes .work-item-tracker.json and its gitignored overlay.
Origin: Q534, Q551; ADR 0075 fix 11.
Fix
Setup writes the binding into <home>/work-items.yaml and the overlay into <home>/work-items.local.yaml. When it finds the old JSON files, it copies their keys over, announces
it, and leaves the JSON files in place: babysit-prs, autonomy resolve-prerequisites and the work,
triage, attend-queue and track preflights still read only the JSON file. Removing it is the held #7578 slice that removes the old file (K25 in the split), after the reader migrations land. check reports a repository whose binding exists only in the JSON file.
Done when
The setup skill and its check and overlay references name the new files; no setup text tells a user to write .work-item-tracker.json.
A test migrates a fixture JSON binding plus overlay to YAML and leaves the JSON files unchanged; it passes under scripts/run-test-file.sh.
bash plugins/skill-quality/scripts/check-skill.sh plugins/work-items/skills exits 0 and bash scripts/check-changelog-fragments.sh passes with a work-items fragment.
The work-resolve-issue lane stopped partway through this issue and needs a person.
Reason: security
Why, in the run's own words:
security-risk: deleting .work-item-tracker.json, as this issue's done-when requires, weakens the babysit-prs autonomous merge hold until readers outside setup move to <home>/work-items.yaml. babysit_merge.human_gated_label (plugins/source-control/skills/babysit-prs/scripts/babysit_merge.py:254, via babysit_postmerge._role_label) reads the human-gated label only from .work-item-tracker.json, and when the file is missing it uses the default needs-human. A consumer that remaps human-gated in config.role_labels would lose that merge hold once setup migrates and removes the JSON. babysit_merge_policy.admission_label (line 2319) reads the same file. The removal also breaks functional readers: the work, triage and attend-queue binding preflights (work/SKILL.md:237 and :285, triage/SKILL.md:157, attend-queue/SKILL.md:155, track/SKILL.md:29 and the due, recheck and audit actions) check only .work-item-tracker.json, so a migrated repo would look unbound. plugins/autonomy/skills/setup/scripts/resolve-prerequisites.mjs:209 would report the tracker binding missing. A person needs to decide the order: land the reader migrations (other slices under #7578?) before this one, or have this slice keep the JSON file, or refuse to remove it while config.role_labels is set, until they land.
What the run says it did not do:
Removal of the legacy JSON is unsafe to ship until babysit-prs (babysit_merge.py, babysit_merge_policy.py, babysit_postmerge.py), autonomy resolve-prerequisites.mjs and the work, triage, attend-queue and track skills' binding and role-label preflights read <home>/work-items.yaml. Those readers
migrate-binding.test.sh was not executed: this lane allows no interpreter or test runner, so 'passes under scripts/run-test-file.sh' is left to the PR's CI. The subagent review traced every assertion by reading.
bash plugins/skill-quality/scripts/check-skill.sh plugins/work-items/skills was not run directly: no wrapper exists for it here. check-affected skipped its changed-skills step ('runs the checked tree's own skill-quality code'), so it is left to the PR's CI.
tidy: skipped because the change exceeds the 300-changed-line cutoff (225 tracked lines plus three new files).
Stale .work-item-tracker.json mentions remain outside the setup skill: reference/label-taxonomy.md:29, tracker-seam.md:167, seeds/gitea/README.md:15, seeds/linear/README.md:15, README.md, and the reader skills listed in the reason. These belong with the reader migration.
The working tree also shows untracked .bash_profile, .bashrc, .gitconfig, .idea, .mcp.json, .profile, .ripgreprc, .vscode, .zprofile and .zshrc at the checkout root. This run did not create them (they look like sandbox artifacts), and they are not part of this change.
Build and test step (verify) not run beyond the lint checks above, for the same no-interpreter reason.
Partial work is on the branch work-resolve-issue/issue-11879-41313108155-1. A retry continues from it while it is not behind the default branch, and otherwise starts fresh from the default branch; delete the branch first to always start fresh.
Re-scoped after the lane stop on run 41313108155: setup now copies the JSON binding to YAML and keeps .work-item-tracker.json, because babysit-prs, resolve-prerequisites and the work, triage, attend-queue and track preflights still read only the JSON file. Removing the JSON is the held #7578 slice that removes the old file, after the reader migrations. The stop was an ordering question inside the parent's split, not a secret, account or billing risk, so it goes back to the lanes.
This run started fresh from the default branch instead of resuming work-resolve-issue/issue-11879-41313108155-1, which is behind it. That branch keeps the earlier run's commits until the next run on this issue deletes it, when no pull request uses it.
Activity
github-actions commentedon Nov 1, 2026
github-actions commentedon Nov 1, 2026
melodic-automation-lanes commentedon Nov 1, 2026
The work-resolve-issue lane stopped partway through this issue and needs a person.
Reason:
securityWhy, in the run's own words:
What the run says it did not do:
Partial work is on the branch
work-resolve-issue/issue-11879-41313108155-1. A retry continues from it while it is not behind the default branch, and otherwise starts fresh from the default branch; delete the branch first to always start fresh.Run: https://github.com/melodic-software/claude-code-plugins/actions/runs/41313108155
To retry, remove
needs-humanand addagent-readyagain.kyle-sexton commentedon Nov 1, 2026
Re-scoped after the lane stop on run 41313108155: setup now copies the JSON binding to YAML and keeps .work-item-tracker.json, because babysit-prs, resolve-prerequisites and the work, triage, attend-queue and track preflights still read only the JSON file. Removing the JSON is the held #7578 slice that removes the old file, after the reader migrations. The stop was an ordering question inside the parent's split, not a secret, account or billing risk, so it goes back to the lanes.
github-actions commentedon Nov 1, 2026
github-actions commentedon Nov 1, 2026
melodic-automation-lanes commentedon Nov 1, 2026
This run started fresh from the default branch instead of resuming
work-resolve-issue/issue-11879-41313108155-1, which is behind it. That branch keeps the earlier run's commits until the next run on this issue deletes it, when no pull request uses it.