Log P4d1 (Flow artifacts) as done 9df6217f5f47
- Author
- Andy McCall @andymccall <[email protected]>
- When
- · 2026-09-29 08:10 UTC
- Signature
- ✔ signed by Andy McCall
- Hash
9df6217f5f4749afbf52c40f1032cdbbde91dd3b9de8bcc97fc383012bf59842- Depends on
- 28fee1c9eb6c 75036530b621 7dc9f65b6546 fc1a466a1e66
- Depended on by
- d82f153bdf7e
- 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 +8 −1
| … | 106 unchanged lines |
||
| 107 | 107 | - P3b: drag and drop on proposal bookmarks only. Dropping a change onto another proposes a squash, dragging a dependent chain proposes a rebase. The hub produces a plan and the author's oxy or oxygen-vscode applies and signs it (V6 has split, squash and rebase). Reordering independent changes means nothing and is not offered. |
|
| 108 | 108 | - [x] P4a The `receipt` object and attestation in the Oxygen spec and oxy-core: a signed receipt verifies on its own; the repository keeps receipts by state; `oxy receipt list|show|export|verify|import` (first part of P4, below). |
|
| 109 | 109 | - [x] P4c The runner signs each receipt with its own identity; the hub verifies it against its known runner keys, keeps it in the repository, and shows it on the run, the check and the change. |
|
| 110 | - | - [ ] P4d Flow `output` and artifacts: a job's declared outputs become blobs named by its receipt, and a release asset links to the receipt that built it. |
|
| 110 | + | - [x] P4d1 Flow `output` and artifacts: a job's declared outputs become repository blobs named by its signed receipt, listed and downloadable on the run page. |
|
| 111 | + | - [ ] P4d2 A release asset links to the receipt that built it (by content), and an artifact can be attached to a release from its run. |
|
| 111 | 112 | - [ ] P4 **Signed Flow receipts**: |
|
| 112 | 113 | - A `receipt` object type in the Oxygen spec. |
|
| 113 | 114 | - A runner identity whose key (composite Ed25519 + ML-DSA-65) signs each receipt. |
|
| … | 597 unchanged lines |
||
| 711 | 712 | - **Storage and pages:** kept receipts go into the repository through `add_receipt`, under the repository's write lock. Run pages link them with the signer, change pages list their state's receipts, and `/{o}/{n}/receipts/{attest}` downloads one. |
|
| 712 | 713 | - **Tests:** a hub end-to-end test (kept, wrong key, wrong state, download, pages) and a runner key test. flow-core's receipt and the Oxygen object hash the same. |
|
| 713 | 714 | - **Deployed:** hub and runner. Live, hub run 30's four jobs all have signed receipts, and a downloaded one passes `oxy receipt verify`. Flow and hub runs are green. |
|
| 715 | + | - 2026-09-29 **P4d1 done** (oxygenflow#11, oxygenhub#38, oxygen#24). P4d was split into P4d1 and P4d2. |
|
| 716 | + | - **Pipeline:** `output { artifact "name" { path "/src/…" } }` allows up to 16 artifacts, sorted and part of the job hash only when present. Paths on tmpfs mounts are refused. |
|
| 717 | + | - **Runner:** after a passing job, the runner reads each artifact from the job's disk with `debugfs` (no root; at most 512 MiB). It uploads it, checks that the hub's blob matches `Repo::blob_ref`, and names the blobs in the receipt's `outputs`. A missing artifact fails the job, which then gets no receipt. |
|
| 718 | + | - **Hub:** uploads go through `POST /api/v1/flow/jobs/{id}/artifacts/{name}` and must be declared. The hub keeps each one as a repository blob and records it in `flow_artifacts` (path, size, BLAKE3). A receipt must name exactly the uploaded blobs. Run pages list artifacts and link `/flow/{n}/artifacts/{job}/{name}`. |
|
| 719 | + | - **Dogfood:** oxygen's build job keeps `target/release/oxy`. Live, run 67's 16 MB binary downloads and runs, and the build job's signed receipt names it as its output. |
|
| 720 | + | - **Tests:** parsing, debugfs read-back from an ext4 image, and a hub end-to-end test. All runs are green. |