Backlog: O10c done (oxygen#2); O10d and O10e split out e1dc6d6aad4f
- Author
- Andy McCall @andymccall <[email protected]>
- When
- · 2026-09-28 16:41 UTC
- Signature
- ✔ signed by Andy McCall
- Hash
e1dc6d6aad4f8c6807e12dc4d03c3af17bdadb17e31533b17745b3c31f81e829- Depends on
- 2cc29048b84a 540b229288ba 72bf8a02369f 75036530b621 e7ddd552b619
- Depended on by
- 65aebbe49056 f97d3556db5f
- 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 +16 −1
| … | 52 unchanged lines |
||
| 53 | 53 | - [x] O10a Heads at scale (first part of O10): `State::maximal` compared every pair of heads (quadratic; about 1.5 s per call at 4 500 heads, called three times per commit); now one walk. Commit reuses the snapshot's base state instead of loading it again. |
|
| 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 | - | - [ ] O10c Snapshot without the whole base (rest of O10): load only the file graphs a snapshot needs (a checkpoint split per file or indexed), skip reading and rendering files whose stat matches a manifest written for the same base, cache materialized states. Needs a spec change to the checkpoint format; target spec §25. |
|
| 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. |
|
| 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.** |
|
| 57 | 59 | - [x] O5 Concurrency: two processes committing, snapshotting and pushing on one repository; locks hold, nothing is lost. |
|
| 58 | 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. |
|
| 59 | 61 | - [x] O7 Shell completions (`oxy completions bash|zsh|fish`) and man pages generated from clap. |
|
| … | 188 unchanged lines |
||
| 248 | 250 | - Each README has a Settings table. |
|
| 249 | 251 | - Every CHANGELOG entry is dated from the history. |
|
| 250 | 252 | - `test/docs.test.mjs` in both fails if a setting is missing from the README or the newest CHANGELOG entry is not the package version. Both checks green (18 tests each). |
|
| 253 | + | - 2026-09-28 O10c done (oxygen#2, closed by the change), after splitting it. |
|
| 254 | + | - **Measured first.** New `OXY_TIMINGS=1` phase timings, documented in the guide. At 10 000 files and 200 changes, loading the base state was about 790 of 1 230 ms. A checkpoint did not help: decoding it took 680 ms, like replaying the history, since both build the same in-memory graphs. |
|
| 255 | + | - **Fixed without a format change:** |
|
| 256 | + | - A seeded fast hasher for the graph maps (`fasthash.rs`, tested). |
|
| 257 | + | - The predecessor map was written for every line and read nowhere; it is removed. |
|
| 258 | + | - An inline edge set replaces a `BTreeSet` per vertex. |
|
| 259 | + | - Lines are moved in with one lookup each. |
|
| 260 | + | - **Result.** Both builds run alternately on the same load, medians: clean status 0.96 s to 0.52 s, one-file commit 0.99 s to 0.51 s, peak memory 657 MB to 239 MB (docs/benchmarks.md). |
|
| 261 | + | - Gates green for oxygen and oxygenhub; release binary rebuilt; hub redeployed. |
|
| 262 | + | - The rest is split into: |
|
| 263 | + | - O10d: skip reading files that are clean by the manifest; next. |
|
| 264 | + | - O10e: per-file checkpoints, a spec §25 format change. **Andy: this one waits for your agreement.** |
|
| 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. |