OXYGENHUB

Pin oxygen: a new log key is a note, and oxy tlog verify 7dbb41b09a99

Run 363 failed: a test's fetch found its hub's log signed by another key
than one pinned at the same address by an earlier test (ports reused),
which oxy took for a fork. oxygen b26c0033 makes a changed key a note
that pins the new one; the fetch test now checks that too.

Refs #238
Author
Andy McCall @andymccall <[email protected]>
via
agent agent:claude@andymccall <[email protected]> · keyless, under your grant for changes,refs,seal · key f9beb368185f
When
· 2026-10-18 00:19 UTC
Signature
◈ sealed by agent:claude@andymccall
Hash
7dbb41b09a99ace1e68892a6b1da3c695c46b2b549b2cbb51a42e272be91a25e
Depends on
380996db84e5 42fa95540468 e5b97ac399e7
Depended on by
4f40eed0588f
In bookmarks
api-unknown-fields cancel-landed-runs diffusion-pin-bookmark draft-ready main oh-comment-body-file proposal-list-fast
In tags
v0.6.0 v0.6.1 v0.7.0 v0.8.0 v0.9.0 v0.9.1 v0.9.11 v0.9.15 v0.9.16 v0.9.19 v0.9.2 v0.9.20 v0.9.21 v0.9.22 v0.9.23 v0.9.24 v0.9.3 v0.9.4 v0.9.5 v0.9.6 v0.9.7 v0.9.8 v0.9.9
Edits
2 atoms, 0 tree operations, 2 files

Browse the tree at this change

modified crates/hub/tests/flow.rs +12 −0
…
5070 unchanged lines
5071 5071
    let report = b.fetch("origin").unwrap();
5072 5072
    assert!(report.log_notes.iter().any(|n| n.contains("not in its transparency log yet")), "{:?}", report.log_notes);
5073 5073
5074 +
    // A log key other than the one pinned (a hub given a new key, or a
5075 +
    // port reused by another hub): a note, and the new key pinned.
5076 +
    let text = std::fs::read_to_string(&pin).unwrap();
5077 +
    let other_sk = oxy_core::identity::SecretKey::generate();
5078 +
    let other = other_sk.identity("another hub", "[email protected]", 1);
5079 +
    let note = text.split_once('\n').unwrap().1;
5080 +
    std::fs::write(&pin, format!("{}\n{note}", oxy_core::dsse::base64(&other.encode()))).unwrap();
5081 +
    let report = b.fetch("origin").unwrap();
5082 +
    assert!(report.log_notes.iter().any(|n| n.contains("signed by another key")), "{:?}", report.log_notes);
5083 +
    let report = b.fetch("origin").unwrap();
5084 +
    assert!(!report.log_notes.iter().any(|n| n.contains("another key")), "pinned now: {:?}", report.log_notes);
5085 +
5074 5086
    // What this user saw replaced by another log of the same size, signed
5075 5087
    // by the hub's own key: the hub's real log does not extend it.
5076 5088
    let size = seen(&pin).size;
…
193 unchanged lines
replaced deps/oxygenflow +0 −0

No line changes.