mirror of
https://github.com/teamchong/pxpipe.git
synced 2026-07-22 02:02:51 +02:00
08a2b0a118
Autonomous GPT agents (OpenCode/gpt-5.5) send ONE human request then a long run of tool turns. The lone request is the OLDEST turn, so history collapse imaged it first and the model lost it — "I wonder what the user actually asked" → off-task drift (observed: agent edited compaction.ts instead of answering a compare question). The live-request guard's "the request is the trailing user message" heuristic assumes interactive chat and points at nothing here. Fix: keep the most-recent user turn OVERALL as legible TEXT, spliced between before-pin and after-pin history images inside the synthetic user message; older user turns stay imaged (must not look live — snap-to-first-prompt guard). The guard now echoes the request verbatim (capped). History is imaged on both sides of the pin, so compression barely changes. Cache safety (adversarially reviewed): - Pin ONLY when the latest user turn is INSIDE the collapse range. If it's in the kept tail (ordinary interactive turn) it's already native text — pinning an older in-range turn would migrate the pin across collapse-chunk boundaries and re-image frozen history. Restricting to the latest turn fixes its position until the next prompt, so before/after sections stay byte-stable across a run. - Undersized before-pin remainder merges into the previous before-section rather than emitting a sub-threshold (net-negative) image. Both Chat Completions and Responses paths. 473 tests pass; tsc + build clean. Not yet released — validate on the gpt-5.5 machine first.