@@ -898,6 +898,64 @@ describe("runMemoryFlushIfNeeded", () => {
898898 expect ( compactCall . currentTokenCount ) . toBeGreaterThanOrEqual ( 96_000 ) ;
899899 } ) ;
900900
901+ it ( "keeps trailing tail pressure when stale usage is clamped to message estimates" , async ( ) => {
902+ const sessionFile = path . join ( rootDir , "clamped-stale-usage-tail-pressure-session.jsonl" ) ;
903+ await fs . writeFile (
904+ sessionFile ,
905+ [
906+ JSON . stringify ( {
907+ message : {
908+ role : "assistant" ,
909+ content : "small answer" ,
910+ usage : { input : 86_000 , output : 2_000 } ,
911+ } ,
912+ } ) ,
913+ JSON . stringify ( {
914+ message : {
915+ role : "tool" ,
916+ content : `moderate interrupted tool output ${ "x" . repeat ( 48_000 ) } ` ,
917+ } ,
918+ } ) ,
919+ ] . join ( "\n" ) ,
920+ "utf8" ,
921+ ) ;
922+ registerMemoryFlushPlanResolverForTest ( ( ) => ( {
923+ softThresholdTokens : 4_000 ,
924+ forceFlushTranscriptBytes : 1_000_000_000 ,
925+ reserveTokensFloor : 0 ,
926+ prompt : "Pre-compaction memory flush.\nNO_REPLY" ,
927+ systemPrompt : "Write memory to memory/YYYY-MM-DD.md." ,
928+ relativePath : "memory/2023-11-14.md" ,
929+ } ) ) ;
930+ const sessionEntry : SessionEntry = {
931+ sessionId : "session" ,
932+ sessionFile,
933+ updatedAt : Date . now ( ) ,
934+ totalTokensFresh : false ,
935+ } ;
936+
937+ await runPreflightCompactionIfNeeded ( {
938+ cfg : { agents : { defaults : { compaction : { memoryFlush : { } } } } } ,
939+ followupRun : createTestFollowupRun ( {
940+ sessionId : "session" ,
941+ sessionFile,
942+ sessionKey : "main" ,
943+ } ) ,
944+ defaultModel : "anthropic/claude-opus-4-6" ,
945+ agentCfgContextTokens : 24_000 ,
946+ sessionEntry,
947+ sessionStore : { main : sessionEntry } ,
948+ sessionKey : "main" ,
949+ storePath : path . join ( rootDir , "sessions.json" ) ,
950+ isHeartbeat : false ,
951+ replyOperation : createReplyOperation ( ) ,
952+ } ) ;
953+
954+ expect ( compactEmbeddedPiSessionMock ) . toHaveBeenCalledTimes ( 1 ) ;
955+ const compactCall = requireCompactEmbeddedPiSessionCall ( ) ;
956+ expect ( compactCall . currentTokenCount ) . toBeGreaterThanOrEqual ( 20_000 ) ;
957+ } ) ;
958+
901959 it ( "does not count bytes from a large latest usage record as post-usage tail pressure" , async ( ) => {
902960 const sessionFile = path . join ( rootDir , "large-usage-record-session.jsonl" ) ;
903961 await fs . writeFile (
0 commit comments