OXYGENHUB

oxygen as a pinned subrepo in deps/ (make pins moves it), and fmt, clippy and tests in the pipeline, before the summary fe128fa67a06

closes #5
Author
Andy McCall @andymccall <[email protected]>
When
· 2026-09-28 19:13 UTC
Signature
✔ signed by Andy McCall
Hash
fe128fa67a06401b7c2d469178bcfe1e047e29c97fe5b9acba0bc8dd9ac84b2a
Depends on
a083cc802892 e0918b887850 f29b88af0d9b fc10d9e80383
Depended on by
248cdef759ae 8302cca90c95 5544c8998aa7 9296a15494d3 33682a3988fc 270d5583a25b eb8e445f27b6 72772aa01d6b 9e5fd161efc3 4f5e2af75816 411ef051b94d 28cc603f737d 1408324d5d55 42c8e2f4219f 9ff1fb9f2865 8bf49b95b09e 33d8ada65f6a d59bf2389914 da72c3b192c3 c2430ac3b728 3b1e6c8448ca eaad903bb266 749d6e7168b8 0f2b8eca36b8 85998eeba77e 7cbe4369d492 c5a3fed29cee 35cd8ccb29ea af8cf879d4fb 97b9cfeb7d66 027cb8979b8a f1d14bb6ec2b 8efb7e14532b 32fbe8980585 fc2a6d1817c0 ec394f0c115e af7902eab78a 01ab9ae7e764 8a6ae1e1c739 d65cad6bdeb5 8f2752bfaa09 c59b9660678c 1217af4847ad bb58970afb0c 93feb1f3061a 0a407108de18 66a7e708b377 92587de58cef 454b853a8f4a 2be1fe4ad345 c1a24672dbd5 89171fca079c 0941bb8ac32b b262a103bccd 39dba8493cb0 ba8fb1bbcc0a de5cfe83a0eb fad6152112b1 658872998361 cd008acc4eb2 ebf83767f47d d4d614d2d353 73805d2eb444 4a477b9121b9 53a18c53558c 78c45d1a752e 4fe0a145144f 20969df44046 eba8bdd7ad5a 12825126cc5f 19728d93bef4 85ad9087a566 bda0d3c9468e 6b3d325df979 e611ad52a136 f849c7889471 728b940f2c5f 5c4016b9c5eb c0c54484499e 00b245154ee2 e0010a74135b 7b1b1d2a08c9 12e74792e335 062c053ef8b1 47c1d64dec8a 67634e22f48f 635ed0b18ab8 a3bb1ce37e8d 2b40cb9b87e1 f3b4fdeb2bc2 6c524850555b 980b142f6634 0f785e1c56e7 7dde30b05777
In bookmarks
main newer-pipeline push-uses-login
In tags
v0.2.0 v0.3.0 v0.3.1 v0.4.0 v0.5.0 v0.5.1 v0.5.2 v0.5.3
Edits
10 atoms, 3 tree operations, 6 files

Browse the tree at this change

added .oxymodules +4 −0
1 +
[deps/oxygen]
2 +
url = https://earth.andymccall.xyz:7343/andymccall/oxygen
3 +
bookmark = main
4 +
added deps/oxygen +0 −0

No line changes.

modified .flow/pipeline.kdl +53 −1
…
32 unchanged lines
33 33
    exec "sh" "-eu" ".flow/jobs/isolation.sh"
