Repository navigation
refactor(work-items)!: drop the .work-item-tracker.json discovery fallback - #15459
kyle-sexton wants to merge 5 commits into
Conversation
…lback The tracker binding is now only the tracker mapping of <home>/work-items.yaml. Every reader stops falling back to a repo-root .work-item-tracker.json: - work-items seam (lib/binding.sh): wit_find_binding fails after the YAML check, and the legacy notice is gone. wit_no_binding_reason says why no binding resolved and names /work-items:setup apply; the dispatcher, the jira/gitea/linear seeds and the onboard-adapter template print it with exit 3. - source-control babysit (babysit_tracker_binding.py): YAML only; PATHS holds one file. - autonomy prerequisite resolver: the tracker need is absent without the YAML mapping, with a detail naming the fix. - loop-lane prompt and contract shell read only the YAML. Kept per the Q316 hub decisions: migrate-binding.sh and setup's copy step, the WORK_ITEM_TRACKER_BINDING env override's JSON acceptance, and the merge-holds non-yaml branch with the workflows' temp file. BREAKING CHANGE: a repository bound only by .work-item-tracker.json gets exit 3 from every seam verb. Run /work-items:setup apply to copy it into <home>/work-items.yaml. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Pz6CBRwjqpnFDbP9Rr
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Lane-Activity: pr-refine/fix-docs
…rop-json-fallback # Conflicts: # plugins/work-items/README.md
|
claude-security-review reviewed Chunk 1 of 2 (37 files)Security review: chunk 1 of 2 (37 files)No security issues found in this chunk. This lane already reviewed an earlier head ( critical-findings: 0 What was checkedTrusted path
Loop-lane operator snippet ( Instruction-surface lens. The edits to docs and skill bodies only remove mentions of the retired JSON fallback: Fixtures, identical copies, changelog fragments. These are test data and release notes. The three identical Plugin manifests. This chunk changes no Settled thread and owner threat model. The settled thread on Spend. None: this change starts no paid resources and adds no lane runs. Chunk 2 of 2 (19 files)Security review: chunk 2 of 2 (19 files)No security issues found in this chunk. I read every hunk of all 19 files. This lane already reviewed an earlier head, so this review reported only blocking findings. None came up. critical-findings: 0 What this chunk changesThe work-items tracker seam no longer falls back to a repo-root What was checked
Settled and prior threads
Other checks
|
|
claude-review reviewed Chunk 1 of 2 (37 files)Code review: chunk 1 of 2 (PR #15459, head b34a5c9)No findings in this chunk. This lane already reviewed an earlier head ( What I checked
Manifests and versioningThis chunk changes no Other notes
Chunk 2 of 2 (19 files)Code review: chunk 2 of 2 (PR #15459, head b34a5c9)No blocking findings in this chunk. I read every hunk of all 19 files in the chunk. This lane already reviewed an earlier head ( Settled and prior points
What I checked
Manifests and versioningThis chunk changes no Other notes
|
…g reason wit_convention_home now fails 2 when the shared resolver copies are missing and 3 when the convention-home pointer is broken, keeping 1 for a declined home or a root where none applies. wit_no_binding_reason reports each: a broken pointer names /work-items:setup check (apply refuses that state), missing copies name a plugin reinstall, and the declined or no-home case keeps naming apply. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q1HHi6JACp77x2ZbE7
…rop-json-fallback
No related issue: owner decision Q316 (cohort hub)
Summary
Step 4 of the Q316 plan ("migrate, then drop"): every reader stops falling back to a repo-root
.work-item-tracker.json. The tracker binding is now only thetrackermapping of<home>/work-items.yaml. All 8 melodic-software repositories already carrydocs/conventions/work-items.yamland no JSON (the migration PRs under Related).kyle-sexton/autonomy-demo-scratchkeeps both files on purpose: its vendored seam reads only the JSON, and this PR does not touch that copy.A repository still bound only by the JSON file gets exit
3from every seam verb. The message names/work-items:setup applyas the one-step fix, which copies the JSON binding and its personal override undertracker:.Fix
tools/work-item-tracker/lib/binding.sh):wit_find_bindingfails after the YAML check, and the legacynotice:is gone. Newwit_no_binding_reasongives one line per cause: a root.work-item-tracker.jsonthat no longer binds, awork-items.yamlwith notrackermapping, a declined or inapplicable convention home (run apply from a git work tree), a broken convention-home pointer (run/work-items:setup check, since apply refuses that state), missing shared resolver copies (reinstall the plugin), or a missingWORK_ITEM_TRACKER_BINDINGfile.wit_convention_homefails 2 and 3 for the last two causes so the reason can tell them apart. The dispatcher, the jira/gitea/linear seeds and the onboard-adapter template print it with exit3.babysit_tracker_binding.py): YAML only.LEGACY_PATHis gone andPATHSholds one file, so the merge-skip cache key changes once. Babysit never exits on a missing binding: a JSON-only repository silently gets the default role labels, as a repository with no binding does today.resolve-prerequisites.mjs): with no YAMLtrackermapping the tracker need is absent, and its detail names/work-items:setup apply(and the JSON file when present). The four fixture JSONs becamedocs/conventions/work-items.yaml; the now-duplicatepositive-verdict-yaml-bindingfixture becameretired-json-binding, which asserts the absent verdict and the fix text.prompts/loops/loop-lane-prompts.md,docs/contracts/loop-lane/README.md): YAML only; the no-binding warning names apply.SKILL.mdandcheck.md(a legacy-only binding is now FAIL with apply as the remediation), README, schema description, label taxonomy, tracker-seam, and the role-resolution lines in attend-queue, track, due, recheck, triage, work, babysit-loop, safety, create, session-mode, the autonomy routines and the config-cascade table.migrate-binding.shand setup's copy step (Q2); theWORK_ITEM_TRACKER_BINDINGenv override's JSON acceptance, with its.work-item-tracker.local.jsonoverride beside it (Q3);merge-holds.mjs's non-yaml branch and the workflows' YAML-derived temp file, unrenamed, so.github/is untouched. The legacy personal-override ignore guidance stays because the migrator still reads that file.Verification
lib/binding.test.sh: 129 pass. Discovery cases now bind through YAML in a git work tree. The legacy-only, neither, non-git, declined-home, broken-pointer and missing-shared-copies cases assert the reason text, and the dispatcher exits 3 naming apply.migrate-binding.test.sh: all pass.node --test --test-concurrency=4onresolve-prerequisites.fixtures.test.mjs(25 checks) andunattended-callers.test.mjs: 5 of 5 pass.generate-identity-prerequisites.test.sh6 pass;generate-identity-prerequisites.mjs --checkin sync.*.test.shin work-items, autonomy and source-control plus the loop-lane-floor, config-cascade-semantics and plugin-contract validators (80 suites,scripts/affected-tests.shselection, 4 at a time): 80 pass. The dispatcher suite first failed one case because the missing-env-binding message did not name/work-items:setup; the message now does, and the suite passes.shellcheckon the changed shell files: clean.python3 -I scripts/check-vocabulary.pyon the changed files: exit 0.scripts/check-changelog-fragments.sh --check: valid. Ruff check: clean. gitleaks on the commit: no leaks.scripts/check-affected.sh --no-fetch: 16 passed, 0 skipped over 58 changed files. The full.githubsuite was not run (unchanged).Related
plugins/work-itemsandplugins/source-control, and fixes its ownpr-require-checks.ymlreader to read.trackerfromdocs/conventions/work-items.yaml.🤖 Generated with Claude Code
https://claude.ai/code/session_01VQb9Pz6CBRwjqpnFDbP9Rr