Found while fixing #10680 (the os doctor --scan-deprecations hint that prescribed the same non-existent command). Filed rather than folded in: that card's fence is explicit that a docs page stating the command exists is evidence, not necessarily something to edit under it.
What the README claims
packages/cli/README.md:116-119 gives the command its own section, in the same table format as every real command:
### Code Transforms
| Command | Description |
|---------|-------------|
| `os codemod v2-to-v3` | Migrate ObjectStack v2 config to v3 format |
and packages/cli/README.md:305-306 shows it in the source-tree listing as if the files were there:
│ ├── codemod/ # os codemod (subcommand)
│ │ └── v2-to-v3.ts
What is actually registered
Neither exists. oclif resolves this CLI's commands by globbing dist/commands/**/*.js (package.json → oclif.commands, pattern strategy); there is no src/commands/codemod/ and neither bundled plugin (@oclif/plugin-help, @oclif/plugin-plugins) supplies one. Probed against the built binary at af5c564352:
$ node packages/cli/bin/run.js codemod v2-to-v3
› Error: command codemod:v2-to-v3 not found # exit 2
$ node packages/cli/bin/run.js codemod --help
› Error: Command codemod not found. # exit 2
Corroborating sources that already say so: content/docs/protocol/backward-compatibility.mdx:134 ("An automated codemod command is referenced in the migration guides but is not yet available"), docs/DX_ROADMAP.md:127 (tracked, marked not built), and the in-place AST codemod commissioned as #9591 (v18, pm:on-hold) and not yet built. The codemods that do exist are the two reporter scripts under scripts/codemod/, invoked as node scripts/codemod/*.mjs — not os codemod.
Why it matters
Same class as #10680, one surface over: the CLI's own README is where an operator looks to find out what the CLI can do, and this table entry reads exactly like the 60 rows that are real. Following it costs them their time before oclif tells them it was never built. #10680 removed the tool's version of this claim; the README is now the last place still making it.
Adjacent staleness in the same block
The same source-tree listing at :299 shows projects/ with list/show/create/switch/bind. Under the v5.0 project → environment rename (ADR-0006, no aliases) the directory is src/commands/environments/ and the commands are os environments …. Worth fixing in the same pass on that block.
Suggested fix
Drop the ### Code Transforms section and the codemod/ node from the tree listing, or mark them as not-yet-available in the way backward-compatibility.mdx already does. Refresh the projects/ node to environments/ while in there. Docs-only for packages/cli; no code change implied.
Found while fixing #10680 (the
os doctor --scan-deprecationshint that prescribed the same non-existent command). Filed rather than folded in: that card's fence is explicit that a docs page stating the command exists is evidence, not necessarily something to edit under it.What the README claims
packages/cli/README.md:116-119gives the command its own section, in the same table format as every real command:and
packages/cli/README.md:305-306shows it in the source-tree listing as if the files were there:What is actually registered
Neither exists. oclif resolves this CLI's commands by globbing
dist/commands/**/*.js(package.json→oclif.commands, pattern strategy); there is nosrc/commands/codemod/and neither bundled plugin (@oclif/plugin-help,@oclif/plugin-plugins) supplies one. Probed against the built binary ataf5c564352:Corroborating sources that already say so:
content/docs/protocol/backward-compatibility.mdx:134("An automatedcodemodcommand is referenced in the migration guides but is not yet available"),docs/DX_ROADMAP.md:127(tracked, marked not built), and the in-place AST codemod commissioned as #9591 (v18,pm:on-hold) and not yet built. Thecodemods that do exist are the two reporter scripts underscripts/codemod/, invoked asnode scripts/codemod/*.mjs— notos codemod.Why it matters
Same class as #10680, one surface over: the CLI's own README is where an operator looks to find out what the CLI can do, and this table entry reads exactly like the 60 rows that are real. Following it costs them their time before oclif tells them it was never built. #10680 removed the tool's version of this claim; the README is now the last place still making it.
Adjacent staleness in the same block
The same source-tree listing at
:299showsprojects/withlist/show/create/switch/bind. Under the v5.0project→environmentrename (ADR-0006, no aliases) the directory issrc/commands/environments/and the commands areos environments …. Worth fixing in the same pass on that block.Suggested fix
Drop the
### Code Transformssection and thecodemod/node from the tree listing, or mark them as not-yet-available in the waybackward-compatibility.mdxalready does. Refresh theprojects/node toenvironments/while in there. Docs-only forpackages/cli; no code change implied.