OXYGENHUB

Backlog: Andy's five ideas as P1-P5 after F2-F5, with the decisions agreed 28fee1c9eb6c

Author
Andy McCall @andymccall <[email protected]>
When
· 2026-09-28 17:46 UTC
Signature
✔ signed by Andy McCall
Hash
28fee1c9eb6c77cc9fe9c4204677c2293863326d60954902281dbbd2ea3f8216
Depends on
75036530b621 9b761fe2f751 b037ade16953
Depended on by
a405d4c99440 a707df24e576 fd3f920f0b24 03571027793e 4960d87af58b d82f153bdf7e 9df6217f5f47 155313e68e15 fc1a466a1e66 8f6b03b28e40 9054759cfbd1 1b2ce97050fe 83d61e803ccd 22cc934f9b60 0cded3d844e4 bb94d06c8049 ed5b9ef990a3 c1fe1fb25021 3c5c6ad2518a 66eb646918c2
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
2 atoms, 0 tree operations, 1 file

Browse the tree at this change

modified docs/backlog-overnight-2.md +31 −0
…
61 unchanged lines
62 62
- [ ] F4 Extension pipelines (oxygen-vscode, oxygenhub-vscode): typecheck, bundle, tests (with oxy, and the hub binary for the hub client tests), package; and oxygenflow's own pipeline gains cargo fmt, clippy and tests.
63 63
- [ ] F5 Required checks: each repository's default bookmark requires its pipeline's checks to land, and the work loop pushes and waits for green instead of gating only locally.
64 64
- [x] O10e Checkpoint payload version 2: large file graphs as shared blobs named from an index, read and decoded in parallel; readers accept both versions (spec §11). Agreed by Andy on 2026-09-28.
65 +
- [ ] P1 **Conflict resolution on OxygenHub** (Andy's list, item 1). A resolver page for a conflicted state:
66 +
  - Per conflict region: pick a side, several sides, or none; edit freely; tree conflicts too (keep a candidate).
67 +
  - Commit the result as a `kind = resolution` change on the bookmark, through the web-edit path. Signing: sealed when the author next pushes, or "resolve in VS Code" hands off to oxygen-vscode.
68 +
  - Shareable link to a conflict.
69 +
  - First single-user, then P1b.
70 +
- [ ] P1b Real-time collaboration on the resolver: presence, live edits merged between viewers (SSE or WebSocket), and whoever is viewing sees the resolution land.
71 +
- [ ] P2 **Function history** (item 5; needs no semantic-deps):
72 +
  - oxy-core: a history query over a set of atoms (the changes that inserted or deleted any of them, with deleted atoms included).
73 +
  - Hub: function boundaries by tree-sitter for the languages we host (Rust, TypeScript, Python, shell).
74 +
  - Clicking a function on a file page shows every ChangeId that touched its lines, as a list and a small graph; exact because atoms keep identity across edits and moves.
75 +
  - The cross-file semantic graph stays out; noted as future work.
76 +
- [ ] P3 **Swimlanes** (item 3):
77 +
  - Hub: a bookmark's changes drawn as lanes of independent changes (oxy-core `lanes`), with dependencies as edges and no merge nodes.
78 +
  - P3b: drag and drop on proposal bookmarks only. Dropping a change onto another proposes a squash, dragging a dependent chain proposes a rebase. The hub produces a plan and the author's oxy or oxygen-vscode applies and signs it (V6 has split, squash and rebase). Reordering independent changes means nothing and is not offered.
79 +
- [ ] P4 **Signed Flow receipts**:
80 +
  - A `receipt` object type in the Oxygen spec.
81 +
  - A runner identity whose key (composite Ed25519 + ML-DSA-65) signs each receipt.
82 +
  - Receipts stored in the repository and verified by the hub.
83 +
  - Flow `output` and artifacts, so a release asset links to the receipt that built it.
84 +
- [ ] P4b **Trust dashboard** (item 4): per release and asset, a graph of authors' identities and signatures, the runner and its pinned environment, inputs (state, scope hash), and receipts, with a one-click audit view and export.
85 +
- [ ] P5 **Web workspaces** (item 2), in parts:
86 +
  - P5a: flow-casfs, a read-only FUSE mount of a state from CAS chunks, measured.
87 +
  - P5b: "Open in Workspace" on a change. openvscode-server (MIT, unmodified) with oxygen-vscode inside a Firecracker microVM per workspace, the state mounted read-only through casfs with an ephemeral overlay for edits, and commits back through oxy. Boot time measured, aiming under 100 ms for the mount.
88 +
  - A fork ("oxycode") only if an extension cannot do what we need; decided with Andy.
89 +
- [ ] P5c Import microsoft/vscode's full Git history with `oxy git import` into a local scratch repository (not published): about 130 000 commits as a stress test of import, log, blame and status at scale, recorded in docs/benchmarks.md.
65 90
- [ ] O10f Load file graphs lazily from a version 2 checkpoint: a state keeps unread graphs by reference and reads one when first needed.
66 91
- [ ] O10g Render only what a snapshot needs: the manifest records, per file, the graph blob it matched, so an unchanged file whose graph is untouched since the checkpoint is neither read nor rendered; cache materialized states.
67 92
- [x] O5 Concurrency: two processes committing, snapshotting and pushing on one repository; locks hold, nothing is lost.
…
247 unchanged lines
315 340
    - oxygen's `git_import_reproduces_trees` only passed where git has a user identity, because one merge lacked `-c user.name`. Fixed; it now also asserts the merge started.
316 341
  - **Result:** oxygen's full gate (fmt, clippy -D warnings, every test) passes in a microVM on Earth in 135 s cold, with 8 GiB, 4 CPUs and a 24 GiB disk mount.
317 342
  - Runner and hub redeployed; Earth scratch cleaned.
343 +
- 2026-09-28 Andy agreed the order for his five ideas: F2–F5 first, then conflict resolution (P1, P1b), function history (P2), swimlanes (P3), signed receipts and the trust dashboard (P4, P4b), then web workspaces (P5, P5c).
344 +
  - Decisions from the discussion:
345 +
    - Web workspaces start from openvscode-server unmodified, not a VS Code fork.
346 +
    - Hub-side history rewrites are plans applied and signed by the author's client, only on proposal bookmarks.
347 +
    - Function history uses atom identity rather than the semantic-deps hook.
348 +
  - Andy asked the loop to carry straight through all of it.