You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Port order, milestone slicing, and cutover criteria #255
What is the port order — the sequence of build-ticket-sized milestones from empty cargo workspace to acceptance parity — and the cutover criteria?
This is the plan's spine, and the map's last ticket: it assembles the architecture, harness, moving-target, and distribution decisions into the execution route. To settle:
Milestone slicing: each slice sized to one fresh agent session, ordered so every slice leaves a testable increment (which command surface first? does wf's minimal API surface come early to start the reuse payoff, or last to avoid churn?).
Cutover criteria: the explicit checklist — harness green, channels shipping, migration/coexistence verified — that flips the default install to Rust.
The spec: resolution lands as a committed plan document (e.g. docs/rust-rewrite-plan.md) capturing this map's decisions in one place — the artifact the follow-on execution map is charted from.
Resolution: answered by the owner's steer plus the committed plan, and the port it sequenced has since shipped. This ticket got its answer; what never happened was coming back to close it — Rust rewrite: implementation plan was closed around it on 2026-08-19, leaving it as the map's one open child.
The steer. Asked on this ticket, answered on this ticket (2026-08-18): "cut over in 1 big bang" — so no parallel shipping, no period where users choose an implementation. The same steer is recorded in the map's Notes and in #253's answer.
Milestone slicing — eleven, M0 through M10, each sized to one focused agent session, each leaving the tree green (cargo test + rust-parity under the then-current manifest + its claimed ledger rows out of pending), later ones depending only on earlier ones:
M0 harness and scaffold — the judge before any defendant: the DEVLAUNCH_DL_CMD seam, the implementation-blind fake-devpod shim, the cargo workspace compiling, the seeded spec ledger, the empty parity manifest, the rust-parity job required from day one.
M1 the Runner trait and its single fake. M2 (∥) domain, M3 (∥) tool clients. M4 storage flows. M5 read-side + the first binary — the point the manifest starts shrinking, and where timing landed. M6 lifecycle. M7 launch. M8 provisioning + aid. M9 parity burn-down to an empty manifest and zero pending. M10 distribution and the 0.1.0 cutover release, sequenced last and gated on the checklist.
Which answers the ticket's own sub-question — early or last — with last.wf's consumption surface is designed early (M2/M3, from #250) but core's public API freezes only at the end of M6, and wf's switch to linking devlaunch-core was put out of scope entirely, bounded to at-or-after cutover. The reuse payoff was not pulled forward to buy churn.
Cutover criteria — six boxes, all of which M10 waits on: empty parity manifest green on both tiers against the Rust binary; zero pending ledger rows; coexistence verified against one real cache (v2 metadata.json byte-compatible under the same flocks, identical completion caches, v1→v2 migration exercised); both channels shipping from one tag; README regenerated against dl --help with the divergence table final; rollback documented as pin <0.1.
The spec landed as docs/rust-rewrite-plan.md, written 2026-08-18 against main at 0.0.29, which names this ticket as the source of its port order and cutover checklist.
And it was executed. PR #260 merged and 0.1.0 shipped on both channels 2026-08-19 (#261) — one big bang, as asked. The Python tree and the parity apparatus half the checklist gates on were retired afterwards (#267, PR #287), which is why the plan doc now opens "done, and partly historical": the milestones and the checklist are a record of how the port was run, and the divergence table is the one part still live — the only written record of every deliberate behavioural difference from the Python build, cited by row number from tests and comments throughout rust/.
Closing as resolved. Indexed on the map's Decisions-so-far.
Activity
blooop commentedon Aug 18, 2026
cut over in 1 big bang
blooop commentedon Aug 20, 2026
Resolution: answered by the owner's steer plus the committed plan, and the port it sequenced has since shipped. This ticket got its answer; what never happened was coming back to close it — Rust rewrite: implementation plan was closed around it on 2026-08-19, leaving it as the map's one open child.
The steer. Asked on this ticket, answered on this ticket (2026-08-18): "cut over in 1 big bang" — so no parallel shipping, no period where users choose an implementation. The same steer is recorded in the map's Notes and in #253's answer.
Milestone slicing — eleven, M0 through M10, each sized to one focused agent session, each leaving the tree green (
cargo test+rust-parityunder the then-current manifest + its claimed ledger rows out ofpending), later ones depending only on earlier ones:DEVLAUNCH_DL_CMDseam, the implementation-blind fake-devpod shim, the cargo workspace compiling, the seeded spec ledger, the empty parity manifest, therust-parityjob required from day one.Runnertrait and its single fake. M2 (∥) domain, M3 (∥) tool clients. M4 storage flows. M5 read-side + the first binary — the point the manifest starts shrinking, and wheretiminglanded. M6 lifecycle. M7 launch. M8 provisioning +aid. M9 parity burn-down to an empty manifest and zeropending. M10 distribution and the 0.1.0 cutover release, sequenced last and gated on the checklist.Which answers the ticket's own sub-question — early or last — with last.
wf's consumption surface is designed early (M2/M3, from #250) but core's public API freezes only at the end of M6, and wf's switch to linkingdevlaunch-corewas put out of scope entirely, bounded to at-or-after cutover. The reuse payoff was not pulled forward to buy churn.Cutover criteria — six boxes, all of which M10 waits on: empty parity manifest green on both tiers against the Rust binary; zero
pendingledger rows; coexistence verified against one real cache (v2metadata.jsonbyte-compatible under the same flocks, identical completion caches, v1→v2 migration exercised); both channels shipping from one tag; README regenerated againstdl --helpwith the divergence table final; rollback documented aspin <0.1.The spec landed as
docs/rust-rewrite-plan.md, written 2026-08-18 againstmainat 0.0.29, which names this ticket as the source of its port order and cutover checklist.And it was executed. PR #260 merged and 0.1.0 shipped on both channels 2026-08-19 (#261) — one big bang, as asked. The Python tree and the parity apparatus half the checklist gates on were retired afterwards (#267, PR #287), which is why the plan doc now opens "done, and partly historical": the milestones and the checklist are a record of how the port was run, and the divergence table is the one part still live — the only written record of every deliberate behavioural difference from the Python build, cited by row number from tests and comments throughout
rust/.Closing as resolved. Indexed on the map's Decisions-so-far.