| author | |
| committer | |
| log | 3d0dd98f39482111b7e2e32734d71bc806d826c8 |
| tree | 6e4494476092b235918d2e86035cf94bfda1f7bb |
| parent | cf24fa511d61da2e5d87246aad01eccced587479 |
| signature | Signed by SSH key SHA256:52mNGHRsVFBDED9IAX5pe+LRWUefqTbxEReunq21QvU |
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.13 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, | ... | @@ -219,7 +219,8 @@ def replay(output, server, stress_clients=0, stress_operations=30, sync_every=1, |
| 219 | return observed | 219 | return observed |
| 220 | 220 | ||
| 221 | def wait_text(client, expected): | 221 | 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 | ||
| 223 | while time.monotonic() < deadline: | 224 | while time.monotonic() < deadline: |
| 224 | action(client, 'sync') | 225 | action(client, 'sync') |
| 225 | observed = action(client, 'snapshot') | 226 | observed = action(client, 'snapshot') |
tools/native_maintenance.py+1-1| ... | @@ -125,7 +125,7 @@ Sleep(1000) | ... | @@ -125,7 +125,7 @@ Sleep(1000) |
| 125 | hold.mkdir() | 125 | hold.mkdir() |
| 126 | config = json.loads((output / 'linux.json').read_text()) | 126 | config = json.loads((output / 'linux.json').read_text()) |
| 127 | with (hold / 'run.log').open('w') as guardian_log: | 127 | 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'], |
| 129 | cwd=ROOT, stdout=guardian_log, stderr=subprocess.STDOUT, | 129 | cwd=ROOT, stdout=guardian_log, stderr=subprocess.STDOUT, |
| 130 | env={**os.environ, 'ONESTORE_SMB_LAB': f'127.0.0.1:{config["samba_port"]}', | 130 | env={**os.environ, 'ONESTORE_SMB_LAB': f'127.0.0.1:{config["samba_port"]}', |
| 131 | 'ONESTORE_SMB_PATH': 'm6-collaboration/synthetic.one', 'ONESTORE_SMB_HOLD': str(hold)}) | 131 | '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): | ... | @@ -88,7 +88,9 @@ def run(binary, output): |
| 88 | actual = json.loads(read.stdout) | 88 | actual = json.loads(read.stdout) |
| 89 | operations = actual["operations"] | 89 | operations = actual["operations"] |
| 90 | ids = actual["ids"] | 90 | 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) | ||
| 92 | assert ids[:len(retained_ids)] == retained_ids, (retained_ids, actual) | 94 | assert ids[:len(retained_ids)] == retained_ids, (retained_ids, actual) |
| 93 | if acknowledgement: | 95 | if acknowledgement: |
| 94 | assert operations[-1] == operation | 96 | assert operations[-1] == operation |