@@ -16,43 +16,43 @@ describe("ctx_reduce availability (spawn tools map)", () => {
1616 const verdict = resolveCtxReduceAvailabilityFromMessages ( "ses-allow" , [
1717 userMsg ( { "*" : false , read : true , grep : true } ) ,
1818 ] ) ;
19- expect ( verdict ) . toBe ( false ) ;
19+ expect ( verdict ) . toEqual ( { callable : false , frozen : true } ) ;
2020 } ) ;
2121
2222 it ( "resolves true when ctx_reduce is explicitly allowed" , ( ) => {
2323 clearCtxReduceAvailability ( "ses-explicit" ) ;
2424 const verdict = resolveCtxReduceAvailabilityFromMessages ( "ses-explicit" , [
2525 userMsg ( { "*" : false , read : true , ctx_reduce : true } ) ,
2626 ] ) ;
27- expect ( verdict ) . toBe ( true ) ;
27+ expect ( verdict ) . toEqual ( { callable : true , frozen : true } ) ;
2828 } ) ;
2929
3030 it ( "fails open for sessions without a tools map (normal sessions)" , ( ) => {
3131 clearCtxReduceAvailability ( "ses-plain" ) ;
3232 const verdict = resolveCtxReduceAvailabilityFromMessages ( "ses-plain" , [ userMsg ( ) ] ) ;
33- expect ( verdict ) . toBe ( true ) ;
33+ expect ( verdict ) . toEqual ( { callable : true , frozen : true } ) ;
3434 } ) ;
3535
3636 it ( "resolves false when ctx_reduce is explicitly denied" , ( ) => {
3737 clearCtxReduceAvailability ( "ses-deny" ) ;
3838 const verdict = resolveCtxReduceAvailabilityFromMessages ( "ses-deny" , [
3939 userMsg ( { ctx_reduce : false } ) ,
4040 ] ) ;
41- expect ( verdict ) . toBe ( false ) ;
41+ expect ( verdict ) . toEqual ( { callable : false , frozen : true } ) ;
4242 } ) ;
4343
4444 it ( "freezes the verdict per session — later, different tool maps cannot flap it" , ( ) => {
4545 clearCtxReduceAvailability ( "ses-frozen" ) ;
4646 const first = resolveCtxReduceAvailabilityFromMessages ( "ses-frozen" , [
4747 userMsg ( { "*" : false , read : true } ) ,
4848 ] ) ;
49- expect ( first ) . toBe ( false ) ;
49+ expect ( first ) . toEqual ( { callable : false , frozen : true } ) ;
5050 // Same session, contradictory map on a later pass: cached verdict wins
5151 // (per-turn maps can differ; a flapping verdict would bust the cache).
5252 const second = resolveCtxReduceAvailabilityFromMessages ( "ses-frozen" , [
5353 userMsg ( { "*" : false , ctx_reduce : true } ) ,
5454 ] ) ;
55- expect ( second ) . toBe ( false ) ;
55+ expect ( second ) . toEqual ( { callable : false , frozen : true } ) ;
5656 } ) ;
5757
5858 it ( "ignores non-user messages and falls open when the first user message carries no signal" , ( ) => {
@@ -61,7 +61,7 @@ describe("ctx_reduce availability (spawn tools map)", () => {
6161 { info : { role : "assistant" } } ,
6262 userMsg ( { } ) ,
6363 ] ) ;
64- expect ( verdict ) . toBe ( true ) ;
64+ expect ( verdict ) . toEqual ( { callable : true , frozen : true } ) ;
6565 } ) ;
6666
6767 it ( "does not freeze a fail-open verdict from an array with no user message" , ( ) => {
@@ -70,13 +70,13 @@ describe("ctx_reduce availability (spawn tools map)", () => {
7070 const provisional = resolveCtxReduceAvailabilityFromMessages ( "ses-no-user-yet" , [
7171 { info : { role : "assistant" } } ,
7272 ] ) ;
73- expect ( provisional ) . toBe ( true ) ;
73+ expect ( provisional ) . toEqual ( { callable : true , frozen : false } ) ;
7474 // ...but must NOT lock the session: the real first user message (a
7575 // deny-list spawn) still decides the frozen verdict.
7676 const final = resolveCtxReduceAvailabilityFromMessages ( "ses-no-user-yet" , [
7777 { info : { role : "assistant" } } ,
7878 userMsg ( { "*" : false , read : true } ) ,
7979 ] ) ;
80- expect ( final ) . toBe ( false ) ;
80+ expect ( final ) . toEqual ( { callable : false , frozen : true } ) ;
8181 } ) ;
8282} ) ;
0 commit comments