OXYGENHUB

Backlog: O10g logged 57dfc51417fd

Author
Andy McCall @andymccall <[email protected]>
When
· 2026-09-28 21:30 UTC
Signature
✔ signed by Andy McCall
Hash
57dfc51417fd8197355ec87c59938192ff1d2348cad1818f681a77fb7c16ef09
Depends on
75036530b621 da29defdcb97
Depended on by
c1fe1fb25021
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
1 atom, 0 tree operations, 1 file

Browse the tree at this change

modified docs/backlog-overnight-2.md +12 −0
…
423 unchanged lines
424 424
    - All 9 now begin IMMEDIATE (`db::begin_write`). A test of 16 concurrent appends fails with the old code and passes now.
425 425
    - Deployed; the next oxygenhub run passed with no new lock errors in the runner's log.
426 426
  - **Andy asked** whether an `oh` command, like GitHub's `gh`, should be its own repository. Recommended a crate in the oxygenhub workspace, since it shares hub-api and can test against a real hub. Asked where in the backlog he wants it; no answer yet.
427 +
- 2026-09-28 O10g, first part, done (oxygen#11, closed by the change; OxygenFlow run green, followed with `flow wait`). Spec §12.4, Draft 0.8k.
428 +
  - **Graph keys.** `State::graph_key` hashes a file's node, its checkpoint graph (blob, inline value or none) and the set of later changes that edited it. Equal keys mean equal graphs, and so equal renderings.
429 +
    - A test caught my first version, which left the node out: two files edited only by the same change got the same key.
430 +
  - **What the manifest records.** Per text file found equal to the base's unconflicted rendering, the key it matched.
431 +
    - When a file's stat and key both still match, the snapshot neither reads nor renders it.
432 +
    - `.oxyattributes` files are always read. When any of them is added, removed, edited or changed in the base, nothing is skipped.
433 +
  - **`Repo::snapshot_status`** gives a partial snapshot: a history-only base with only the other graphs built, and a `Snapshot.unrendered` list.
434 +
    - Used by status, log, show, tag, bookmark create/set, the default head, and `pull --json`.
435 +
    - `snapshot` (commit, diff, amend…) still builds the whole base. Its graphs now load in parallel.
436 +
  - **Tests:** 3 new; 157 core tests pass, clippy is clean.
437 +
  - **At 10 000 files:** a clean status takes 0.22 s instead of 0.55 s, and 51 MB instead of 259 MB. Log takes 0.38 s instead of about 0.75 s. Diff and commit are unchanged at about 0.57 s.
438 +
  - **Split:** O10h (a lazy base for commit and diff, and cached materialized states) is added to the backlog.