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. |