Axiom of ChoiceBring a problem ↗
All essays

Manifesto · February 2026

The PromptFork Manifesto: Changing the Past to Think Better

Conversation history is part of the instrument. Users should be able to see it, repair it, and fork it.

If you've used large language models for serious work such as long reports, research papers, books, software design, or sustained planning...you have likely experienced a characteristic failure pattern.

At first, the model feels aligned. It understands the project. Its edits are sharp. Its suggestions improve the work. You feel “in sync.”

Then it goes downhill. Hemmingway bankruptcy-style: gradually, and then suddenly. Edits become generic. Earlier constraints are violated. The model contradicts itself. Eventually, it becomes actively unhelpful.

You try to recover. You restate goals. You upload prior chapters. You start a new conversation. Nothing quite restores the earlier quality. The model never re-enters the cognitive groove it once had.

This is not randomness. It is not “model fatigue." And not user error.

It's a loss of causality and coherence: often, someone messed with the timeline.

Why Restarting Doesn’t Fix It#

Restarting a conversation feels like the obvious fix. If the model has gone off the rails, wipe the slate clean and begin again. But restarting does not restore alignment—it erases it.

Uploading earlier chapters or background documents restores facts but not reasoning trajectories. Tone, intent, editorial decisions, and implicit constraints are missing. You can't rehydrate a mind from a PDF.

What made the model useful was not just what it knew, but how it arrived there. That continuity lived in the evolving conversational context—now gone.

The failure is not that the model forgot facts. The failure is that it lost the premises under which it was reasoning.

What Actually Happens#

Large language models reason over what they are shown. Nothing more. And you'd be shocked if you saw what the model is shown. Notionally (often literally), it's shown the whole conversation you've had so far, over and over again. You've got a 500-line conversation that fills-up ten screenfuls, and you type in (say): "nah, don't think so." Five-hundred-and one lines get transmitted to the model. The model considers the entire conversation (the Context—remember the word) thus far, afresh, to produce its response.

Let's stick to OpenAI for our further elaboration here.

You don't talk to the model directly. You use a man-in-the-middle relay, a model chat app (in this instance named ChatGPT), either as a desktop app or a browser connected to a web server. The app provides a user interface for you to type into and to show a response. The relay, in turn, sends what you said (or spoke or uploaded) to the actual model which today is GPT-5.2 running on OpenAI's hyperscale datacenter far away. Some GPU there works for a few milliseconds, and a response is returned to the app.

How It Breaks#

All fine so far, but this context to be used by the model has limits. It has a maximum length, for one thing, and for another, although it is trained to try to consider every part of that conversation, inevitably some parts are weighed more heavily than others in consideration. Maybe the beginning and the end of the conversation are more influential, in different ways, and so the middle less-so. It's complicated—context and attention are finite.

Also, maybe the conversation going awry is kind-of your fault? Remember that in-between rewriting paragraphs for your thesis you did ask if anybody has ever considered wearing a wool cap when thesis-writing to conserve their energy. Although maybe not your fault—see Appendix C.

This picture I've painted, the entire conversation, your next prompt tacked on to the end, considered over and over for each conversational turn...that's the way it was in the beginning, in the prehistoric era (i.e., up until 2024) and most chat apps still live in that era. But not the best ones from the foundation labs like OpenAI, Google, end Anthropic. They transform the conversation transcript for several reasons. First, to deal with conversations exceeding the maximum context size. Second, to address the unpredictable loss of focus on parts of the conversation. Third, to optimize the cost of inference at the datacenter (surely you were thinking it was a waste to do so much work over-and-over).

So, ChatGPT and GPT-5.2 have an arrangement that they'll optimize the transcript rather than exchange the whole thing verbatim. As conversations grow, history is summarized, pruned, compressed, or discarded. Premises drift. Alignment erodes silently. The model is not confused. It is earnest. It believes every word it is given.

The problem is that the narrative the model receives about the past no longer matches the one you remember (and are shown). And the narrator is unreliable.

The Hidden Editor#

