"The phone shows a window. The backend keeps the whole room. Never mistake the window for the room."
Two Different Things Called 'The Conversation'
On a phone, screen space and memory are tight, so Pippa Go shows a bounded view: the recent question-and-answer exchanges, not necessarily the entire history. That's the right call for presentation — nobody wants to scroll a thousand turns on a phone. But it creates a dangerous temptation: to treat what the phone is showing as the conversation itself, and to build context for the next turn from that bounded window. That temptation must be refused. Continuity — the real, full context Pippa reasons from — is owned by the backend. Presentation — what the phone renders — is bounded and lossy by design. They are not the same object, and the smaller one must never define the larger.
Never Rebuild Context From the Window
The specific rule: when a new turn is sent, its context must be reconstructed by the backend from the canonical log — full replay, auto-compaction, all of it — never assembled on the phone from the last N visible messages. If the phone built the context, the conversation would silently lose everything scrolled off screen, and Pippa would answer as if the earlier history never happened. The bounded window is a viewport, not a source. Rendering less is fine; remembering less is a bug.
- Presentation (phone): shows recent turns, may drop old ones for space. Lossy on purpose.
- Continuity (backend): replays the full conversation for every turn. Lossless by design.
- The rule: the next turn's context comes from continuity, never from presentation.
Why the Split Is Safe (and Necessary)
Separating these two lets each be optimal at its own job. Presentation can be aggressively minimal — fast, light, phone-friendly — precisely because it carries no responsibility for memory. Continuity can be exhaustive — full replay, compaction, the works — precisely because it never has to fit on a screen. Fuse them and both degrade: either the phone must hold and render everything (heavy, slow), or the conversation's memory shrinks to whatever fits the viewport (broken). Keeping them separate is what lets Pippa Go feel light on the phone while remembering everything in the backend. The window can be small precisely because the room is complete.