Replies: 1 comment
|
Sorry for the slow reply, and thank you for this. You read the demo comment exactly right, and the honest answer to "is there a reason promote should not snapshot the target's head itself?" is: no good one. It was a gap, and it's fixed in v0.2.10 (tagged today). What promote does now. Before the repoint lands, it keeps the target's current head as a shared fork named The CLI prints that command after every promote. The MCP tool names the fork in its result so an agent has the handle too, and the daemon/SDKs expose it ( On the two costs you guessed at. You had the right one. Promote (and rollback, compact) materializes a full copy rather than base-pointing precisely because a base pointer into a lineage that's meant to die would pin that lineage's storage forever. The safety fork is a base pointer into main's old lineage, so it does pin it, but it's a fork, so it carries a TTL (24h by default, It doesn't touch the single-fenced-writer invariant: the safety fork is an ordinary branch with its own lineage and its own lease, and the target's own repoint is still one CAS write. Two guardrails so it can't surprise anyone: promote only ever replaces a branch at the The parallel-attempts demo no longer forks If you're using it and the 24h default is wrong for your workload, I'd like to hear why. |
Uh oh!
There was an error while loading. Please reload this page.
I went through the parallel-attempts transcript. The line I keep coming back to is the comment inside the demo itself, that promote wipes main's own checkpoint history, so the pre-migration fork is what actually survives.
So the demo hand-rolls the mitigation: fork the old state first, then promote. In a tool where nearly everything else is reversible, promote is the one verb whose inverse the user has to remember to build.
Is there a reason promote should not snapshot the target's head itself before repointing? Reaping cost, or does an implicit branch fight the single-fenced-writer invariant somewhere I am not seeing?
All reactions