C# and Python: soft flush means one thing (soft-flush-cs-py) #153
Loading…
Reference in a new issue
No description provided.
Delete branch "store-replace/soft-flush-cs-py"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What. Soft flush now means one thing in C# and Python, as in TS and Rust: an absent path is written, a store the reader reads is left byte for byte, an unreadable file is refused and left.
CacheBackingStore.PushAll(bool soft)is the single abstract owner (PushAll()stays as the plain call). The single-file store decides under its lock fromReadSnapshot; a skip leaves staged writes staged and the store dirty (rulingvariants:ruling:soft-flush-skip-keeps-staged-writes). The directory store skips when the manifest read returned bytes (the reader's answer, not a second look at the path).CultCache.FlushAsync/FlushAllBackingStores,CultMesh.FlushAsyncandCultNetLocal.FlushAsyncpass the flag instead of ignoring it. Test stores adapted.push_all(envelopes, soft=False)on the protocol default,SingleFileMessagePackBackingStoreandJsonLinesBackingStore; both stores decide from_pull(), the reader's own answer (None is absent). The protocol default's pull returns a list and cannot say absent, so a soft push through it always skips a store whose pull returns (open question: an inheriting store is never written by a soft push). A readable store holding no records skips in every decider. cultnet-py is untouched.Why. The flag was accepted and ignored (C#) or absent (Python), so a soft flush silently overwrote a store. Follow-up
variants:follow_up:soft-flush-all-runtimes.Deviation. The spec's cultmesh-py
node.flushcaller is a reactive-document writer flush with no store or soft concept, so it is unchanged.Verification (head
80eed16c, full runs). C#: Caching.Tests 1362 passed, 4 skipped, 0 failed; Caching.OutsideStoreTests 8 passed; Mesh.Tests 362 passed, 4 skipped; Networking.Tests 839 passed, 4 skipped. Python (cultcache-py and cultnet-py on PYTHONPATH from this worktree): cultcache-py 270 run, OK, 1 skipped. cultnet-py was not rerun (untouched). On base25f21fcccultcache-py is 263 run, OK, 1 skipped with cultnet-py importable; without it the two SimulationFactTests fail onModuleNotFoundError: cultnet_py, an environment defect, not a base failure. Hand mutations: h2 listed 30 (C# 16, Python 14), not 31; this pass added 7 (host and node soft-from-memory, records-count in the single-file, directory, Python single-file, JSONL and protocol deciders), all killed. The red-first for C# was not run on base (the flag did not exist there); Python red was run.Ids. Spec
variants:cut_spec:cut-soft-flush-cs-py.r2; reportvariants:cut_report:cut-soft-flush-cs-py.h3(h1 overstated its test counts; h2 misstated its mutation count).🤖 Generated with Claude Code