Advanced chat applications maintain coherence by editing conversation history invisibly. They summarize, reorder, compress, discard. They do this to keep latency bounded, costs predictable, and behavior stable. And to compensation for model attention drift. And, finally: context is very finite (see next section on budget).

This is not model intelligence. It is editorial intelligence.

The cost is that when the editor gets it wrong, you cannot intervene. You cannot inspect what changed. You cannot repair drift. You cannot return to a known-good state. The loss of autonomy matters—but the immediate harm is simpler: you cannot use the model as you wish.

Context Is a Budget, Not a Log#

There is a deeper reason foundation-lab chat apps must edit conversations, one that has nothing to do with benevolence or cost control and everything to do with physics.

For something to influence a model’s next response outside what it was trained upon months ago, it must be present literally, token by token in the model’s context at inference time. Not “available somewhere,” not just “remembered by the system,” not “part of your account.” In the context, every turn, or it doesn't exist for the model.

That includes more than just the conversation transcript thus far as shown to you. It includes the system prompt. Safety scaffolding. Developer instructions. User preferences (“I like brief answers”, "I'm a painter"). Any awareness of other conversations. The results (likely a summary) of a web search you just asked for or that the system decided to run. Summaries and portions of files you uploaded—PDFs, images, spreadsheets. Tool outputs. Code execution traces. Everything that might reasonably condition the reply.

Modern chat products keep adding things that want to be in context.

At first this seems manageable. Then the product grows features. Multi-conversation memory. File analysis. External tool calls. Each one competes for the same finite budget.

Even with a 100k token window, or even ten times that, the problem doesn’t go away. It gets worse. Context stops being a transcript and becomes a crowded workspace. Something has to give.

When the context overflows, the system must decide what stays, what is summarized, what is compressed, and what is dropped entirely. That decision cannot be deferred to the model; the model only sees the result. And it cannot be postponed; it must happen before every inference.

At that point, invisible editing is no longer a product choice. It's a structural necessity. The problem is not that these decisions are made. The problem is that they are made for you, silently.

When your work goes mushy in chapter three, it is partially because the system triaged the context. Not maliciously, and not randomly. Deterministically, under pressure. It kept some premises and sacrificed others. Voice, constraints, earlier decisions—things you assumed were still “there”—were not actually present anymore. You were shown one past. The model was given another. If they didn't do that, the result likely would be even worse.

This is why restarting the conversation doesn’t help. This is why uploading earlier chapters doesn’t recover the groove. Files restore content, not the editorial scaffolding that once shaped it. You can’t rehydrate a working context from documents alone.

Once context is understood as a scarce budget rather than a faithful log, the real problem comes into focus. The question is not whether conversations will be edited. They must be. The question is who controls the budget, and whether you are allowed to see the ledger.

Why Some Models Feel Worse#

Local and open-weight chat tools typically replay conversation history literally until they hit a context limit, then truncate. This is not incompetence, although it is partly least-common-denominator. Consider it the ethical choice: what you see is what the model sees.

The result is honesty, but also brittleness. Strong models feel capable early, then degrade as noise accumulates. There is no repair mechanism. The difference is not intelligence. It is editorial infrastructure.

The Boring Substrate and the Two Histories#

At the wire level, conversational AI is unromantic. Each turn is a stateless HTTP (i.e., web protocol) request. No session. No cookies. No privileged continuity. If the text is not sent, it does not exist for the model. Every system must therefore choose to edit, truncate, or collapse history. The only question is who does this work, and how visible it is.

There are always two histories. The presentation history is what you see, export, and trust. The conditioning history is what the model receives. These are often not the same. They diverge by design. This is why exports can be faithful yet misleading, and why restarting conversations never restores prior performance.

An Aside: Policy Versus Mechanism#

History offers a warning in X-Windows, created for Unix workstations, released in 1984.

The Macintosh, released in January 1984, shipped with a fully defined and distinctive user interface, inspired by earlier work at Xerox PARC.

