Backlog: F1b done (oxygenflow#3, oxygen#6) 9b761fe2f751
- Author
- Andy McCall @andymccall <[email protected]>
- When
- · 2026-09-28 17:43 UTC
- Signature
- ✔ signed by Andy McCall
- Hash
9b761fe2f7513ef6a4698faa5569dee614ffbbed3493776f88e802b345db96c8- Depends on
- 6f16ce2be33b 75036530b621
- Depended on by
- 66eb646918c2 28fee1c9eb6c
- 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
- 3 atoms, 0 tree operations, 1 file
Browse the tree at this change
modified docs/backlog-overnight-2.md +14 −1
| … | 55 unchanged lines |
||
| 56 | 56 | - [x] O10c Snapshot cost in the in-memory state: faster graph hashing, no unused predecessor map, inline successor sets, lines moved not copied; `OXY_TIMINGS=1` phase timings. |
|
| 57 | 57 | - [x] O10d Skip reading text files whose stat matches a manifest that recorded them equal to the base (racy entries, those modified at or after the manifest was written, are still read); test that no edit is ever missed. |
|
| 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 | - | - [ ] 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. |
|
| 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 | - [ ] F2 oxygen pipeline (.flow/pipeline.kdl): fmt, clippy -D warnings, tests, release build; green on a real push. |
|
| 61 | 61 | - [ ] 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. |
|
| … | 239 unchanged lines |
||
| 302 | 302 | - **Checked on Earth** with `flow run` in a real microVM (no hub involved): the job (uid 1001) owns the mounts, a 2 GiB disk took a 300 MiB write, a 64 MiB tmpfs refused 100 MiB, and scratch was cleaned. The next real push of oxygenflow passed on the new runner. |
|
| 303 | 303 | - Tests: 2 new flow-core tests (parsing, refusals, hash stability) and a runner test for guest device numbering. Gates green for oxygenflow and oxygenhub; hub redeployed (it validates pipelines with flow-core). |
|
| 304 | 304 | - Andy also confirmed that only he and I use oxy, so there is no need for backward compatibility before the release. |
|
| 305 | + | - 2026-09-28 F1b done (oxygenflow#3 and oxygen#6, closed by the changes). |
|
| 306 | + | - **The build image** (`oxygenflow/images/rust`): |
|
| 307 | + | - Rust 1.97.1 with rustfmt and clippy, and Node 24.21.0 (SHA-256 checked). |
|
| 308 | + | - Every crate of the oxygen, oxygenhub and oxygenflow lock files, vendored, with cargo pointed at them via /.cargo/config.toml and `offline = true`. |
|
| 309 | + | - Toolchain binaries are linked into /usr/local/bin, so no rustup is needed at run time. |
|
| 310 | + | - `build.sh` builds it; Docker is only a file-system builder on the workstation (Andy agreed). Imported on Earth as `cas://blob/3ba0779a55b1d66fce10adf5a01585624c9aab089f590d228368c38fd3e65a46` (2.2 GiB). |
|
| 311 | + | - Rebuild it when a Cargo.lock changes. |
|
| 312 | + | - **Running oxygen's gate in it found three real problems:** |
|
| 313 | + | - `flow-init` called glibc's `execvpe`, which searches PID 1's own (empty) PATH rather than the job's, so programs outside /bin and /usr/bin were not found. It now resolves them itself (tested). |
|
| 314 | + | - Tests serving on 127.0.0.1 need a loopback interface. `network "loopback"` (already in the spec) is now in M0: `flow-init` brings up `lo`, with still no device leaving the guest (tested). |
|
| 315 | + | - 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 | + | - **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 | + | - Runner and hub redeployed; Earth scratch cleaned. |