Repository navigation
QA run · cli.migrate-meta-codemod (1/1) · fb82f9b1 · 2026-10-16 · 1 PASS / 0 PARTIAL / 0 FAIL / 0 BLOCKED / 0 NOT-RUN #23996
Description
Run record for the re-run #23950 asks for, after its six stale clauses were re-pointed. Runner: an os-dev subagent dispatched by the domain:devx seat 2 PM (session session_016PVjjuVPte5XEJvaQx1E4t). Protocol: .claude/skills/checklist-test/SKILL.md + docs/qa/platform-checklist/RUNNER.md. Executed sequentially (no subagent tool in this runner).
Environment fingerprint
- framework:
fb82f9b180bcc6af04ce8d36153fd52d2eb6845c, the tip of branchclaude/issue-23950-checklist-stale-clausesat run time. Its product tree isorigin/main022c6e799; the branch addsdocs/qa/platform-checklist/areas/*.jsononly. Built withpnpm install --frozen-lockfile && pnpm build(75/75 tasks green). .objectui-sha:daeb77fc84dd824e74c95b87cdede85afdb248e7(no console in this item).- command:
node packages/cli/bin/run.js migrate meta …with stdin from/dev/null, run inside scratch copies ofexamples/app-showcase(node_modulessymlinked). The checked-out app was never the subject of a run. - trees:
app0stock;app1planted (the runs without --write);app2planted (WRITE MODE) with a byte copyapp2.orig;app3planted (--write --json). The plants are four retired spellings:striped: trueon theAll Projectslist view (17.ui__ListView__striped),currencyConfig.precision: 2on a plain-literal currency fieldfee(18.data__CurrencyConfig__precision),errorHandling.retryDelayMson a flow, anddefaultValue: '10:00Z'on a time field. - timestamps: 2026-10-16, 16:28Z to 16:34Z.
Scope
Selector cli.migrate-meta-codemod resolves to 1 runnable item: cli.migrate-meta-codemod at revision 5, P1, surface cli. The item text was read at branch head c4bf2ba4e. After the run, step 8's parenthetical about the runtime's protocol major was corrected to 18, which the Chain: line below measures. No pin is declared (automated unset). The supporting suite pnpm --filter @objectstack/cli exec vitest run --maxWorkers=2 test/migrate-meta-write.test.ts passed 23 of 23.
Registry sizes: retired-defs 223 entries, retired-keys 268, semantic 466. The house sentence is in packages/spec/src, prescribing os migrate meta --from 16 at 122 lines and --from 17 at 114.
Per-clause verdicts
| item | # | clause (short) | verdict | evidence |
|---|---|---|---|---|
| cli.migrate-meta-codemod | 0 | every planted spelling listed with its successor | pass | --from 16 exit 0. Applied 7 mechanical change(s): lists views[1].list.striped: striped → (removed) (view-list-passthrough-keys-removed), objects[14].fields.fee.currencyConfig.precision: precision → (removed) (currency-config-precision-removed), flows[31].errorHandling.backoffMs: retryDelayMs → backoffMs (retry-policy-converged) and objects[14].fields.remind_at.defaultValue: "10:00Z" → "10:00" (time-default-utc-suffix-dropped), plus three flow-decision-mode-inclusive-explicit edits the stock tree carries |
| cli.migrate-meta-codemod | 1 | without --write the sources are untouched | pass | md5 of all 112 files in app1 before and after the seven runs without --write (--from 16 twice, with --out, with --json, --from 5 twice, --from 18): identical; the only new path is the --out target outside the tree |
| cli.migrate-meta-codemod | 2 | --out snapshot migrated, verdict honest | pass | snapshot: striped absent, fee.currencyConfig = {currencyMode: fixed, defaultCurrency: USD}, backoffMs: 2000, remind_at default 10:00, three decisions mode: inclusive; ✓ Migrated stack is schema-valid agrees with --json schemaValid: true (7 applied) |
| cli.migrate-meta-codemod | 3 | idempotent replay; empty range answered as empty | pass | --from 17 over the written tree app2: no Applied block, exit 0, 389 manual change(s) require your judgment:, Chain: protocol 17 → 18 (this runtime implements protocol 18); two identical runs over it, and the two identical planted runs, each diff empty once the (Nms) elapsed stamp is normalized (the raw diff is that stamp alone); --from 18: ⚠ No migration step exists for protocol 18 → 18, so this run replayed nothing — that is not a finding that the metadata is canonical.; control: the stock tree app0 --from 17 lists 3 decision-mode edits, so it is not canonical |
| cli.migrate-meta-codemod | 4 | below-floor --from refused | pass | --from 5: exit 1, ✗ Cannot migrate from protocol 5: the chain's support floor is 16 (ADR-0087 D3). …; --json form: exit 1, {"error":"unsupported_from_major", …} |
| cli.migrate-meta-codemod | 5 | semantic entries surface as advisories | pass | 466 manual change(s) require your judgment: with why/verify text, printed apart from the Applied block; none of them was written by --write (see 7) |
| cli.migrate-meta-codemod | 6 | --json exits 0 on success | pass | --from 16 --json exit 0, keys absentTodos, applied, dataMigrations, duration, from, protocolVersion, schemaValid, specChanges, to, todos |
| cli.migrate-meta-codemod | 7 | --write rewrites exactly the provable edits, held to a re-run | pass | --help lists --write ("Rewrite the authored source files in place for each mechanical change traced to one literal in one project file, … Never writes the manual (semantic) changes.") and --all. app2 --from 16 --write exit 0: Wrote 7 of 7 mechanical change(s) into 4 file(s):, each site with file and line, then ✓ Re-ran the chain over the written sources: no mechanical change remains. diff -r against the byte copy touches only the 4 named files at the 7 named lines. Re-run without --write over the written tree: no Applied block, with the same 466 advisories byte for byte. Second --write: ℹ --write: the chain made no mechanical change here, so no file was written. app3 --write --json: exit 0, write.status written, 7 entries in write.written[] each with file and line, manual [], verification {ok: true} |
Refusal path, measured on a separate tree and not scored: the same precision: 2 planted inside the stock Field.currency({ … }) call on semantic-zoo.object.ts gave Wrote 6 of 7, listing it under 1 mechanical change(s) left for you to apply by hand: with not written [helper]: the value is built by Field.currency(…), not written as a literal, and Re-ran the chain over the written sources: only the 1 change(s) left above remain. (exit 0). The item's third knownGap names this as the contract working, so the entry was re-planted as a plain literal for the scored leg above.
Derived item verdict
cli.migrate-meta-codemod r5: pass (8 of 8 clauses).
Timing: about 6 minutes of legs, on the build shared across this re-run's five records.
Checklist-accuracy findings close out on the wave anchor #23878. The one this run found, step 8's protocol-major parenthetical, was corrected inside revision 5 on #23950's branch.
Activity
objectstack-fleet commentedon Oct 17, 2026
Close-out (
domain:devxseat 2): every clause PASS; nothing to extract. The re-pointed item landed with #24000 (e18b23fac5), Fixes #23950.Generated by Claude Code