okami.mom/albedo
git clone https://git.nkp.pet/okami.mom/albedo
cba5ff8
main
1"""Snapshots survive real actor eviction without retaining opaque replay binaries.""" 2 3import json 4import os 5from pathlib import Path 6import unittest 7 8from inspect_support import Inspection 9from harness import Albedo ,Provider ,Reply ,ROOT ,exclusive 10 11 12# exclusive: enables daemon inspection and global rolling settings 13@exclusive 14class ContextRetentionTest (unittest .TestCase ): 15def test_eviction_releases_replay_while_inspection_survives (self ): 16payload = "REPLAY_SENTINEL:" + "x" * (256 * 1024 ) 17reply = Reply ( 18"raw" , 19events = [ 20 { 21"type" :"response.completed" , 22"response" : { 23"id" :"retention-response" , 24"status" :"completed" , 25"output" : [ 26 { 27"type" :"reasoning" , 28"id" :"retention-reasoning" , 29"summary" : [], 30"encrypted_content" :payload , 31 }, 32 { 33"type" :"message" , 34"role" :"assistant" , 35"content" : [{"type" :"output_text" ,"text" :"done" }], 36 }, 37 ], 38"usage" : {"input_tokens" :31 ,"output_tokens" :2 }, 39 }, 40 } 41 ], 42 ) 43provider = Provider (lambda _ :reply ) 44self .addCleanup (provider .close ) 45 46def prepare (app ): 47app .daemon .env ["ALBEDO_INSPECT" ]= "1" 48app .write_extensions ({"rolling" : {"contextWindowTokens" :2_000_000 }}) 49 50with Albedo (provider ,protocol = "responses" ,prepare = prepare )as app : 51session = app .session () 52for prompt in ("first" ,"second" ): 53app .prompt (session ,prompt ).close () 54app .idle (session ) 55self .assertEqual (len (provider .requests ),2 ) 56self .assertTrue ( 57any ( 58item .get ("encrypted_content" )== payload 59for item in provider .requests [1 ]["request" ]["input" ] 60 ), 61"second request lost opaque replay: " 62+ json .dumps ( 63 [ 64 (item .get ("type" )or item .get ("role" ),len (json .dumps (item ))) 65for item in provider .requests [1 ]["request" ]["input" ] 66 ] 67 ) 68+ " events=" 69+ json .dumps ( 70 [entry ["kind" ]for entry in app .history (session )["items" ]] 71 ), 72 ) 73route = f"/sessions/ { session } /context" 74 75def read (path ): 76with app .api (path )as response : 77return json .load (response ) 78 79self .assertEqual (read (route )["state" ],"ready" ) 80inspection = Inspection ( 81app ,ROOT / "test/daemon/albedo_context_snapshot_probe.erl" 82 ) 83measured = inspection .call_json ( 84"actor_json" ,f"[<< { json . dumps ( session ) } >>]" 85 ) 86artifact = os .environ .get ("ALBEDO_INSPECTOR_ARTIFACT" ) 87if artifact : 88Path (artifact ).write_text (json .dumps (measured ,indent = 2 )+ "\n" ) 89self .assertTrue (measured ["history_unloaded" ]) 90self .assertFalse (measured ["replay_reachable" ]) 91self .assertLess (measured ["actor_binary_bytes" ],len (payload )) 92for key in ( 93"history_readable" , 94"kernel_released" , 95"context_cleared" , 96"actor_stopped" , 97"workers_terminated" , 98 ): 99self .assertTrue (measured [key ],key ) 100self .assertEqual (measured ["replay_backing_binary_bytes" ],0 ) 101self .assertEqual (len (provider .requests ),2 )