Repository navigation
feat(transport): persistent coordinator key via atlas-vault, size-bucket padding on every record (F6) - #23
Conversation
…t) and pad every record to a size bucket cargo test --workspace: 129 passed, 0 failed, 2 ignored. cargo audit: exit 0. - oh-coordinator --key-from-vault <NAME> [--vault-bin <path>] runs `atlas-vault get <NAME>`, reads a 64 hex character seed into memory, rebuilds the Ed25519 key with beacon-core Keypair::from_seed and wipes the seed. Never written to disk, printed or logged. Default (fresh in-memory key) unchanged. Run id now mixes in 16 random bytes so it still differs per start. - Transport records now carry data_len[4] || data || zeros, padded to the next power of two (1 KiB to 64 MiB). Receiver refuses wrong length field, wrong bucket or nonzero padding. Version tag OHSEC002. - Timing padding documented as not built. Co-authored-by: Drake Stapleton <drake@aien.org> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
⚖️ Sovereign Code Review & Alignment GateGreetings @aien-spark. I am AIEN, the automated review gate for the AIENOS project. Your pull request #23 ("feat(transport): persistent coordinator key via atlas-vault, size-bucket padding on every record (F6)") has undergone automated auditing against the project standards. ✅ Doctrine Diff Audit: PASS
🌿 Sovereign Steward: Contributor Alignment InterviewGreetings @aien-spark. I am AIEN, the automated steward for the AIENOS project. We welcome all contributors who share our commitment to open collaboration, global humanity, and disciplined systems craftsmanship. We build to expand computing capability, advance open-source intelligence, and share technology freely with the world. Your pull request #23 ("feat(transport): persistent coordinator key via atlas-vault, size-bucket padding on every record (F6)") is ready for stewardship alignment. Please respond directly to these four alignment inquiries:
Reply to this comment with your affirmation. Once verified against the project standards, I will grant the |
Evidence
cargo test --workspace: 129 passed, 0 failed, 2 ignored (11 of them new in this PR).cargo audit: exit 0, no advisories.cargo fmt --checkclean on changed files; no new clippy warnings.oh-coordinatorstarts with--key-from-vault oh-test --vault-bin <stand-in script>both printed the samecoordinator key 03a107bf.... With the real~/.local/bin/atlas-vaultthe coordinator stops with a clean error: on this Spark the vault binary itself fails to start (missing shared librarylibKGENCompilerRTShared.so, exit 127), so the real vault is untested.What changed
crates/oh-coordinator/src/identity.rs).--key-from-vault <NAME>runsatlas-vault get <NAME>(--vault-bin <path>overrides the program), reads exactly 64 hex characters into memory, rebuilds the key with newbeacon_core::Keypair::from_seed(ed25519-dalekSigningKey::from_bytes), and zeroizes the seed buffers. The seed is never written to disk, printed or logged; errors never quote it. Default (fresh in-memory key) unchanged; thecoordinator key <hex>line is unchanged so the demo scripts still parse it, and a newcoordinator key source:line follows. The run id now also mixes in 16 OsRng bytes so a restart with the same key still gets a new run id.crates/oh-core/src/transport.rs). Record plaintext isdata_len[4 BE] || data || zeros, padded to the next power of two, min 1 KiB, max 64 MiB; longer flushes split. Receiver refuses records outside 1 KiB..64 MiB and, after opening, a length field past the end, a bucket that is not the smallest fit, or nonzero padding; the stream then closes. Version tagOHSEC001->OHSEC002.Tests added
transport: bucket sizes; 7 B and 900 B (and 3000/4000 B) give identical ciphertext lengths; exact round trip at bucket edges and 70 kB; malformed padding (length past end, nonzero pad byte, oversized bucket) rejected with a control that the honest encoding opens; record below 1 KiB rejected. identity: seed hex stable, bad seeds refused without echo, missing/failing vault errors, stand-in vault script round trip. lib: same key across two starts keeps pubkey, changes run id. beacon-core:
from_seedstable and signs.Zero secrets certification: no keys, tokens or seeds written to files (the test seed is a public fixture, 00..1f).
🤖 Generated with Claude Code