symfonic.capabilities.memory.window_overlap¶
window_overlap ¶
Recall the conversation window already renders is not rendered twice.
A turn is written to the transcript and to EPISODIC under one turn_id (the
run id) and one speaker; every shipped window source reads the same pair
back. When the window renders a turn, its recalled episodic copy is the same
utterance, and the model read the last exchange twice.
Identity is exact, never textual: a memory that says the same words on another
turn, the other side of a window turn, or a classified or semantic memory that
happens to carry a turn tag is a distinct memory and stays. Only transcript
rows (:func:~.record_admission.conversation_local) are candidates.
Only a window line the block actually admits suppresses anything. The window
leads the block and admission is greedy over that prefix, so the same ceiling
over the window lines alone (:func:~.rendered_selection.admitted_mask) says
which turns render. A window line the ceiling refuses leaves its recalled copy
in place; suppressing it too would show the model neither.
Filtering happens after selection, so ranking, activation seeds and the retrieval result itself are untouched; only the rendered block changes.
outside_window ¶
outside_window(result: Any, turns: Iterable[Any], *, char_ceiling: int, max_bytes: int | None = None) -> tuple[tuple, tuple, tuple]
Return (memories, linked, dropped) without the window's rendered turns.