OXYGENHUB

Backlog: O10d done (oxygen#3) f97d3556db5f

Author
Andy McCall @andymccall <[email protected]>
When
· 2026-09-28 16:47 UTC
Signature
✔ signed by Andy McCall
Hash
f97d3556db5fec09ebd0c519f38c855eef859a7e49be0f41a477423d175fc3a9
Depends on
75036530b621 e1dc6d6aad4f
Depended on by
6f16ce2be33b b037ade16953 65aebbe49056
In bookmarks
agents-in-readme bare-hashes carried-not-removed carry-identical doctor-trust identical-sides keyless-tags main merge-remote-bookmark only-help-103 paths-for-resolutions-and-amend push-notes show-stat subrepo-pin-state switch-says
In tags
v0.1.0 v0.10.0 v0.11.0 v0.2.0 v0.3.0 v0.3.1 v0.4.0 v0.4.1 v0.4.2 v0.4.3 v0.4.4 v0.4.5 v0.4.6 v0.5.0 v0.5.1 v0.6.0 v0.7.0 v0.8.0 v0.9.0
Edits
3 atoms, 0 tree operations, 1 file

Browse the tree at this change

modified docs/backlog-overnight-2.md +11 −1
…
53 unchanged lines
54 54
- [x] O10b Parallel snapshot work: rendering the base state's files, building file graphs from a checkpoint, and reading working-copy files now run on every core (rayon).
55 55
- [x] O12 `log_for_path_in` and `blame_in` rebuild and re-render the whole state on every call, and walk every change: take an already loaded state, stop at the first change touching the path when only the newest is wanted, and benchmark it (found in H16).
56 56
- [x] O10c Snapshot cost in the in-memory state: faster graph hashing, no unused predecessor map, inline successor sets, lines moved not copied; `OXY_TIMINGS=1` phase timings.
57 -
- [ ] O10d Skip reading text files whose stat matches a manifest that recorded them equal to the base (racy entries, those modified at or after the manifest was written, are still read); test that no edit is ever missed.
57 +
- [x] O10d Skip reading text files whose stat matches a manifest that recorded them equal to the base (racy entries, those modified at or after the manifest was written, are still read); test that no edit is ever missed.
58 58
- [ ] O10e Checkpoints readable per file so a snapshot loads only the file graphs it needs; cache materialized states. **Changes the checkpoint format (spec §25): needs Andy's agreement before starting.**
59 59
- [x] O5 Concurrency: two processes committing, snapshotting and pushing on one repository; locks hold, nothing is lost.
60 60
- [x] O6 Error messages audit: every user-facing error says what to do next; `oxy doctor` checks identity, config, remotes, CA files, hub reachability.
…
202 unchanged lines
263 263
    - O10d: skip reading files that are clean by the manifest; next.
264 264
    - O10e: per-file checkpoints, a spec §25 format change. **Andy: this one waits for your agreement.**
265 265
  - Also this iteration: V6 to V8 had been installed into the Rust profile only; now into the default profile too, as the loop asks.
266 +
- 2026-09-28 O10d done (oxygen#3, closed by the change):
267 +
  - A text file whose size and mtime match the manifest (outside the 2 s racy window), and whose recorded hash equals the base's rendering of it, takes the base's bytes instead of being read.
268 +
  - At 10 000 files, a clean status opens none of the files (checked with strace).
269 +
  - With a warm cache the walk falls only from about 75 to 56 ms, since traversal and stat remain. The gain is larger on a cold cache or a slow disk.
270 +
  - Test `stat_cache_takes_unchanged_text_from_the_base_and_misses_no_edit`, using unreadable files to prove what is and is not read:
271 +
    - an older uncommitted edit is always read, never replaced by the base;
272 +
    - a same-size edit made just now is caught by the racy window;
273 +
    - after a commit the edits become the base.
274 +
  - Spec §12.4. Gate green; release binary rebuilt. The hub (bare repositories) is unaffected.
275 +
  - Next is O10e, which waits for Andy's agreement to change the checkpoint format.