fix(native-chat): reject coarse-mtime rewrites

This commit is contained in:
Jinwoo-H
2026-08-23 14:35:57 -07:00
committed by Brennan Benson
parent a92da8fa59
commit 34fe60004d
2 changed files with 16 additions and 1 deletions
@@ -93,4 +93,17 @@ describe('SSH transcript range stability', () => {
TranscriptRangeReadInvalidatedError
)
})
it('rejects a same-length rewrite even when remote mtime is coarse', async () => {
const remote = mutableProvider('old generation')
mocks.provider = remote.provider
const rangeFs = await createSshTranscriptRangeFs('ssh-owner')
const openingStamp = await rangeFs.stat(TRANSCRIPT_PATH, undefined, true)
remote.replace('new generation', false)
await expect(rangeFs.assertStable(TRANSCRIPT_PATH, openingStamp)).rejects.toBeInstanceOf(
TranscriptRangeReadInvalidatedError
)
})
})
@@ -109,7 +109,9 @@ export async function createSshTranscriptRangeFs(
if (versionChanged) {
throw new TranscriptRangeReadInvalidatedError()
}
return
if (openingStamp.size === 0) {
return
}
}
if (!openingStamp.boundaryFingerprint) {
throw new TranscriptRangeReadInvalidatedError()