Skip to content

test(cli): migrate-meta e2e replays only the conversions step 17 still registers - #27132

Merged
objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/issue-27114-migrate-meta-e2e
Oct 28, 2026
Merged

objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/issue-27114-migrate-meta-e2e

Conversation

@objectstack-fleet

@objectstack-fleet objectstack-fleet Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Part of #27114

Clause-②: no
Metadata-protocol: none

维护者速读

What changes

#26599 (dbf7e04adf, ruling 6434038284 on #25767) removed the 45 conversions retired at 16.1.0 from step 17's conversionIds. It re-pointed the unit-tier cli pins but not this file, which runs only under OS_TEST_TIERS=nightly. The 2026-10-28 nightly (run 40638682260) went red on six of its cases.

All six failures come from that narrowing:

  • The main fixture carried one shape per 16.x conversion family. Nine of the ten families it expected are no longer registered, and --from 16 leaves those shapes as written. So the run attributes nothing to them, and the snapshot keeps responsive, performance, aria and defaultSort as unknown keys. That breaks schemaValid, the per-family attribution, the --out re-parse and idempotence.
  • The os migrate meta --from <N> cannot load the retired-key sources it exists to fix — validates through the post-retirement schema before converting #9418 fixture carried agent.knowledge and skill.triggerPhrases. Their tombstones and conversions left the spec with the 16.x kits, so the load no longer converts them, and os validate answers with the strict unknown-key refusal that names the protocol upgrade guide, not the retired-key prescription.

The fix is in this one file. No case is added, removed, renamed or skipped, so the count stays at 19.

Acceptance notes

  1. Option (a), not (b). If an aged-out shape were kept, the replayed snapshot would be schema-invalid by design. That would break the schemaValid, re-parse and idempotence cases that the 12 surviving families need, and asserting the refusal instead would need a separate fixture and a new case. The ruled refusal itself, the unknown-key message naming the upgrade guide, was observed while reproducing this failure (the nightly log's os validate output). The spec owns the unit pins for it.
  2. Wider family coverage than before. Before the narrowing, the file covered one step-17 family that still survives: sharing-rule. It now covers all 12 that step 17 registers, which restores the docblock's stated purpose: "one key from every v17 conversion family in a single pass".

Tests

At head e3006f2bd (the patch that moved the #9418 fixture off agent.lifecycle; addendum 6464184183 on #27114): packages/spec test:repo 81/81 files, 1324 tests (agent-lifecycle-retirement.test.ts 14/14); the nightly e2e 19/19; the cli unit project 343/343 files; derived gates 47 at exit 0, 1 NOT-MEASURED (check:dual-build-cjs-loads, dist absent). The readings below are the first head's.

At head f73c11c8 (this branch, merged with origin/main 6817bf1ea):

  • OS_TEST_TIERS=nightly pnpm --filter @objectstack/cli exec vitest run test/migrate-meta.e2e.test.ts: before the fix, at d90657b2, Tests 6 failed | 13 passed (19), the same six the nightly names. After: Tests 19 passed (19), lock VERDICT command-exit 0.
  • pnpm --filter @objectstack/cli exec vitest run --project unit: 341 of 343 files and 4929 tests passed, 29 skipped. The two remaining files (published-subpath-console.pin, published-subpath-hook-body.pin) refused before any test because cli's own dist/ was not built. After pnpm --filter @objectstack/cli build both passed (29 tests).

Verification

Derived gates (dispatch-gates --commands, 48 families)
  • 47 exited 0.
  • node scripts/check-plugin-teardown-shape.mjs --self-test first exited 3 (prerequisite: its pinned positive-control commit was outside the shallow clone). After fetching that commit, it exited 0 (48 cases).
  • pnpm check:dual-build-cjs-loads exited 3, PREREQUISITE NOT MET: it reads every package's dist/, and only the cli closure was built. Recorded as NOT MEASURED; CI's Lint and Repo Gates runs it.
  • dispatch-gates --ran: 48 derived, 47 run, 1 NOT-MEASURED (derived from the recorded exit 3), 0 UNRUN.

Generated by Claude Code

…l registers

#26599 aged the protocol-16.x conversions out of step 17, so `os migrate
meta --from 16` no longer rewrites the fixture's action/flow/view/dashboard/
agent/skill/tool/rls shapes and the snapshot kept them as unknown keys. The
fixture drops those shapes and carries one per conversion step 17 still
registers (pinned equal to MIGRATIONS_BY_MAJOR[17].conversionIds), and the
retired-key case re-points to tombstones that still stand (agent.lifecycle,
dashboard.refreshInterval).

Claude-Session: https://claude.ai/code/session_01QSeKYnN7X5PL1HWYjGfKJY
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 28, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

Nothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 0 changed package(s)), so this run has no opinion about the docs.

What this run could not see

Coarse fallback — 0 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json e6e41998a8d4543f5935e7c45145dfc3d6fe0e26 → packageMentionDocs.

…tree-absence pin

agent.lifecycle's retirement pins the key absent from the tree outside its
kit, so authoring it in this fixture redded spec's test:repo. The #9418
fixture now carries `structuredOutput.format: 'regex'` inside defineAgent
(agent-structured-output-refused-members-removed, protocol 18) beside the
Dashboard.create refreshInterval tombstone.

Claude-Session: https://claude.ai/code/session_01QSeKYnN7X5PL1HWYjGfKJY
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 — ACCEPT · domain:devx#2 · head e3006f2bdc · 2026-10-28T08:26Z

席位意见:合入。修掉 #27114 的第一个失败文件(cli 的 migrate-meta e2e):fixture 对齐第 17 步仍登记的 12 个 conversion,并加了注册表钉子,以后再有 conversion 离开第 17 步会直接点名报红;测试一个没删没跳过。#27114 还有第二个失败文件(showcase live),所以正文是 Part of,卡继续开着。

Shape: → main, Part of #27114. The seat edited this through the relay (run 40656668108, read back identical) from Fixes, after the second failing file surfaced (reading 6463483048). The body has no other closing keyword. Label skip-changeset, assignee os-justin. 1 file, packages/cli/test/migrate-meta.e2e.test.ts, +111/−106. Reports: os-dev-report 6463368173, addendum 6464184183, correction 6464195356.

Seat's own read:

First head red, owned and fixed: Test Core (2/8) on f73c11c812, packages/spec test:repo. The cause was this PR's own fixture. The patch round turned it green on e3006f2bdc.

Gates: at head e3006f2bdc, 51 check-runs: 34 success, 17 skipped, 0 failure. Test Core 1–8/8 and PR-body guards re-ran after the body edit; both are success. check-expected-skips --pr 27132: OK (17 skips, all in main's roster). check-governed-merges: not governed, 217 lines.

Owed after landing (on #27114): the next scheduled nightly is the first that can show both files. The cli file should be green. The showcase file is claimed separately: claim 6463869260, cloud session session_01QSeKYobVx7yTf1SUMMbKnP.

Landing: non-governed. Ready + auto-merge now.


Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 28, 2026 08:27
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 28, 2026
Merged via the queue into main with commit b15b2fc Oct 28, 2026
52 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/issue-27114-migrate-meta-e2e branch October 28, 2026 08:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/m skip-changeset PR has no user-facing published change; bypasses the changeset gate tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants