Skip to content

Commit 0e5ebc0

Browse files
authored
Merge pull request #256 from AdaWorldAPI/claude/sealed-channel-primitives
encryption: X25519, HKDF-SHA384 and Ed25519-signed bundles
2 parents 2850886 + 6e6f5b6 commit 0e5ebc0

8 files changed

Lines changed: 1228 additions & 0 deletions

File tree

.claude/blackboard.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -873,3 +873,34 @@ running multi-hundred-MiB derivations.
873873
break cost bumps in the other direction: a reader shipped before the writer
874874
would reject the new profile. A bounded budget keeps the forward
875875
compatibility the header format exists for.
876+
## 2026-07-25 — Do NOT run git surgery in the shared checkout while the fleet is live
877+
878+
**Status:** FINDING (orchestrator error, no damage, caught by an agent's own report)
879+
880+
`agent-cargo-hygiene.md` says to fan the Sonnet fleet out in the SHARED
881+
checkout so twelve agents don't materialise twelve 7 GB `target/`s. Correct —
882+
but it leaves out the consequence: the orchestrator's own git operations hit
883+
the same working tree the fleet is writing into.
884+
885+
This session: while an X25519 agent was still working, the orchestrator
886+
cherry-picked its branch and then ran `git reset --hard origin/<branch>` on
887+
the branch the agent was standing in. The reset deleted the agent's
888+
in-progress file from disk. The agent noticed (its file had vanished),
889+
rewrote it from what it had already verified, and reported the reflog entry —
890+
which is how this was caught at all.
891+
892+
**No work was lost:** the file had already been committed and pushed to a
893+
separate branch minutes earlier, and the agent's reconstruction turned out
894+
byte-for-byte identical to the pushed version. The exposure was real anyway;
895+
the outcome was luck plus an agent that reported an anomaly instead of
896+
silently continuing.
897+
898+
**The rule:** while any fleet agent is live in the shared checkout, the
899+
orchestrator may `add`/`commit`/`push` (append-only, non-destructive) but must
900+
NOT `reset --hard`, `checkout` another branch, `stash`, or `clean`. Branch
901+
surgery waits until every agent has reported. If it cannot wait, do it in a
902+
throwaway clone, not the shared tree.
903+
904+
**Corollary worth keeping:** an agent that reports "my file disappeared and
905+
here is the reflog entry that explains it" is doing its job. Brief the fleet
906+
so anomalies get reported rather than worked around.

Cargo.lock

Lines changed: 31 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/encryption/Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ argon2 = { version = "0.5", default-features = false, features = ["alloc"] }
1818
chacha20poly1305 = { version = "0.10", default-features = false, features = ["alloc"] }
1919
ed25519-dalek = { version = "2", default-features = false, features = ["alloc", "zeroize"] }
2020
sha2 = { version = "0.10", default-features = false }
21+
# Key agreement + key schedule for the sealed channel (kx.rs / hkdf.rs).
22+
x25519-dalek = { version = "2", default-features = false, features = ["static_secrets", "zeroize"] }
23+
hkdf = { version = "0.12", default-features = false }
2124
zeroize = { version = "1", features = ["derive"] }
2225

2326
# THE ONLY ENTROPY SOURCE. On wasm32 the `js` feature routes this to

0 commit comments

Comments
 (0)