Commissioned by maintainer ruling on #9529 (2026-08-18, live PM chat with the triage seat, session session_01EUZUjvnLsqwHVkXkTv8TKQ; verbatim: 「其他接受你的建议」— Option 2 now, Option 1 as a v18 Feature). This card is Option 1.
Scope
Implement the in-place rewrite that the retirement prescriptions promise: an AST codemod (ts-morph is already a packages/cli dependency) over objectstack.config.ts and per-artifact authored modules (defineView / defineAgent / defineFlow shapes), covering the mechanical applied set only — the chain's semantic TODOs stay manual, exactly as #9529 records. Suggested flag shape: --write (in-place) alongside the existing --out snapshot; dry-run remains the default.
When this lands, the shared retirement sentence in packages/spec/src/shared/retired-key.ts (reworded to the honest replay-and-print statement by #9529's Option-2 half) may be restored to the automatic-rewrite claim it then honestly makes — that restoration belongs to this card's PR, in lockstep with the class-wide pin.
Scheduling
Deliberately not current-cycle work.
Restart-when: the v18 major development cycle opens (first v18 changeset-major accepted on main), or a maintainer instruction pulls it forward
Refs
#9529 (the promise-vs-tool gap and its measurement) · #9418 (the load-refusal half this builds on) · #6856 (the 2026-08-09 sentence ruling).
Commissioned by maintainer ruling on #9529 (2026-08-18, live PM chat with the triage seat, session
session_01EUZUjvnLsqwHVkXkTv8TKQ; verbatim: 「其他接受你的建议」— Option 2 now, Option 1 as a v18 Feature). This card is Option 1.Scope
Implement the in-place rewrite that the retirement prescriptions promise: an AST codemod (
ts-morphis already apackages/clidependency) overobjectstack.config.tsand per-artifact authored modules (defineView/defineAgent/defineFlowshapes), covering the mechanicalappliedset only — the chain's semantic TODOs stay manual, exactly as #9529 records. Suggested flag shape:--write(in-place) alongside the existing--outsnapshot; dry-run remains the default.When this lands, the shared retirement sentence in
packages/spec/src/shared/retired-key.ts(reworded to the honest replay-and-print statement by #9529's Option-2 half) may be restored to the automatic-rewrite claim it then honestly makes — that restoration belongs to this card's PR, in lockstep with the class-wide pin.Scheduling
Deliberately not current-cycle work.
Restart-when: the v18 major development cycle opens (first v18 changeset-major accepted on main), or a maintainer instruction pulls it forwardRefs
#9529 (the promise-vs-tool gap and its measurement) · #9418 (the load-refusal half this builds on) · #6856 (the 2026-08-09 sentence ruling).