Repository navigation
Description
Problem
After #977 the watch-pr entry point probes for agentrepo checks watch and keeps the frozen shell watcher as the fallback for older binaries. #978 adds a byte-copy oracle and a parity test that run that frozen shell. Retirement waits on #333, #544 and the N-2 window, and no issue tracks the deletion, so the shell logic stays in the tree after the window ends.
Acceptance criteria
- AC1: Given the retirement release recorded in AC3,
watch-checks.shonly probes for and executesagentrepo checks watch. Supported: arguments, stdout, stderr and exit status pass through unchanged, including operational failures (1, 2, 76). Absent binary and binary without the subcommand: nothing runs, one actionable message goes to stderr naming the missing capability and how to install a supporting binary (the release-asset pin from feat(distribution): migrate consumer tool pins to release assets #544), and the script exits with exit status 127. The probe makes no reads and no side effects. Only the existing probe-and-exec boundary remains: no new decision or diagnostic logic in shell. - AC2: Remove the frozen fallback body, test(checks): prove watch command parity against the pinned shell #978's oracle fixture and its parity test, and any remaining comparison fixtures, from the canonical source,
packages/agents/claude/.apm/skills,packages/agents/codex/.apm/skills, and the deployed.claude/skillsand.agents/skills. Standalone Go behavior tests of the command stay. - AC3: Before implementation, record in
docs/compatibility.mdanddocs/agent-skills-migration.mdthe release that first shipped the feat(checks): route the watch wrapper to the Go command #977 wrapper (the warning start), the retirement release (at least two releases later, per the policy's warning period), and the evidence for both:git tag --contains <#977 merge commit>, the tag list, and the release that first carries the assets from Ship the Go binaries as release assets installed through mise's github backend #333 and the pin migration from feat(distribution): migrate consumer tool pins to release assets #544. - AC4: Non-functional:
mise run check,mise run cover-go-checkandmise run cover-py-checkpass, no gate is loosened, and the regenerated skills, token records and lock are committed.
Scope and non-goals
In scope: removing the fallback after the window, and the documentation of the retirement release. Non-goals: changing the Go watcher, shortening the window, and any distribution change (#333, #544).
Approach
Resolve the retirement release from the AC3 procedure first, and stop if the current release is earlier. List the fallback, oracle and parity-test paths from the merged #977 and #978 changes, then delete them together. Keep only the existing probe and its refusal path. Run mise run generate-skills, then mise run skill-tokens, then apm install, and commit what they rewrite.
Dependencies
Blocked (native links) by #977, #978, #333 and #544. #978 owns the oracle and parity test that this change deletes; without the link it could land later and restore the frozen implementation. Also blocked by the end of the window per AC3. Native parent: #793. Part of #588.
Size
S.
Verify plan
- AC1: with scripted stand-in binaries, run the entry point with a supporting binary and assert byte-equal arguments, stdout, stderr and statuses, including a supported run returning 1, 2 and 76 that is never retried or replaced. Run with no binary and with a binary lacking the subcommand, and assert exit status 127, that the message is on stderr and names the installation step, that stdout is empty, and that the probe made no reads. Inspect the script to assert it contains only probe-and-exec logic.
- AC2: take the artifact list from the merged feat(checks): route the watch wrapper to the Go command #977 and test(checks): prove watch command parity against the pinned shell #978 changes. Assert that none of those paths exists, and that
git ls-filesplusgit grepoverpackages/agents,.claude/skills,.agents/skills,testsanddocsfind no executable reference to them, by name or by the baseline bloba0347a715fab580ece45edfcb3d13509620459a8. Assert the Go watcher tests still run and pass. - AC3: read both documents and assert they name the warning-start release, the retirement release and the evidence. Assert the current release is not earlier than the retirement release.
- AC4: run
mise run check,mise run cover-go-checkandmise run cover-py-check, thenmise run generate-skills,mise run skill-tokens,apm installandmise run check-generated-skills, and assert exit 0 with no uncommitted change. Compare packaged and deployed entry points, token metadata and lock changes independently. - D1–D10: verify every AC on the merged head and cite its evidence in the PR; obtain independent exact-head approval and passing required checks; complete gitleaks, the repository leak scan and the review of every content post; sign commits and squash; update docs; include Assisted-by trailers and the provenance:agent-assisted label; check the actual PR size; file follow-ups with a Problem and numbered ACs and list them in PR Related; close the issue with a closing reference, move it to Done and record the merge commit in the final Status comment.
Risks
Removing the fallback early breaks consumers on an older binary, so the change waits for the AC3 evidence. Reverting the commit restores the fallback.
Operator authority
None.
Metadata
Metadata
Assignees
Labels
Type
Fields
Priority
Work type
Projects
- StatusShow more project fieldsBacklog
Activity
tbhb-dev-reviews commentedon Oct 31, 2026
Refinement: NOT READY — define the retirement boundary and complete verification
Checked
Gaps
Split
No split needed. Keep one S retirement PR after its prerequisites and compatibility window, without distribution or watcher behavior changes.
Definition of done
Ticks mark coverage in the current ACs and Verify plan, not completed implementation. D1 is partial: IDs are traced, but cases and merged-head PR evidence remain missing. D8 has a plausible S estimate but no actual size check.
check-leaks.shwith the repository's private-strings list, and the leak review of each post.docs/, CHANGELOG or help text), or the Verification section says "No doc impact" and why.provenance:agent-assistedlabel.Status:comment names the merge commit.mise run checkis green, and so are the coverage floorsmise run cover-go-checkandmise run cover-py-check, whichcheckdoesn't run.packages/agents/source/commits whatmise run generate-skills, thenmise run skill-tokens, thenapm installrewrite, in that order, andcheck-generated-skills(part oflint) passes.docs/agent-skills-migration.mdor the adoption docs, or the PR's Verification says "No consumer impact" and why.Round: 1 of 3
tbhb-dev-reviews commentedon Oct 31, 2026
Refinement: NOT READY — native prerequisite and parent links remain missing
Checked
Gaps
Split
No split needed. Keep one S retirement PR after the prerequisites and documented compatibility window.
Definition of done
Ticks mark coverage in ACs and Verify, not completed implementation. D2 and D9 need the small completion details noted below.
Complete the D2/D9 wording alongside the native metadata correction; no further scope expansion is needed.
Round: 2 of 3
tbhb-dev-reviews commentedon Oct 31, 2026
Refinement: READY — native prerequisites and retirement safeguards are in place
Checked
Gaps
No blocking Definition of Ready gaps remain. Two completion details from round 2 remain implicit in the D1–D10 Verify bullet: resolve every review finding or file it as a follow-up (D2), and link any deferred work left in code to its issue (D9). The checklist below preserves those obligations. These are non-blocking DoD wording omissions under the current warn-only DoD policy.
Split
No split needed. Keep one S retirement PR after its prerequisites and compatibility window.
Definition of done
Ticks mark coverage in the current ACs and Verify plan, not completed implementation. D2 and D9 remain unticked because their complete wording is not explicit in the plan.
check-leaks.shwith the repository's private-strings list, and the leak review of each post.docs/, CHANGELOG or help text), or the Verification section says "No doc impact" and why.provenance:agent-assistedlabel.Status:comment names the merge commit.mise run checkis green, and so are the coverage floorsmise run cover-go-checkandmise run cover-py-check, whichcheckdoesn't run.packages/agents/source/commits whatmise run generate-skills, thenmise run skill-tokens, thenapm installrewrite, in that order, andcheck-generated-skills(part oflint) passes.docs/agent-skills-migration.mdor the adoption docs, or the PR's Verification says "No consumer impact" and why.Round: 3 of 3