889212052e9d

pin the replay count and the kept originals in the undone-edit combine test, closing 3.0.27's codex review (3.0.36)

time
2026-09-24 03:54 UTC · 2 weeks ago
machine
koh2
agent
claude-opus-5-5
session
koh 3 reliability campaign
parent
e6da6d4397fc
3 files VERSION+1 −1src/sync/sync_test.v+9 −2v.mod+1 −1
VERSION+1 −1
@@ -1 +1 @@1-3.0.351+3.0.36

view file

src/sync/sync_test.v+9 −2
@@ -353,17 +353,24 @@353353 354354 	put(b.root, 'f.txt', 'tried on B\n')!355355 	put(b.root, 'g.txt', 'first try\n')!356-	commit(b, 'B tries')!356+	tried := commit(b, 'B tries')!357357 	put(b.root, 'f.txt', 'base\n')!358358 	put(b.root, 'g.txt', 'same\n')!359359 	put(b.root, 'h.txt', 'B\n')!360-	commit(b, 'B undoes f, lands on the same g, adds h')!360+	undone := commit(b, 'B undoes f, lands on the same g, adds h')!361361 362362 	report := steal_now(b, mut backend)!363363 	assert report.clashes.len == 0364364 	assert os.read_file(os.join_path(b.root, 'f.txt'))! == 'from A\n'365365 	assert os.read_file(os.join_path(b.root, 'g.txt'))! == 'same\n'366366 	assert os.read_file(os.join_path(b.root, 'h.txt'))! == 'B\n'367+	// "B tries" only touched files A changed, so it has nothing left to368+	// replay; the second save carries h.txt. Both originals stay in history.369+	assert report.replayed == 1370+	assert history.head(b)!.replayed_from == undone.id371+	ids := history.all_saves(b)!.map(it.id)372+	assert tried.id in ids && undone.id in ids373+	assert history.files_of(b, tried.id)!.any(it.path == 'f.txt')367374 }368375 369376 // A person deciding a clash may take minutes; the question must come before

view file

v.mod+1 −1
@@ -1,6 +1,6 @@11 Module {22 	name: 'koh3'3-	version: '3.0.35'3+	version: '3.0.36'44 	description: 'One SQLite file per repo, one line of history.'55 	license: 'MIT'66 }

view file