34 34
}
35 35
36 +
// The build image (images/rust): Rust with rustfmt and clippy, Node, and the
37 +
// vendored crates. oxygen comes from the pinned subrepo in deps/.
38 +
sandbox "rust" {
39 +
    runtime "microvm"
40 +
    rootfs "cas://blob/3ba0779a55b1d66fce10adf5a01585624c9aab089f590d228368c38fd3e65a46"
41 +
    memory-limit "8GiB"
42 +
    cpu-limit 4
43 +
    network "loopback"
44 +
}
45 +
46 +
sandbox "rust-small" {
47 +
    runtime "microvm"
48 +
    rootfs "cas://blob/3ba0779a55b1d66fce10adf5a01585624c9aab089f590d228368c38fd3e65a46"
49 +
    memory-limit "1GiB"
50 +
    cpu-limit 1
51 +
    network "isolated"
52 +
}
53 +
54 +
job "fmt" {
55 +
    sandbox "rust-small"
56 +
    // This workspace only: --all would reach the pinned oxygen in deps/.
57 +
    exec "cargo" "fmt" "--check" "-p" "flow" "-p" "flow-core" "-p" "flow-init"
58 +
}
59 +
60 +
job "clippy" {
61 +
    sandbox "rust"
62 +
    depends-on "fmt"
63 +
    mount {
64 +
        source "ephemeral://disk"
65 +
        target "/src/target"
66 +
        size "16GiB"
67 +
    }
68 +
    env {
69 +
        CARGO_INCREMENTAL "0"
70 +
    }
71 +
    exec "cargo" "clippy" "--workspace" "--all-targets" "--locked" "--" "-D" "warnings"
72 +
}
73 +
74 +
job "test" {
75 +
    sandbox "rust"
76 +
    depends-on "fmt"
77 +
    mount {
78 +
        source "ephemeral://disk"
79 +
        target "/src/target"
80 +
        size "16GiB"
81 +
    }
82 +
    env {
83 +
        CARGO_INCREMENTAL "0"
84 +
    }
85 +
    exec "cargo" "test" "--workspace" "--locked"
86 +
}
87 +
36 88
job "summary" {
37 89
    sandbox "alpine"
38 -
    depends-on "layout" "todos" "size" "isolation"
90 +
    depends-on "layout" "todos" "size" "isolation" "clippy" "test"
39 91
    env {
40 92
        PROJECT "OxygenFlow"
41 93
    }
…
2 unchanged lines
modified Cargo.toml +3 −1
1 1
[workspace]
2 2
members = ["crates/flow-core", "crates/flow-init", "crates/flow"]
3 +
# oxygen as a pinned subrepo (oxy submodule): the state flow builds against.
4 +
exclude = ["deps"]
3 5
resolver = "2"
4 6
5 7
[workspace.package]
…
2 unchanged lines
8 10
license = "MIT OR Apache-2.0"
9 11
10 12
[workspace.dependencies]
11 -
oxy-core = { path = "../oxygen/crates/oxy-core" }
13 +
oxy-core = { path = "deps/oxygen/crates/oxy-core" }
12 14
flow-core = { path = "crates/flow-core" }
13 15
serde = { version = "1", features = ["derive"] }
14 16
serde_json = "1"
…
8 unchanged lines
modified Makefile +6 −0
…
22 unchanged lines
23 23
		h=$$(bin/flow hash bin/flow-init | cut -d" " -f1); \
24 24
		sed -i "s|^init = .*|init = { path = \"bin/flow-init\", blake3 = \"$$h\" }|" flow.toml; \
25 25
		sudo systemctl restart flow-runner; systemctl is-active flow-runner'
26 +
27 +
# Move the pinned oxygen (deps/oxygen) to its main on Earth; the next commit
28 +
# records the new pin. Push oxygen first.
29 +
.PHONY: pins
30 +
pins:
31 +
	cd deps/oxygen && OXY_CA=$(HOME)/.config/oxy/earth-ca.pem oxy --plain pull origin
modified README.md +4 −0
…
109 unchanged lines
110 110
`FLOW_TEST_ROOTFS` is the hash of an Alpine rootfs in it. The test checks
111 111
literal argv, network isolation, the read-only rootfs, and that dependents
112 112
are skipped after a failure.
113 +
114 +
## oxygen as a pinned subrepo
115 +
116 +
`flow` builds against `deps/oxygen`, a subrepo (`oxy submodule`) pinned to an exact state, so builds are reproducible and OxygenFlow can build this repository without network. `make pins` moves it to oxygen's `main` on Earth (push oxygen first); the next commit records the new pin. Format only this workspace, `cargo fmt -p flow -p flow-core -p flow-init`: `--all` also reaches `deps/`. After a fresh clone, `oxy submodule update --init` fetches it.