OXYGENHUB

oxy 0.5.0 6f06d9f912b4

Trusted time and witnesses, fetches that survive an unverifiable side
bookmark and carry attestation signers, bucket stores without a LIST per
lookup (#116), identical additions unify (#101), resolutions by path and
amend PATH, oxy doctor's trust check, show --stat, merging a remote's
bookmark, and a server hook to refuse a push by its content. The changes
are in CHANGELOG.md under 0.5.0.
Author
Andy McCall @andymccall <[email protected]>
via
agent agent:claude@andymccall <[email protected]> · keyless, under your grant for changes,refs,seal · key 897633a12276
When
· 2026-10-19 23:52 UTC
Signature
◈ sealed by agent:claude@andymccall
Hash
6f06d9f912b4c91ac91bc5ff3c5b3bf96d46f7e5201f2eb053f46b981fa12885
Depends on
2b95bc24d7d6 68dcf21fe055 750251b21a96 8d80356371c5 8fd78eb52ad2 e4595038502a ff0af1ee299d
Depended on by
82202a4d0025 1ec6fdbc6bcb
In bookmarks
identical-sides keyless-tags main push-notes subrepo-pin-state
In tags
v0.10.0 v0.11.0 v0.5.0 v0.5.1 v0.6.0 v0.7.0 v0.8.0 v0.9.0
Edits
8 atoms, 0 tree operations, 3 files

Browse the tree at this change

modified CHANGELOG.md +2 −0
…
1 unchanged lines
2 2
3 3
## Unreleased
4 4
5 +
## 0.5.0 (2026-10-20)
6 +
5 7
- **A repository kept in a bucket finds signatures and seals without a LIST each (#116).** Every lookup of an object's signatures, seals, receipts, approvals or certificate listed a prefix in the bucket, and most of these lookups found nothing. Writers now also add each such entry to a journal (`pack-entries`, updated by compare-and-swap), and `oxy gc` folds them all into one list. Once a store has been folded, a reader reads the lists and the journal when it opens it, and again after 30 seconds (as long as the pack listing is kept), and looks everything up from them. Another writer's entry is seen within 30 seconds, as its pack would be, even by a handle a server keeps open. The first `oxy gc` also copies the one-list keys of much older stores (`sigs/`, `seals/`, `certs/`, …) into the current layout and marks them folded, so readers stop requesting them; until now nearly every lookup made one of these requests and found nothing. On the test store, 40 lookups went from 85 requests (40 LISTs) to 7 (one journal read and no LIST). Older readers are unaffected, because every entry still has its own key. Entries written by oxy 0.4.6 or older after the fold are missed until the next `oxy gc`, so upgrade every client that writes to the bucket first, then run `oxy gc` once. A server's `/health` counts journal reads as `read_journal`. A repository's own directory works as before.
6 8
7 9
- **A server can refuse a push by what it adds (oxygenhub#268).** `oxy-server`'s `Backend` has a `vet_push` step, called with the push's changes before anything is stored or moved; OxygenHub uses it for push protection (secret scanning). The refusal reaches `oxy push` as the server's own text, several lines included, and a refusal that mentions a certificate or a timeout no longer picks up a misleading hint.
…
246 unchanged lines
modified Cargo.lock +4 −4
…
1469 unchanged lines
1470 1470
1471 1471
[[package]]
1472 1472
name = "oxy"
1473 -
version = "0.4.6"
1473 +
version = "0.5.0"
1474 1474
dependencies = [
1475 1475
 "anyhow",
1476 1476
 "clap",
…
11 unchanged lines
1488 1488
1489 1489
[[package]]
1490 1490
name = "oxy-core"
1491 -
version = "0.4.6"
1491 +
version = "0.5.0"
1492 1492
dependencies = [
1493 1493
 "blake3",
1494 1494
 "ed25519-dalek",
…
18 unchanged lines
1513 1513
1514 1514
[[package]]
1515 1515
name = "oxy-server"
1516 -
version = "0.4.6"
1516 +
version = "0.5.0"
1517 1517
dependencies = [
1518 1518
 "axum",
1519 1519
 "axum-server",
…
6 unchanged lines
1526 1526
1527 1527
[[package]]
1528 1528
name = "oxy-strata"
1529 -
version = "0.4.6"
1529 +
version = "0.5.0"
1530 1530
dependencies = [
1531 1531
 "async-trait",
1532 1532
 "bytes",
…
1419 unchanged lines
modified Cargo.toml +1 −1
…
2 unchanged lines
3 3
resolver = "2"
4 4
5 5
[workspace.package]
6 -
version = "0.4.6"
6 +
version = "0.5.0"
7 7
edition = "2021"
8 8
license = "MIT OR Apache-2.0"
9 9
…
37 unchanged lines