Repository navigation
Description
F12.9 — Program upgrade with state migration
From the Phase 12 plan (.opencode/plans/phase-12-platform-flexibility.md, workstream C):
Versioned snapshots and an optional migrate export. An upgrade runs on a probe instance first (the way checkpoints already do), commits only if the migrated state round-trips, and otherwise rolls back.
Exit: a test upgrades a counter across a snapshot format change, and a deliberately failing upgrade leaves the old program running.
Coordination (2026-10-26 reprioritization, per Drew): every id roadmap item now has its own GitHub issue, and priority encodes the order: (1) the path to Phase 12 — now + priority/high; (2) Phase 12 itself — next; (3) Phase 13 and long-term ideas — priority/low. The dashboard mirrors this list (org Project "Developing Today" #4, Area id-train; Grist Program roadmap, Area id). If this item turns out to be blocked, wrong, or superseded, park or close it with a note rather than letting it stall the queue — dropping an issue is always allowed; silently stalling is not.
Activity
developing-today commentedon Oct 27, 2026
CODE-210
dezren39 commentedon Nov 1, 2026
agent-note:v1 — picked up (queue task 2342, Lane A, triage)
Triaging F12.9 against current main: checking whether versioned snapshots, a
migrateexport, probe-instance upgrade, or rollback machinery exists today inpkgs/id, and what checkpoint/snapshot pieces it would build on. Verdict + routing to follow in this pass.dezren39 commentedon Nov 1, 2026
agent-note:v1 — triage verdict: CONFIRMED ABSENT, routing deferred to prerequisites (queue task 2342, Lane A)
Verified on current main
b56ccda5(laptop primary, HEAD == origin/main):upgradeentry point anywhere inpkgs/id/src(nofn upgrade/upgrade_program); nothing swaps a world's installed module for a new version.pkgs/id/src/world_store.rscheckpoints hold guest-serialized state via theplaza_snapshot/plaza_restoreexports with no format-version field, andpkgs/id/src/sandbox.rs(~:207, :234) validates exactly that export pair — there is nomigrateexport for a guest to transform old state.Routing — deliberately NO implementation packet enqueued yet, same call as the #558 triage (task 2148):
migrateexport belongs to) and id: F12.8 guest SDKs — Rust + Zig/AssemblyScript, component-model decision #1065 (F12.8 guest SDKs). Designing the migrate ABI inside F12.9 before F12.7 lands invites rework of exactly the surface F12.7 exists to pin.Next action when #1064 closes (or its ABI draft pins the export surface): enqueue a staged implementation packet for this issue — (1) snapshot format version +
plaza_migrate-style export in the sandbox validation, (2) probe-instance upgrade that commits only on migrated-state round-trip and otherwise leaves the old program running, (3) the plan's exit tests (counter across a format change; deliberately failing upgrade leaves the old program running). Downstream note: #558 already waits on this item, and F12.15 (id world dev) builds on it.This triage task completes as
triaged; the issue stays open with itsnextsequencing intact.3 remaining items
dezren39 commentedon Nov 3, 2026
agent-note:v1
state: triaged (coverage pass)
Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 40 (priority/normal). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
Found via: coverage pass 2026-11-03
dezren39 commentedon Nov 3, 2026
agent-note:v1
task: 7639
state: picked_up
lane: code-e (direct)
summary: Triage of #1066 (F12.9 program upgrade with state migration and rollback) started by queue task 7639. Verifying the current-main state of the id program/snapshot machinery before posting the verdict.
dezren39 commentedon Nov 3, 2026
agent-note:v1
task: 7639
state: triaged
lane: code-e (direct)
verdict: confirmed — not implemented on current main; fix path scoped; blocked on prerequisite ordering
Evidence (laptop primary ~/git/code at refs/remotes/origin/main d4d7834, 2026-11-03):
migrateexport, no versioned program-state snapshot format, and no probe-instance upgrade path exists in pkgs/id: a tree-wide search of pkgs/id/src/world/, world_compile.rs, and world_store.rs finds no migrate/upgrade implementation for program state.Scoped fix path (when unblocked): versioned snapshot format for world program state + optional
migrateexport in the guest ABI + upgrade runner that migrates on a probe/checkpoint instance, commits only on a successful round-trip, and rolls back otherwise; exit tests per the plan.Blockers / ordering (why no fix packet is enqueued yet): the plan's dependency chain is F12.7 -> F12.8 -> F12.9 -> F12.15 (phase-12 plan line 75). F12.9's versioned snapshots build on the versioned ABI specification (plaza_abi_version) from F12.7 — issue #1064, still OPEN — and F12.8 is issue #1065, also OPEN. The ordered prerequisite queue is tracked on issue #1235. Enqueueing an implementation packet now would only park against #1064; the correct next action is landing F12.7 (#1064), after which this issue is ready to scope as a small_fix packet. Downstream dependent: F12.15
id world dev(issue #558) consumes this migration path.