OXYGENHUB

Backlog: F3 done; F6 faster runs 85df6b4c4d9c

Author
Andy McCall @andymccall <[email protected]>
When
· 2026-09-28 19:10 UTC
Signature
✔ signed by Andy McCall
Hash
85df6b4c4d9c765408b3048a4cd97c68336fde8ae6b6460c340beea932b8b063
Depends on
21352ce529e8 66eb646918c2 75036530b621 b037ade16953
Depended on by
9a8ede1e609f 9a239f064f76 9ce6f08451b1
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
4 atoms, 0 tree operations, 1 file

Browse the tree at this change

modified docs/backlog-overnight-2.md +14 −1
…
57 unchanged lines
58 58
- [x] F1a **Priority (Andy, 2026-09-28): dogfood OxygenFlow.** Every push to oxygen, oxygenhub, oxygenflow and both extensions lints, tests and builds through OxygenFlow on Earth, with results as checks on OxygenHub. F1a: ephemeral scratch mounts in jobs (`ephemeral://tmpfs`, `ephemeral://disk`) so builds have room; `make deploy-runner`.
59 59
- [x] F1b A build image for the runner: a rootfs with the Rust toolchain (stable, rustfmt, clippy), Node, e2fsprogs-free build basics, and every crate of the oxygen, oxygenhub and oxygenflow lock files vendored with cargo pointed at them (jobs have no network); a script that rebuilds it when lock files change; imported on Earth and measured on a real cargo test of oxygen in a microVM.
60 60
- [x] F2 oxygen pipeline (.flow/pipeline.kdl): fmt, clippy -D warnings, tests, release build; green on a real push.
61 -
- [ ] F3 oxygenhub pipeline: needs oxygen alongside (path dependencies), so the job checks out oxygen at a pinned change; fmt, clippy, tests, build.
61 +
- [x] F3 oxygenhub pipeline: needs oxygen alongside (path dependencies), so the job checks out oxygen at a pinned change; fmt, clippy, tests, build.
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 +
- [ ] F6 Faster runs: the runner takes one job at a time (oxygenhub is about 14.5 min to green, 8.5 of them the release build), so run independent jobs in parallel within the runner's CPU and memory, and reuse a build tree between jobs of one run (clippy, test and build compile the same crates).
63 64
- [ ] 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 65
- [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 66
- [ ] P1 **Conflict resolution on OxygenHub** (Andy's list, item 1). A resolver page for a conflicted state:
…
290 unchanged lines
356 357
    - Waiting on Andy for a personal access token (Settings › Tokens, repo:write) to put in every repository's `earth` remote.
357 358
    - Then, with his OK, remove the site token from hub.toml.
358 359
- 2026-09-28 Pushes now use a personal access token for Andy's account in every repository's `earth` remote, not the site push token, so the hub records them as andymccall. The site token stays in hub.toml until Andy agrees to remove it.
360 +
- 2026-09-28 F3 done (oxygenhub#19, oxygenflow#4, oxygen#8, closed by the changes). Andy chose pinned subrepos.
361 +
  - **Subrepos.** oxygenhub pins oxygen and oxygenflow as subrepos in deps/ and builds against them.
362 +
    - `make pins` pulls them to main on Earth; the next commit records the new pins.
363 +
    - A Cargo `paths` override that kept local builds on the sibling checkouts warned that it will become a hard error, so there is none: local, CI and deploy all build the pins.
364 +
  - **OxygenFlow.**
365 +
    - Claims list the state's pinned Oxygen subrepos that the pusher can read, and the job token may read those (and nothing else).
366 +
    - The runner fetches and exports each at its path, inside the scope hash.
367 +
    - Hub test `claims_carry_pinned_subrepos_and_the_job_token_reads_only_those`.
368 +
  - **oxy fix.** `submodule add` probed URLs without OXY_TOKEN and OXY_CA, so a hub with its own CA, or a private repository, fell back to git. It now reports the Oxygen error too.
369 +
  - **Formatting.** `cargo fmt --all` in oxygenhub also formats the path dependencies in deps/, with the hub's style, since oxygen has no rustfmt.toml. The pipeline and the loop's hub gate use `cargo fmt -p oxygenhub -p hub-api`.
370 +
  - **First run** (#12, pushed as andymccall, passed): fmt 5 s, clippy 1 min 49 s, test 4 min 1 s, release build 8 min 26 s. The runner runs one job at a time → F6.
371 +
  - Also this iteration: removed fix.py, fix2.py and format_xenon.py from oxygen (Andy's request, oxygen#7). Answered Andy's VS Code question: the extension is installed in both profiles and only shows in an Oxygen repository.