Skip to content

Checklist maintenance: cli.doctor-deprecation-scan is stale — its EXPECTED-FAIL describes a hint #10680 already rewrote, and #10679 moved every line anchor it quotes #11420

Description

@claude

Found while revising the sibling item cli.doctor-health-report for #10798. That card's declared file surface was that one item only, so this is filed rather than folded into its PR — and docs/qa/platform-checklist/areas/cli.json is the hot shared file of the #10663 QA-run lane, where a second item's edit is separate authoring work owing its own revision bump plus a history entry.

Measured at origin/main @ bb006446, against packages/cli/src/commands/doctor.ts.

1. The EXPECTED-FAIL clause (acceptance[5]) no longer describes head

It states: "the remediation hint printed after hits (doctor.ts:2149) prescribes objectstack codemod v2-to-v3, but no codemod command is registered anywhere in packages/cli/src/commands/ … The clause: the hint must name a command os actually registers; today it does not".

That hint changed in #10680. At head (doctor.ts:2284) it reads:

Found N deprecated pattern(s). No automated codemod ships with the CLI — apply each finding's replacement by hand (re-run with --verbose to print them).

The route taken was "prescribe nothing" rather than "prescribe a different command"; the reasoning is written out at doctor.ts:2258-2281 (os migrate meta cannot touch src/** TypeScript, os lint --fix is print-only). So the clause is not simply a fail that flipped to a pass — its own assertion ("the hint must name a command os actually registers") is the wrong shape for head, where the hint deliberately names none. It wants the same inversion #10798 applied to the sibling item: an ordinary pass clause asserting the hint prescribes no command and routes the operator to the per-finding → replacement lines instead.

One half of the citation still holds: content/docs/protocol/backward-compatibility.mdx:134 reads as the item quotes it.

2. Every doctor.ts anchor the item quotes has drifted

#10679 inserted ~90 lines above this item's whole anchor set (the MonorepoTreeScan type, the skip-notice helper, the two rewritten scans) and #10680 added its comment block below. Quoted vs. measured at bb006446:

quoted in the itemat head
DEPRECATED_PATTERNS :1186-1234:1262-1310
retired lookup-scoping pair :1215:1291
scanDeprecatedPatterns :1236-1265:1312-1341
absent-dir early return :1238:1314 (if (!fs.existsSync(dir)) return results;)
.ts-only walk + .test.ts filter :1240:1316
--scan-deprecations flag :1717:1793
scan block :2136-2153, scanDir = <cwd>/src :2138:2247
per-hit warning row :2143:2252
verbose → replacement:2144-2146:2254-2256
remediation hint :2149:2284
walkDir node_modules prune :1130:1130 — the only anchor that held

The item's own "8 entries at authoring time" count for DEPRECATED_PATTERNSdoes still hold; I recounted the table at head and it is 8. That part needs no edit.

Nothing is red, and nothing will go red

check:platform-checklist is structural — ids, revisions, oracles, trap vocabulary — and never judges whether a clause is true. It is also not wired into CI at all: .github/workflows/lint.yml carries the note "by MAINTAINER DECISION it is NOT wired into CI — it runs on a periodic manual cadence". So this rots silently until a runner reads the item.

Owed on a fix

One revision bump to 3 on cli.doctor-deprecation-scan, plus a history entry carrying a ref. Same file surface discipline as #10798: that one item only.


Generated by Claude Code


Generated by Claude Code

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions