---
title: Real Conversation Layout — part 3 (the compact clamp and the code map)
---

# Real Conversation Layout — part 3 (the compact clamp and the code map)

## What it is

The closing details of the Real Conversation Layout: the interaction between the cold-mount fetch and the compact clamp, and a map of the code the feature lives in. Read [real-conversation-layout.md](real-conversation-layout.md) for the visible layout and [real-conversation-layout-part-2.md](real-conversation-layout-part-2.md) for the rendering rules; this part is the remaining edge and the implementation pointers.

## Where to find it

Nothing to open. This part describes background behaviour and where the code lives, so it has no menu, button or setting — the layout's own toggle is described in part 1.

## How it behaves

### How the cold-mount fetch interacts with the `/compact` clamp

With the layout on, cold-mount fetches the **whole** session history (no `/compact` clamp, no row-window limit) in lite shape. The clamp was a workaround for the wall-of-noise problem — once auto-continues and tool chatter are gone, the real conversation is small enough that loading it whole is faster than maintaining the clamp + the "Load older" plumbing. Lite shape keeps the payload small because each row carries `summary_prose` instead of `content`.

With the layout off, the cold-mount path falls back to the prior behavior — `/compact`-clamped on desktop, mobile-windowed on mobile, lite shape preserved.

This is **not** a reversal of the `load-older-pill-restored postmortem`. That postmortem's pill existed because the clamp _hid_ real messages; the new layout hides nothing among real messages, so the pill has nothing to do (R7 of the build contract). The decision is enforced by the lint tests at `tests/unit/lint/session-history-elegant-contract.test.ts` and `tests/unit/lint/lite-warmer-coverage.test.ts`, which were updated in the same branch to allow the layout's decoupled `useCompactClamp` / `useLite` shape.

## For agents

### Where it lives in code