The X Window System had the slogan "mechanism, not policy". It inspired much development of modern window systems. It provided every graphics and I/O capability needed to make menus and text boxes and mouse actions and manage user actions. But it did not do any of these things built-in, leaving to others the task of creating "widget libraries" and "window managers". The result was flexibility—and fragmentation.

Microsoft Windows, arriving in earnest in late 1987, reintroduced opinionated defaults in the style of the Mac.

Frontier LLM chat apps give us AI conversation mechanism but no visibility or influence on editing policy. It's not surprising that users are often bewildered by model behavior.

You remember what happened to X-Windows—or maybe you don't, but that makes the point better. The lesson is simple: abdication of policy shifts burden to users. Fragmentation is not freedom. Any system that edits cognition must choose its defaults carefully.

Enter PromptFork#

PromptFork is an attempt to make conversational causality visible and controllable without turning the user experience into a jet cockpit full of dials and levers.

Editing as Repair#

The solution is not higher context limits and some fix for a model's loss of focus. It is user-controlled editing.

When alignment fails, the user must be able to repair premises instead of starting over. This requires visibility into what the model will see, the ability to prune dead ends, restore intent, and fork safely. Editing turns conversations into artifacts. Repair becomes possible.

From Conversations to Corpora#

Real work spans many conversations.

Without corpus-level control, drift accumulates across threads and projects. Editing must scale beyond a single chat. Projects, folders, inheritance, and provenance are required to manage conversational causality at scale.

Managing a corpus also means acknowledging reality: most of your conversational work already exists elsewhere. In practice, that means ChatGPT et al. PromptFork ingests those conversations fluidly. As those systems incorporate material from email, messages, documents, or social platforms, then that material comes along automatically—because it is part of what conditioned the conversations there.

Semantic Structure#

Once a corpus is curated, semantic analysis becomes possible.

Search, clustering, and topic structure reveal where alignment worked—and where it failed. They surface what you knew if you could be bothered to look, what you forgot, and what you never noticed was connected. This is not magic, it's visibility.

Active Memory, Deferred#

Active memory must be supervised, inspectable, and reversible. Memory without editing is hidden drift. Editing is the prerequisite. Corpus control is the substrate. Semantic structure analysis is the amplifier.

It starts opinionated: a canonical way to represent conversation history, forks, edits, provenance, and the “effective prompt” sent to a model. Extensibility comes later, after there is a stable center of gravity.

The Roadmap#

The First UX: Review Mode for Conversations#

The first plausible UX metaphor is not git (another Software Engineering thing) and not a prompt box to propose changes in. It is “Track Changes” a ‘la MS-Word Review Mode, complete with strikeouts, change bars, and a sidebar for reviewer comments. You had something, now change it visibly, later to accept or reject each change.

Conversation history becomes the document. Edits become proposed changes with diffs. Comments become marginalia. The user is editor-in-chief. The AI is one of the editors— suggesting compressions, deletions, rewrites, and clarifications—but never silently rewriting the record.

Nothing changes without a visible diff (SE terminology again). Everything is attributable. Everything is reversible. Forks earn the future; originals remain immutable.

Sidecars: Visible Assistants, Not Hidden Agents#

PromptFork treats specialized helpers as sidecars—explicit tools that operate on the same visible substrate, rather than as hidden background processes. Today, your chat app might already be modifying your prompt or summarizing your history, but it does so invisibly; PromptFork surfaces functions where they can be inspected, adjusted, or ignored.

Examples:

  • A Prompt Advisor that critiques the effective prompt and suggests repairs before send.
  • A Co-Editor that proposes edits in review mode rather than “fixing” history off-screen.
  • A Skeptic that flags contradictions, missing constraints, and premise drift.
  • A Librarian that suggests candidate prior turns, notes, or artifacts to re-include—without pretending it “remembered.”

Sidecars are a UI commitment: assistance is visible, inspectable, and optional.

Semantic Analysis: From Search to Insight#

With a managed corpus, semantic analysis stops being a gimmick and becomes a lever. PromptFork layers semantic indexing on top of the curated corpus initially in the guise of search—because search is the first payoff users understand.

