@@ -81,6 +81,58 @@ test('reports the first removed earlier segment', () => {
8181 } ) ;
8282} ) ;
8383
84+ test ( 'reports the current segment at the first middle deletion' , ( ) => {
85+ const previous = observation ( [
86+ message ( 0 , 'system' ) ,
87+ message ( 1 , 'user-1' ) ,
88+ message ( 2 , 'assistant-1' ) ,
89+ ] ) ;
90+ const current = observation ( [ message ( 0 , 'system' ) , message ( 2 , 'assistant-1' ) ] ) ;
91+
92+ assert . deepEqual ( deriveSemanticPrefixContinuity ( current , previous ) , {
93+ status : 'diverged' ,
94+ previousSegmentCount : 3 ,
95+ preservedSegmentCount : 1 ,
96+ firstDivergentSegment : { kind : 'message' , index : 2 } ,
97+ } ) ;
98+ } ) ;
99+
100+ test ( 'reports an inserted segment as the first divergence' , ( ) => {
101+ const previous = observation ( [ message ( 0 , 'system' ) , message ( 2 , 'assistant-1' ) ] ) ;
102+ const current = observation ( [
103+ message ( 0 , 'system' ) ,
104+ message ( 1 , 'inserted-user' ) ,
105+ message ( 2 , 'assistant-1' ) ,
106+ ] ) ;
107+
108+ assert . deepEqual ( deriveSemanticPrefixContinuity ( current , previous ) , {
109+ status : 'diverged' ,
110+ previousSegmentCount : 2 ,
111+ preservedSegmentCount : 1 ,
112+ firstDivergentSegment : { kind : 'message' , index : 1 } ,
113+ } ) ;
114+ } ) ;
115+
116+ test ( 'reports the first moved segment after a reorder' , ( ) => {
117+ const previous = observation ( [
118+ message ( 0 , 'system' ) ,
119+ message ( 1 , 'user-1' ) ,
120+ message ( 2 , 'assistant-1' ) ,
121+ ] ) ;
122+ const current = observation ( [
123+ message ( 0 , 'system' ) ,
124+ message ( 2 , 'assistant-1' ) ,
125+ message ( 1 , 'user-1' ) ,
126+ ] ) ;
127+
128+ assert . deepEqual ( deriveSemanticPrefixContinuity ( current , previous ) , {
129+ status : 'diverged' ,
130+ previousSegmentCount : 3 ,
131+ preservedSegmentCount : 1 ,
132+ firstDivergentSegment : { kind : 'message' , index : 2 } ,
133+ } ) ;
134+ } ) ;
135+
84136test ( 'uses the preceding physical retry as its durable baseline' , async ( ) => {
85137 const previous = attempt ( { attemptId : 'attempt-0' , attempt : 0 } ) ;
86138 const current = attempt ( { attemptId : 'attempt-1' , attempt : 1 } ) ;
0 commit comments