From 0f94ab4eccec40bad42aa31b3adc6dbf9cb50d7a Mon Sep 17 00:00:00 2001 From: clover caruso Date: Mon, 5 Oct 2026 23:40:33 -0700 Subject: [PATCH] fix: return the confirmed stamp for replayed Live Share batches Refresh the stable section image after metadata-only confirmation before caching or acknowledging a duplicate batch. Preserve Committed classification when the refresh fails. fixes #103 Assisted-by: gpt-6.1-sol --- crates/notebook/src/live/share/batch.rs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/crates/notebook/src/live/share/batch.rs b/crates/notebook/src/live/share/batch.rs index c7571f9595cfccb882ced3aad7a9b030e92749e4..e2c77ee6a98f2766522112ac3916fd47a120cec3 100644 --- a/crates/notebook/src/live/share/batch.rs +++ b/crates/notebook/src/live/share/batch.rs @@ -150,7 +150,18 @@ impl Served { None => self .storage .confirm(path, &Stamp::of(&image).expect("section stamp")) - .map_err(Error::from), + .map_err(Error::from) + .and_then(|()| { + image = self.image(path).map_err(|error| CommitError { + state: CommitState::Committed, + error: match error { + Error::Io(error) | Error::RemoteIo(error) => error, + Error::Remote(error) => error.error, + error => io::Error::other(error), + }, + })?; + Ok(()) + }), }; if result.is_ok() { self.tell_delta(path, &before, &image, None); @@ -413,6 +424,17 @@ mod tests { let repeated = served.batch(&peer, request).unwrap(); assert!(repeated.failure.is_none(), "{:?}", repeated.failure); let replayed = std::fs::read(folder.join(path)).unwrap(); + let confirmed = Stamp::of(&replayed).unwrap(); + assert_eq!( + Stamp::try_from(repeated.stamp.as_ref().unwrap()).unwrap(), + confirmed + ); + { + let images = served.images.lock().unwrap(); + let (_, held, image) = images.iter().find(|(held, _, _)| held == path).unwrap(); + assert_eq!(*held, confirmed); + assert_eq!(**image, replayed); + } assert_eq!(&replayed[1024..], &committed[1024..]); let replay_arena = Arena::default(); let replay = Section::open(&replay_arena, replayed).unwrap(); -- 2.54.0