OXYGENHUB

Backlog 4: the other planned work, for when the speed items are blocked abdbc768c6e8

refs andymccall/oxygenhub#67, andymccall/oxygenflow#19
Author
Andy McCall @andymccall <[email protected]>
When
· 2026-09-30 20:45 UTC
Signature
✔ signed by Andy McCall
Hash
abdbc768c6e8d71d15b9dfc5814202478ac40c30789a68fdb9cdf537a60589f6
Depends on
61e9ad6ddc2d c69733a3ce59
Depended on by
0c15e4678479 6e2b12dfe6ec 332c1241a11c
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.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
4 atoms, 0 tree operations, 1 file

Browse the tree at this change

modified docs/backlog-overnight-4.md +46 −17
…
99 unchanged lines
100 100
  what takes the space, then try a trained zstd dictionary per repository
101 101
  and packing similar objects together.
102 102
103 -
## When a speed item is blocked: web workspaces (P5)
103 +
## When a speed item is blocked: the other planned work
104 104
105 -
Andy's choice (2026-09-30): if the loop is stuck on the speed items, it
106 -
works on P5 from backlog 2, "VS Code in the hub", in its parts, rather
107 -
than stopping.
105 +
Andy's choice (2026-09-30): if the loop is stuck on the speed items (no
106 +
idea left that measures better, or blocked on something only Andy can
107 +
decide), it notes why in the log and takes the next item below instead of
108 +
stopping. Each follows the same rules: an issue, tests, the gate, push,
109 +
deploy where it applies, and a log line. Skip an item that needs Andy (a
110 +
decision, an account, hardware) and say so in the log.
108 111
109 -
- [ ] P5a **flow-casfs**: a read-only FUSE mount of a state from its
110 -
  content-addressed chunks, in oxygenflow, measured (mount time, first
111 -
  read, a full tree walk of the Linux tip).
112 -
- [ ] P5b **Open in Workspace** on a change or bookmark page of the hub:
113 -
  openvscode-server (MIT, unmodified) with Oxygen VCS inside a Firecracker
114 -
  microVM per workspace, the state mounted read-only through casfs with an
115 -
  ephemeral overlay for edits, and commits going back through oxy as the
116 -
  signed-in user. The runner hosts it (the image under `~/flow`, a
117 -
  workspace job kind); the hub starts it, proxies it to the signed-in user
118 -
  only, and stops it when idle. Boot time measured, aiming under 100 ms for
119 -
  the mount. Write the design into the hub and oxygenflow specs first.
120 -
- A fork of VS Code ("oxycode") only if an extension cannot do what is
121 -
  needed, decided with Andy.
112 +
1. **Web workspaces (P5), "VS Code in the hub"**, in parts:
113 +
   - [ ] P5a **flow-casfs**: a read-only FUSE mount of a state from its
114 +
     content-addressed chunks, in oxygenflow, measured (mount time, first
115 +
     read, a full walk of the Linux tip).
116 +
   - [ ] P5b **Open in Workspace** on a change or bookmark page of the hub:
117 +
     openvscode-server (MIT, unmodified) with Oxygen VCS inside a
118 +
     Firecracker microVM per workspace, the state mounted read-only through
119 +
     casfs with an ephemeral overlay for edits, and commits going back
120 +
     through oxy as the signed-in user. The runner hosts it (the image under
121 +
     `~/flow`, a workspace job kind); the hub starts it, proxies it to the
122 +
     signed-in user only, and stops it when idle. Boot time measured, aiming
123 +
     under 100 ms for the mount. Write the design into the hub and
124 +
     oxygenflow specs first. A fork of VS Code only if an extension cannot
125 +
     do what is needed, decided with Andy.
126 +
2. - [ ] **oxy on projects coming from Git**: say when a folder holding
127 +
   `.git` is skipped (oxygen#43), and honour `.gitignore` or offer to import
128 +
   it (oxygen#44).
129 +
3. - [ ] **Device sign-in** for apps and `oh` (oxygenhub#67): approve a code on
130 +
   the web with password and 2FA, and the app receives a scoped token. The
131 +
   Android client needs it.
132 +
4. - [ ] **An Android build image** for OxygenFlow (oxygenflow#19): JDK,
133 +
   Android SDK and NDK, and a Gradle cache warmed offline.
134 +
5. - [ ] **OxygenHub VCS**: declare its authentication provider in the
135 +
   manifest (oxygenhub-vscode#4), released as the next patch (see the
136 +
   Marketplace notes: never reuse a version).
137 +
6. - [ ] **Import at scale**: finish oxygen#25 (per-commit import cost), then
138 +
   backlog 3's H3 (Linux history slices of 2 000, 10 000 and 50 000
139 +
   commits, verified) and H4 (vscode's full history, about 130 000
140 +
   commits, into a scratch repository that is never published).
141 +
7. - [ ] **The hub's open issues**: runner management (oxygenhub#41, backlog
142 +
   2's H12 parts), a pinned subrepo left out of a Flow job for lack of
143 +
   access (#56), faster CI (#29), required checks over the API (#20).
144 +
8. - [ ] **The hub's plan** (`oxygenhub/docs/plan.md`): notifications for
145 +
   review requests, mentions and landings; the organisation webhooks page.
146 +
   Email verification and password reset need SMTP on Earth, and passkeys
147 +
   are for 1.0: skip both unless Andy says otherwise.
148 +
9. - [ ] **Housekeeping**: tick plan items that are already done (for
149 +
   example `oxy seal --proposal` exists), and CHANGELOG files for oxygen,
150 +
   oxygenhub and oxygenflow like the extensions' (backlog 2's V2).
122 151
123 152
## Also
124 153
…
12 unchanged lines