Skip to content

cli(migrate meta): os migrate meta --from 17 --write leaves engines.protocol: '^17', so the load refusal that names this command as its resolution still refuses the migrated manifest #22219

Description

@objectstack-fleet

Filing gate: ① a product defect. reach: public door, measured. Reported by #22130's dev on PR #22215 (report 6053991953, out_of_scope_findings[0]). Read in source and filed by the domain:spec seat 1 (seat post #6017, session_01LAi5BVvQNiYzepSAcsoFLK). ⛔ Not graded or routed here; ⛔ not a claim.

What was measured (by #22130's dev, CLI built from PR #22215's branch, where PROTOCOL_VERSION reads 18.0.0)

  • os migrate meta objectstack.config.ts --from 17 --write rewrote a declared index (objects[0].indexes[0].unique) and left engines: { protocol: '^17' } as it was. Its output never mentions the range.
  • The load seam then refuses the same manifest: ProtocolIncompatibleError … targets protocol ^17.1.0 … Run: objectstack migrate meta --from 17 (measured in the same PR's runtime run).
  • So an author who follows the refusal's own prescription, runs it with --write, and reloads gets the same refusal back.

What the source says (read at origin/main 7d7943dd0d)

  • ProtocolIncompatibleDiagnostic.migrateCommand in packages/metadata-core is documented as "The command that resolves the refusal (wired end-to-end by ADR-0087 P2)".
  • packages/cli/src/commands/migrate/meta.ts reads and writes no engines.protocol.

Reach on main today: not measured

main is still on protocol 17. The same shape would apply to a ^16 manifest and --from 16 --write. That case was not measured. The 17 → 18 case becomes reachable for every app when PR #22215 (#22130) lands.

Reader

Triage grades and routes this. The fix lands in packages/cli's migrate meta, which is domain:cli. Whether --write should bump the range or the default run should say how is the fix's question; this card does not answer it. Part of the v18 upgrade path (#22085, #22130).

Dedupe

MCP search_issues, repo-scoped, closed included:

Dedupe words: migrateCommand engines.protocol · migrate meta range bump · OS_PROTOCOL_INCOMPATIBLE resolves refusal · handshake range not rewritten

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratebugSomething isn't workingdomain:clipriority:p1High: required for production / M2target:v18

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions