Backlog: F1a done (oxygenflow#2); F1b build image next 6f16ce2be33b
- Author
- Andy McCall @andymccall <[email protected]>
- When
- · 2026-09-28 17:24 UTC
- Signature
- ✔ signed by Andy McCall
- Hash
6f16ce2be33b2a114527561ef9f673fd12c8d5f06344f3bcbef1f078911057d6- Depends on
- 75036530b621 b037ade16953 f97d3556db5f
- Depended on by
- 9b761fe2f751
- 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 +12 −1
| … | 54 unchanged lines |
||
| 55 | 55 | - [x] O12 `log_for_path_in` and `blame_in` rebuild and re-render the whole state on every call, and walk every change: take an already loaded state, stop at the first change touching the path when only the newest is wanted, and benchmark it (found in H16). |
|
| 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 | - | - [ ] F1 **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. F1: a build sandbox for the runner: a rootfs with the Rust toolchain (stable, rustfmt, clippy) and Node, resource limits that fit a cargo build, and dependencies without open network (a crate and npm cache or vendoring); measured on Earth. |
|
| 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 | 60 | - [ ] F2 oxygen pipeline (.flow/pipeline.kdl): fmt, clippy -D warnings, tests, release build; green on a real push. |
|
| 60 | 61 | - [ ] F3 oxygenhub pipeline: needs oxygen alongside (path dependencies), so the job checks out oxygen at a pinned change; fmt, clippy, tests, build. |
|
| 61 | 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. |
|
| … | 229 unchanged lines |
||
| 291 | 292 | - **New priority from Andy:** dogfood OxygenFlow on every push (F1–F5, ahead of O10f and O10g). |
|
| 292 | 293 | - The runner is live on Earth, but only oxygenflow has a pipeline, of light shell jobs in a 256 MiB, one-CPU Alpine microVM. |
|
| 293 | 294 | - No Rust or Node sandbox exists yet. |
|
| 295 | + | - 2026-09-28 F1a done (oxygenflow#2, closed by the change). Andy said go ahead with the Earth work for F1. |
|
| 296 | + | - **Mounts.** Jobs may now declare up to 4 ephemeral scratch mounts: |
|
| 297 | + | - `ephemeral://tmpfs` uses guest memory; `ephemeral://disk` is a fresh sparse ext4 disk per job, attached as vdc onward. |
|
| 298 | + | - Targets are clean paths strictly under /src or /tmp and may not nest; sizes run from 16 MiB to 64 GiB. Other sources and settings are refused as not in M0. |
|
| 299 | + | - Mounts are part of the canonical job (field 6, only when present, so existing pipeline hashes are unchanged) and of the receipt environment. |
|
| 300 | + | - `flow-init` creates mount points owned by the job's user. |
|
| 301 | + | - **Deployment.** `make deploy-runner` builds `flow` and the static `flow-init`, installs them under /home/claude/flow keeping `.prev` copies, re-pins `flow-init` in flow.toml and restarts flow-runner. |
|
| 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 | + | - 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 | + | - Andy also confirmed that only he and I use oxy, so there is no need for backward compatibility before the release. |