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