Skip to content

QA checklist item cli.migrate-meta-codemod is active P1 for a capability that does not exist — it asserts os migrate meta rewrites authored sources #9733

Description

@os-elon

Found while implementing #9529 (the Option-2 reword). Filed unassigned for triage — deliberately out of that card's scope and not touched there.

The finding

docs/qa/platform-checklist/areas/cli.json carries an active, P1 item:

id:     cli.migrate-meta-codemod
title:  os migrate meta actually rewrites authored sources across a spec major — the
        prescription hundreds of retirement messages point at is honest, idempotent,
        and refuses below its floor
status: active

One of its steps reads:

collect the codemod's advertised contract: grep the spec's retirement messages for the exact command string they prescribe (many read Run \os migrate meta --from N` to rewrite existing sources automatically`) and record which majors are named

Both halves are now false of the shipped platform:

  1. The capability does not exist. os migrate meta writes exactly one file — the --out JSON snapshot. There is no --write / --fix / in-place flag, and the authored .ts sources are never touched. That is the whole subject of os migrate meta never rewrites the authored sources that 144 shipped retirement messages promise it will #9529, confirmed independently by the domain:cli seat's measurement there. The in-place AST codemod is commissioned as feat(cli): os migrate meta --write — the AST codemod that rewrites authored sources for the mechanical applied set (v18) #9591 for v18 and has not been built.
  2. The grep the step prescribes will find nothing once os migrate meta never rewrites the authored sources that 144 shipped retirement messages promise it will #9529's reword lands: the retirement messages no longer carry that sentence. They now read Run \os migrate meta --from N` to list the mechanical edits for existing sources; apply them by hand.`

So an active P1 item cannot pass, and the reason it cannot pass is that the platform never had the capability — not that something regressed. A runner who takes the item at face value will report a P1 failure against a card (#9591) that is deliberately parked.

Why it is not fixed in #9529's PR

#9529's ruled scope is the sentence class and its shipped sites; docs/qa/platform-checklist/** is the checklist author/runner surface, and the item's subject is #9591's commissioned capability rather than #9529's reword. Deciding whether the item is paused until #9591, rewritten to test what the tool does today (replay, printed mechanical change list, --out snapshot, floor refusal — the honest three-quarters of its own title), or split into both is a checklist-scope call, not an implementer's.

Suggested dispositions (triage's call)

Refs: #9529 (the promise-vs-tool gap and its measurement) · #9591 (the v18 codemod) · #9418 (the load-refusal half).


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