Skip to content

feat: autoCaptureContextTurns rolling context window for extraction - #966

Open
gorkem2020 wants to merge 1 commit into
CortexReach:masterfrom
gorkem2020:feat/autocapture-context-turns
Open

feat: autoCaptureContextTurns rolling context window for extraction#966
gorkem2020 wants to merge 1 commit into
CortexReach:masterfrom
gorkem2020:feat/autocapture-context-turns

Conversation

@gorkem2020

Copy link
Copy Markdown
Contributor

Problem

In steady state (history-carrying sessions extract every turn) each extraction transcript contains only that call's own turns. The extractor never has the surrounding conversation, so it cannot resolve references ("yes exactly, that one", "make it the second option") and either drops the fact or stores a hollow one.

Change

A rolling pair window retains conversational context across extractions:

  • The last N user turns, with their assistant replies interleaved in true order, stay in the transcript across extraction calls. Retained turns are context for the extractor; the existing watermark keeps them from re-becoming extraction sources.
  • N = autoCaptureContextTurns (new knob): 0 (the default) disables retention entirely and preserves stock behavior byte-for-byte; 1 to 10 sets the window size, decoupled from the extractMinMessages warm-up gate.
  • The window is bounded at set time by trimTurnsToUserCap, which never trims this call's own unextracted turns out of their transcript and never leaves an orphan assistant turn ahead of the window's first user turn.
  • dedupePairWindow repairs double-included pairs: a below-threshold deferral keeps content alive on two paths (the rolling buffer and the watermark rollback or ingress re-queue), and the repair collapses duplicate exchanges at pair granularity while keeping legitimately repeated user messages whose replies differ.

Tests

test/pair-window-retention.test.mjs (full-pipeline harness over a mock LLM and embedding server): retention across successful extractions, window bounding, knob-0 wipe, absent-knob default. Unit coverage for trimTurnsToUserCap and dedupePairWindow in test/auto-capture-cleanup.test.mjs; manifest schema checks pin the 0 default. Registered in the test chain and CI manifest.

Stacked on #965; the diff includes its predecessors until they merge.

…PR 966, composed with master's reconcile-with-kept-texts and protected-prefix contracts)
@gorkem2020
gorkem2020 marked this pull request as ready for review August 25, 2026 08:49
@gorkem2020
gorkem2020 force-pushed the feat/autocapture-context-turns branch from ed2d3e4 to 9409506 Compare August 25, 2026 08:49
@gorkem2020

Copy link
Copy Markdown
Contributor Author

Recomposed against current master after #988 merged: the branch now carries a single commit with only this family's delta (rolling pair window: trimTurnsToUserCap, dedupePairWindow, the autoCaptureContextTurns knob and pair-window wiring). The two earlier commits are gone because their content already landed on master via #942 and #965. Full suite green locally.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant