OXYGENHUB

Log P4a (execution receipts) as done 155313e68e15

Author
Andy McCall @andymccall <[email protected]>
When
· 2026-09-29 07:29 UTC
Signature
✔ signed by Andy McCall
Hash
155313e68e154afe5ba12111a3b5b3fb0c4b29a02ce47ec48b03d2003da79b72
Depends on
28fee1c9eb6c 75036530b621 8f6b03b28e40 fc1a466a1e66
Depended on by
7dc9f65b6546
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
…
104 unchanged lines
105 105
- [x] P3 **Swimlanes** (item 3):
106 106
  - Hub: a bookmark's changes drawn as lanes of independent changes (oxy-core `lanes`), with dependencies as edges and no merge nodes.
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 -
- [ ] 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).
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
- [ ] 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 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.
111 111
- [ ] P4 **Signed Flow receipts**:
…
586 unchanged lines
698 698
  - **Hub:** on an open or draft proposal's board (author, or Write role), dropping a change on another asks `POST …/lanes/{ref}/plan`. It offers a squash when the change needs nothing the target lacks (the same rule as `oxy squash`), and a rebase unless the change already depends on the target. It refuses when the target depends on the change, or when either change is already on the proposal's target. Each option gives the oxy commands and a VS Code link. The hub never rewrites the changes itself, because they must be signed by their author. Hub spec §6.7 describes it.
699 699
  - **oxygen-vscode 0.12.0:** the `/plan` link finds the checkout, confirms, switches to the bookmark and pulls it, squashes or rebases, then offers a force push. Installed in both profiles.
700 700
  - **Tests:** one end-to-end hub test (squash, both options, refused, already on main) and one test of the extension's link parsing. Deployed. Hub and extension runs are green.
701 +
- 2026-09-29 **P4a done** (oxygen#23; Draft 0.8o). P4 was split into P4a, P4c and P4d.
702 +
  - OxygenFlow's receipt is now the Oxygen `receipt` object (§14.6), with the same encoding and hash as flow-core's.
703 +
  - An attestation of kind `receipt` binds a receipt to its state and run, and the runner signs it.
704 +
  - A signed receipt is `[receipt, attest, sigs, identity]` and verifies with nothing else.
705 +
  - The repository indexes receipts by state. gc keeps them, their runners and their outputs while the state's changes live, and pruning a state drops its index.
706 +
  - The CLI has `oxy receipt list|show|export|verify|import`.
707 +
  - **Tests:** core round trip and tamper tests, a repo test (keep, refuse, gc, fsck) and a CLI end-to-end test. The oxygen run is green.