authorgravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-09-19 19:41:26-07:00
committergravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-09-25 20:26:20-07:00
log3d0dd98f39482111b7e2e32734d71bc806d826c8
tree6e4494476092b235918d2e86035cf94bfda1f7bb
parentcf24fa511d61da2e5d87246aad01eccced587479
signature Signed by SSH key SHA256:52mNGHRsVFBDED9IAX5pe+LRWUefqTbxEReunq21QvU

fix: bring the soak harnesses up to coalesced saves and a loaded host

The cache-kill oracle accepts a save that replaced the newest pending save under the same intent. The maintenance guardian runs only the library test it needs, so it exits when released instead of building every test binary, and native convergence gets ten minutes, which a few hundred background-synced edits need on a host that is also fuzzing. Assisted-by: claude-fable-5.1

3 files changed, 6 insertions(+), 3 deletions(-)

tools/native_collaboration.py+2-1
......@@ -219,7 +219,8 @@ def replay(output, server, stress_clients=0, stress_operations=30, sync_every=1,
219219 return observed
220220
221221 def wait_text(client, expected):
222 deadline = time.monotonic() + 120
222 # Background sync of a few hundred queued native edits takes minutes on a loaded host.
223 deadline = time.monotonic() + 600
223224 while time.monotonic() < deadline:
224225 action(client, 'sync')
225226 observed = action(client, 'snapshot')
tools/native_maintenance.py+1-1
......@@ -125,7 +125,7 @@ Sleep(1000)
125125 hold.mkdir()
126126 config = json.loads((output / 'linux.json').read_text())
127127 with (hold / 'run.log').open('w') as guardian_log:
128 guardian = subprocess.Popen(['cargo', 'test', '-p', 'notebook', '--features', 'smb', 'live_reader_hold', '--', '--ignored', '--nocapture'],
128 guardian = subprocess.Popen(['cargo', 'test', '-p', 'notebook', '--features', 'smb', '--lib', 'live_reader_hold', '--', '--ignored', '--nocapture'],
129129 cwd=ROOT, stdout=guardian_log, stderr=subprocess.STDOUT,
130130 env={**os.environ, 'ONESTORE_SMB_LAB': f'127.0.0.1:{config["samba_port"]}',
131131 'ONESTORE_SMB_PATH': 'm6-collaboration/synthetic.one', 'ONESTORE_SMB_HOLD': str(hold)})
tools/offline_cache_crash.py+3-1
......@@ -88,7 +88,9 @@ def run(binary, output):
8888 actual = json.loads(read.stdout)
8989 operations = actual["operations"]
9090 ids = actual["ids"]
91 assert operations in (retained, retained + [operation]), (retained, operation, actual)
91 # A save replaces the newest pending save of its page under the same intent.
92 coalesced = retained[:-1] + [operation] if ids == retained_ids else None
93 assert operations in (retained, retained + [operation], coalesced), (retained, operation, actual)
9294 assert ids[:len(retained_ids)] == retained_ids, (retained_ids, actual)
9395 if acknowledgement:
9496 assert operations[-1] == operation