| What                                                                                                                                                                                                             | Where                                                                                                                                                                                                                                                                                                                                                               |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Pure aggregator `buildRealConversationTurns()`                                                                                                                                                                   | `src/renderer/src/lib/real-conversation-turns.ts`                                                                                                                                                                                                                                                            |
| Incremental prefix-reuse wrapper `buildTurnsIncremental()` (byte-identical streaming fast path; kill switch `AMC_DISABLE_INCREMENTAL_TURNS=1`)                                                                   | `src/shared/incremental-real-conversation-turns.ts`                                                                                                                                                                                                                                                        |
| Turn presentation wrapper (merged-vs-plain shape pick + `CompactingIndicator`)                                                                                                                                   | `src/renderer/src/features/sessions/TurnGroup.tsx`                                                                                                                                                                                                                                                          |
| Per-turn merged bubble (header toggle + expansion panel + final-answer body + thinking timer)                                                                                                                    | `src/renderer/src/features/sessions/MergedTurnBubble.tsx`                                                                                                                                                                                                                                            |
| `MessageBubble` slot props that the merged bubble drives (`headerIdentitySlot` + `aboveBodySlot`)                                                                                                                | `src/renderer/src/components/ui/MessageBubble/MessageBubble.tsx`                                                                                                                                                                                                                                                          |
| Inter-compaction activity bubble (rev-11; only used by `renderSystemEntry` after rev-13)                                                                                                                         | `src/renderer/src/features/sessions/TurnActivityBubble.tsx`                                                                                                                                                                                                                                        |
| Live elapsed-time timer hook (ticks once a second while in-flight)                                                                                                                                               | `src/renderer/src/hooks/useThinkingTimer.ts`                                                                                                                                                                                                                                                                      |
| Compact elapsed formatter (`5s` / `1m 45s` / `12m` / `1h 2m`)                                                                                                                                                    | `formatThinkingElapsed` in `src/renderer/src/lib/utils.ts`                                                                                                                                                                                                                                                                     |
| List renderer for turns                                                                                                                                                                                          | `src/renderer/src/features/sessions/RealConversationList.tsx`                                                                                                                                                                                                                                    |
| Cold-mount render branch + load-older suppression                                                                                                                                                                | `src/renderer/src/features/sessions/SessionPanel.tsx`                                                                                                                                                                                                                                                    |
| Cold-mount fetch path (drops clamp when layout is on, keeps lite)                                                                                                                                                | `src/renderer/src/features/sessions/useSessionPanel/useSessionHistoryLoader.ts`                                                                                                                                                                                                |
| Settings field on `AppSettings`                                                                                                                                                                                  | `src/shared/types.ts` (`realConversationLayoutEnabled?: boolean`, default `true`)                                                                                                                                                                                                                                                        |
| Zod field on `updateSettingsSchema`                                                                                                                                                                              | `src/shared/ipc-schemas.ts`                                                                                                                                                                                                                                                                                                        |
| Settings UI toggle row                                                                                                                                                                                           | `src/renderer/src/features/settings/sections/performance/PerformanceSettings.tsx` (`PERFORMANCE_DEFINITIONS` entry, id `real-conversation-layout`)                                                                                                                                                                     |
| Settings-search synonyms                                                                                                                                                                                         | `src/renderer/src/features/settings/settings-search-index.ts`                                                                                                                                                                                                                                    |
| Lazy per-turn content fetch (reused)                                                                                                                                                                             | `SESSION_GET_TURN_CONTENT` IPC — see [lazy-content-load.md](lazy-content-load.md)                                                                                                                                                                                                                                                                                   |
| Real-reply classifier — primary signal                                                                                                                                                                           | `has_tool_activity` column on `conversation_messages` — see [lazy-content-load.md](lazy-content-load.md)                                                                                                                                                                                                                                                            |
| Real-reply classifier — kill-switch fallback                                                                                                                                                                     | `isRealMessageProse` in `src/renderer/src/components/ui/agent-message-heuristics.ts`                                                                                                                                                                                                              |
| Final-message marker (`[[OMNISCIO_FINAL]]`, opt-in) — toggle + nudge                                                                                                                                                  | `finalMessageMarkerEnabled` (Settings → Features) + `FINAL_MESSAGE_MARKER_NUDGE` / `resolveFinalMessageMarkerPrompt` in `src/main/process/spawn-build.ts`                                                                                                                                                           |
| Final-message marker — detection (shared split honored by all 3 walkers)                                                                                                                                         | `FINAL_MESSAGE_RE` / `splitOnFinalMessageMarker` in `src/shared/agent-content-markers.ts`; contract `summary-prose-contract.md` § Final-message marker                                                                                                         |
| Implicit dev-pipeline gate boundary (all 6 gates) — a `## <phase-emoji> <circle> <title>` gate header folds the wrap-up above it like `[[OMNISCIO_FINAL]]` when the `[DEV-PIPELINE \| GATE n \| …]` marker is present | `splitOnFinalBoundary` / `isDevPipelineGateHeader` / `hasDevPipelineGateMarker` in `src/shared/agent-content-markers.ts`; contract `summary-prose-contract.md` § Implicit dev-pipeline gate boundary                                                           |
| Dev-pipeline gate stepper (render-only) — the trailing `[DEV-PIPELINE \| GATE n \| verdict]` marker renders as the full 8-disc pipeline display track (bundled-standards gates lit in-track; unknown user customs get a single-disc badge) | `GatePipelineStepper` in `src/renderer/src/components/ui/GatePipelineStepper.tsx`; parser `parseTrailingGateMarker` in `src/shared/agent-content-markers.ts`; contract `gate-stepper-contract.md` |
| Build contract                                                                                                                                                                                                   | `.claude/memory/project_real_conversation_layout.md`                                                                                                                                                                                                                                                      |

## Related

Start at [real-conversation-layout.md](real-conversation-layout.md) for the layout itself and its settings toggle, then [real-conversation-layout-part-2.md](real-conversation-layout-part-2.md) for how the panel decides what to render. Together the three cover the feature end to end.