Then the same machinery can surface structure: what topics dominated this project over time, where your definitions changed, which forks diverged and why, what you repeatedly forget to restate, what concepts are linked across conversations that you never noticed.

This is the bridge from corpus management to active memory: not a mystical “remember everything,” but a supervised, legible way to keep the right premises alive.

PromptFork's Promises#

PromptFork does not promise smarter models. It promises better premises: a way to stay in sync with a model’s conditioning context by making that context editable, inspectable, and governed.

Appendix A: Wire Protocol Reality (Short Form)#

The original OpenAI-compatible inference API is sort-of web traffic. Non-OpenAI systems support this too by default. It is stateless HTTP over TLS.

Let's assume the user's had an initial prompt, the model responded, and then the user submitted a second prompt. This second prompt would be transmitted as:

POST /v1/responses HTTP/1.1
Host: api.openai.com
Authorization: Bearer $OPENAI_API_KEY
Content-Type: application/json
Accept: application/json
{
"model": "gpt-5.2-chat-latest",
"input": [
{ "role": "user", "content":
"In the first line of your sonnet which reads 'Shall
I compare thee to a summer's day', would not 'a
spring day' do as well or better?" },
{ "role": "assistant", "content": "It wouldn't scan."},
{ "role": "user", "content":
"How about 'a winter's day'? That would scan all
right."}
]
}

The point being the prior conversation was prepended to the second prompt. The response from the server would be transmitted as:

HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "resp_...",
"object": "response",
"output": [
{
"type": "message",
"role": "assistant",
"content": [
{ "type": "output_text", "text":
"Yes, but nobody wants to be compared to a winter's
day"}
]
}
]
}

For the JSON-impaired, read this pretty much as if the exchange was as follows:

[To model at api.openai.com (my account info)] Hey, GPT-5.2:
"User: In the first line of your sonnet which reads 'Shall I compare
thee to would not 'a spring day' do as well or better?
Assistant: It wouldn't scan.
User: How about 'a winter's day'? That would scan all right."
[From model] OK:
"Assistant: Yes, but nobody wants to be compared to a winter's day."

Appendix B: Three Regimes#

  1. Foundation-model products: edit history invisibly, centrally, at scale. Coherence is high; user control is low. See ChatGPT, Claude, Gemini, Grok.
  2. Local chat apps: replay literally, then truncate. Control is honest but primitive; coherence degrades with length. See LM Studio, Ollama, GPT4All.
  3. Explicit conversation management: edits are visible and governed. Coherence is recoverable because premises are editable. See PromptFork.

Appendix C: Failure Case Patterns#

Context Pollution: Users interleave unrelated tasks within the same conversation: revising a thesis, then asking for a recipe. Serious work punctuated by casual asides.

Inference-Time Mode Collapse: small revisions of the same material often lead to a steady loss of sharpness and creativity. Each iteration becomes more conservative, more generic, and more self-similar than the last. Each ‘minor edit’ teaches the model what not to explore.

Context Rot: early context loses influence. As model attention spreads thin, early information is less attended to. Constraints, definitions, and earlier premises remain but contribute less. Context Rot often underlies other failures even without invisible editing.

Constraint loss: the model begins violating stated constraints because the conditioning history no longer contains them, only a lossy or corrupted summary.

Premise Dilution: early chapters get sharp edits while later ones turn generic as context fills and governing premises are truncated or summarized away. The model continues reasoning, but under a scaffold that no longer carries voice, constraints, or prior decisions.

Premise inversion: the model sounds confident while operating under premises you never endorsed—because those premises were introduced by invisible editing upstream.

Appendix D: Terminology#

Presentation history: what you see, export, and trust.

Conditioning history: what the model actually receives.

Effective prompt: the assembled text that will be sent in the next request.

Editorial intelligence: coherence achieved by managing history (summarize/prune/repair), distinct from model inference.

Fork: an editable duplicate anticipating a change from the original, both fork and original managed as separate artifacts — terminology from software engineering practice.