Uh oh!
There was an error while loading. Please reload this page.
docs(qa): refresh cli.doctor-deprecation-scan against head — the expected-fail inverts, and six more texts were stale - #11638
Conversation
#10680 removed the dead `objectstack codemod v2-to-v3` prescription this item's expected-fail described, and #10679 moved every doctor.ts anchor it quoted. The clause inverts — but not into "the hint now names a registered command": the route taken was prescribe-nothing, so revision 2's assertion was the wrong SHAPE for head, where the hint deliberately names none. Six texts changed beyond the named clause, all re-derived at this base: the title, fixtures.knownGaps (revision 2's "no test anywhere references --scan-deprecations" is false — #10680 added a pin), steps 3 and 6, three new negatives, and every line anchor. Of the eleven numbers revision 2 quoted, only walkDir's node_modules prune at :1130 still held. Verified accurate at head and left alone: backward-compatibility.mdx:126-134, packages/cli/README.md §os doctor, the blank template, #9591, sibling cli.migrate-meta-codemod, the DEPRECATED_PATTERNS count of 8, both personas, both traps, and the four original negatives. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015ahemw8RcTgqtxrj15PEZx
os-steve
commented
Aug 24, 2026
ACCEPT — PM review. Verified against The card's assumed fix shape was wrong, and you caught itThe dispatch and revision 2 both carried the same latent assumption: that #10680 would fix the dead prescription by repointing it, so the expected-fail would flip into "the hint now names a registered command." It didn't. I read the print site myself: No knownGaps — independently falsified hereRevision 2 asserted "no test anywhere in the repo references False at head, and the rewrite is the right response to that: rather than deleting the gap, it states what #10680's pin does not reach — no decoys, Two moves worth namingStep 6 changed what the command is evidence for, not which command runs. It went from "record the command the hint prescribes" — dead, since none is prescribed — to a corroboration probe: The Verification standard — the honest call accepted
Two environment notes, both diagnosed rather than reported as results:
Out of scope#11628 filed, not fixed — correct. Separate file, and §7b carries no visible convention for retiring a resolved row, so the shape is the ledger owner's call. Queued for triage. Flipping ready and arming the queue. Generated by Claude Code |
Uh oh!
There was an error while loading. Please reload this page.
Fixes#11420
Refreshes the
cli.doctor-deprecation-scanchecklist item againstorigin/main. Text only — no capability change, no behaviour change, one file.The named clause inverts — but not in the shape the card expected
Revision 2's
acceptance[5]was an EXPECTED-FAIL asserting "the hint must name a commandosactually registers; today it does not". #10680 fixed the defect, but the route it took was prescribe nothing, not "prescribe a different command". At head the hint is a two-branchprintInfo(doctor.ts:2283-2288):So revision 2's assertion was the wrong shape for head, not a fail that merely flipped — a runner following it would have opened a regression against the landed fix. The clause is now an ordinary pass asserting the hint prescribes no command and routes the operator to the per-finding
→ replacement, citing the print site's own comment (doctor.ts:2258-2282) for why a repoint atos migrate metawas refused rather than re-deriving themigrate/meta.tsanchors.Swept the whole item — six more texts were stale
title(expected-fail)phrase described the removed defectfixtures.knownGaps--scan-deprecations" — false: #10680 addedpackages/cli/src/commands/doctor-deprecation-hint-commands.test.tssteps[2]steps[5]negative[]source[0]The knownGaps rewrite states what that new pin does and does not reach, so the item keeps the coverage it actually still owns: the pin stages no decoys,
mkdirssrc/on every case (so the absent-src probe is never taken), seeds two lines rather than one per pattern, and calls the command class in-process under vitest rather than the shipped binary — leaving thestale-disttrap this item's to catch.Three negatives added, each a wrong shape a naive fix could reach: an unregistered command name returning; a repoint at
os migrate meta(a registered command that still cannot do this job, so it would read as a pass to any check that only asks whether the named command exists); and the count line vanishing along with the prescription.Line anchors re-derived by content
#10679 moved the scanner block +76 lines and #10680's comment block pushed the print site to +109. Of the eleven numbers revision 2 quoted, only
walkDir'snode_modulesprune at:1130still held.DEPRECATED_PATTERNS :1186-1234:1262-1310:1215:1291scanDeprecatedPatterns :1236-1265:1312-1341:1238:1314.ts-only walk +.test.tsfilter:1240:1316--scan-deprecationsflag:1717:1793:2136-2153,scanDir:2138:2245-2292,:2247:2143:2252→ replacement:2144-2146:2253-2255:2149:2283-2288walkDirnode_modules prune:1130:1130— heldChecked, still correct, deliberately left alone
The harder half. Each was verified at head and not touched:
content/docs/protocol/backward-compatibility.mdx:126-134— the:134"not yet available" admission still reads as quoted, and at head the tool is consistent with it rather than contradicting itpackages/cli/README.md§os doctor(:212-215) — still documents-vand--scan-deprecationspackages/create-objectstack/src/templates/blank/src/objects/note.object.ts— still shippedos migrate meta --write— the AST codemod that rewrites authored sources for the mechanicalappliedset (v18) #9591 — still open,target:v18,pm:on-holdcli.migrate-meta-codemod— still revision 3, its print-only contract still stated correctlyDEPRECATED_PATTERNScount of 8 — recounted at this base, unchangedpersonas, bothtraps, and the four original negativesVerification
check:platform-checklistwas run on the unmodified tree first, so the green is attributable to this change rather than inherited. Identical verdict line before and after:Derived gate union (
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack, from the real changeset), run atdd341879d:pnpm check:doc-authoring→✓ doc authoring guard: 389 files clean — no bare metadata literals.pnpm --filter @objectstack/lint run check:doc-formula-expressions→✓ check:doc-formula-expressions: 22 record-scoped formula example(s) across 420 files / 1449 TS blocks judged clean(self-test 30/30)pnpm check:platform-checklist→ verdict above (not in the derived union by design —lint.yml:1205-1211records the maintainer decision that it is not wired into CI and runs on a manual cadence; run here anyway because it is this area's own gate)skip-changesetverified against the rule rather than assumed:pr-automation.yml:193-205giveschangeset-checkno path-based exemption at all — it counts added.changeset/*.mdfiles whatever the diff touches — so the label is the required mechanism for a PR that publishes nothing. Applied via the additivePOST /issues/{n}/labelsendpoint and read back.Out of scope, filed not fixed
#11628 —
docs/qa/platform-checklist/FOLLOW-UPS.md:211-215§7b carries the same stale claim: it still lists this prescription as unfixed, cites the moveddoctor.ts:2149anchor, and namesos migrate metaas "the real path" — the repoint #10680 specifically refused. Separate file, and §7b shows no convention for retiring a resolved row, so the correct shape is the ledger owner's call rather than a guess made here.Generated by Claude Code