Speculation: Forking Conversations as a Persistence Ladder

Table of Contents

See also: [BROKEN LINK: *What time-travel looks like] | [BROKEN LINK: *Speculation: a fork protocol] | [BROKEN LINK: *Why this didn't stick]

1. Speculation: Forking Conversations as a Persistence Ladder

Speculative — under team review. The sections above rest on REPL evidence; this is a conjecture about where confluence becomes tractable.

1.1. Thesis: the harness gets confluence

Every shipped chat-branching feature (ChatGPT, AI Studio "Branch from here", Gemini app rollout, Claude edit-earlier-turn) is full persistence and stops there: fork from any node, parent stays intact, future diverges. None is confluent — there is no merge. The reason is not product timidity; prose has no merge function that preserves anything falsifiable.

The claim: confluence is tractable exactly when the branches emit typed, refutable artifacts instead of prose. That is the difference between a chat UI and a grind harness. The harness is the confluent tier the chat UIs structurally cannot reach.

1.2. The persistence ladder

Okasaki (??, ????) / Driscoll–Sarnak–Sleator–Tarjan (??, a) vocabulary, applied to a thread (confluent persistence is the later addition (??, a); persistence taxonomy per (??, a); prior art: MIT ADS chat, 2025-08):

Tier Read past Write past (branch) Join branches Where it lives
Ephemeral no no no a stateless completion
Partial yes no no scrollback; immutable history
Full yes yes no every fork feature shipping in 2026
Confluent yes yes yes the harness, under a merge contract

The fork point is a version node. The carried prefix is path-copying: you do not mutate the shared spine, you copy the path from fork to root and grow a new child. Gemini's "context only up to the fork point" is the path-copy invariant stated in product language.

1.3. Mapping the products onto the ladder

Feature Tier Carries Merge Hermetic fork?
ChatGPT branching full prefix no yes (text prefix only)
AI Studio "Branch from here" full prefix + Drive no leaks (see R2)
Gemini app (20% rollout) full prefix no leaks (past-chat reference)
Claude edit-earlier-turn full prefix no yes

All four sit on the same rung. The interesting variable is not the tier but whether the fork is a pure function of (parent_version, new_prompt). ChatGPT/Claude forks are (modulo sampling) hermetic; the Gemini family is not, and the tell is in the implementation: AI Studio branching requires Drive persistence, and the consumer app separately does implicit past-chat referencing. A branch that can pull context the prefix does not name is no longer path-copying; it is a fork with an ambient read of mutable global state — a different algebra.

1.4. The harness inversion: merge the evidence, not the conversation

In a chat the leaf is prose; merge(prose_A, prose_B) is undefined, so confluence is "science fiction" (the MIT chat's own phrase). In a grind harness the leaf is an artifact under a contract:

  • a Lean example : by …= that compiles, or does not
  • a test.check property that holds at N=1000, or shrinks to a counter-example
  • a registry field :lean :status populated by exact?
  • a TLA+ refinement that model-checks, or surfaces a trace

These do have a merge function: union under the refutation predicate. lemmata.elenchus is the join node. Two branches that each pass their local contract are merged iff their union violates no global invariant; the refuted branch is pruned, not reconciled by hand. Confluent persistence is not exotic here — it is the CPRR cycle with the fork made explicit: Conjecture forks the version DAG, Proof/Refutation labels each leaf, the surviving leaves join.

The slogan: you never merge the conversation; you merge the evidence. The prose is the partial-persistence shell around a confluent artifact DAG.

1.5. Fork as a governed event, not "the agent branched"

A fork with no provenance is anthropomorphism: "the model explored option B." A fork in the harness is a ledger event carrying the governance tuple — the same append-only event shape as petclinic-lab:

{:event      :fork
 :ts         #inst "2026-06-13T..."
 :parent     "v2"                      ; version node forked from
 :branch     "v3b"
 :tuple      "[aygp-dr:worker-B:coordinator@env(forklab:workspace)]"
 :prefix-sha "…"                       ; hash of carried context; the path-copy witness
 :note       "alternate refutation path for conjecture F3"}

{:event   :merge
 :ts      #inst "..."
 :join    "v5"
 :inputs  ["v4a" "v4b"]
 :gate    :elenchus
 :verdict :survives ; | :refuted
 :reviewer "coordinator"}

The branch point = a git worktree. The merge authority = the coordinator. The concurrency cap (4 in petclinic-lab) is the same cap here: past ~6 parallel forks, the rebase-after-merge fan-out stops being followable and the join verdict stops being auditable. Branching chats and multi-agent worktree coordination are the same structure at two scales: the chat UI exposes full persistence to one human; the harness exposes confluent persistence to a coordinator holding a merge contract.

1.6. Immutable past = soundness

Every product respects it (Gemini: context only to the fork point, the rest "left behind"). It is the path-copying invariant, and the harness states it as: the ledger is append-only, :seed is once-per-workspace-lifetime, no event is edited in place. The conversational grandfather paradox — rewrite v2 and invalidate v3..vN — is impossible by construction. Retroactivity is not forbidden by policy; it is unrepresentable.

1.7. Refutation conditions

1.7.1. R1 — "confluence is tractable in a harness"

Refuted if the artifact merge function is not total: exhibit two branch leaves that each satisfy their local contract but whose union violates a global invariant with no mechanical resolution. Concretely: two Lean proofs that each compile but against divergent axiom sets, both green, jointly inconsistent. Then elenchus cannot decide and you are back to manual reconciliation — partial persistence wearing a confluent mask. Mitigation: pin a single axiom environment as a merge precondition; divergent-environment branches fail the gate, not the join.

1.7.2. R2 — "a chat fork is a pure function of (parent, prompt)"

Refuted for the Gemini family by its own implementation: branching needs Drive-durable state, and the app separately injects implicit past-chat context. If a branch reads context the prefix does not name, the fork is not hermetic and the worktree analogy leaks ambient state. Test: fork the same parent twice with the identical next prompt at different wall-clock times; if the two children diverge on retrieved context alone, the fork is impure. ChatGPT/Claude edit-forks should pass; Gemini app forks may not.

1.7.3. R3 — "you merge evidence, not prose"

Refuted if the decisive artifact of a branch is irreducibly prose (a design rationale, a threat-model narrative) with no falsifiable surface. Then the harness has no join function and degrades to full persistence. This bounds the claim: confluence is available only over the falsifiable substrate. The prose layer stays full-persistence forever; do not pretend otherwise.

1.8. Open questions (speculative thesis)

  • Is elenchus as a merge gate associative and commutative over the leaf set? If join order changes the verdict, "confluent" is the wrong word and it is really a sequential fold (which petclinic-lab's serial-merge coordinator already assumes — so maybe the honest model is foldable, not confluent, and the DAG is a picture we draw for intuition).
  • What is the right witness for :prefix-sha? Hash of the rendered prefix is fragile to whitespace; hash of the message-id chain is stable but does not capture the sampling seed. The hermeticity claim (R2) is only as strong as this witness.