Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
d270988
docs(rekey.9a): design spec — classical session rekey (~120s) + epoch…
vxfemboy Jul 19, 2026
f760f65
docs(rekey.9a): implementation plan (5 tasks, subagent-driven)
vxfemboy Jul 19, 2026
ebaba6a
feat(rekey.9a): EpochSet state machine (current/next/previous, WireGu…
vxfemboy Jul 19, 2026
701f31b
test(rekey.9a): assert promotion refreshes current_created_ms (Task 1…
vxfemboy Jul 19, 2026
1086c54
refactor(rekey.9a): PeerState::Established carries an EpochSet; route…
vxfemboy Jul 19, 2026
e8bf210
fix(rekey.9a): EpochInbound::Send carries EgressDatagram (preserve ds…
vxfemboy Jul 19, 2026
c214b3d
feat(rekey.9a): schedule mid-session rekey in tick (winner-initiates,…
vxfemboy Jul 19, 2026
0e3ca53
feat(rekey.9a): complete rekey — initiator promote on Resp, responder…
vxfemboy Jul 19, 2026
f6408e4
fix(rekey.9a): don't schedule rekey for relay peers (completion is di…
vxfemboy Jul 19, 2026
e52fc90
test(rekey.9a): netns money test — loss-free rotation + on-wire conn_…
vxfemboy Jul 19, 2026
92ce064
test(rekey.9a): witness tool errors cleanly on malformed pcap instead…
vxfemboy Jul 19, 2026
9367363
fix(rekey.9a): idempotent responder rekey reply (converge on one sess…
vxfemboy Jul 19, 2026
8f52209
docs(rekey.9a): lockstep note on init_ephemeral offset vs HandshakeIn…
vxfemboy Jul 19, 2026
75e1fe1
docs(rekey.91): design spec — relay-path session rekey completion
vxfemboy Jul 19, 2026
cd81823
docs(rekey.91): implementation plan (4 tasks, subagent-driven)
vxfemboy Jul 19, 2026
c388cb4
refactor(rekey.91): extract rekey_init_core/rekey_resp_core (via_rela…
vxfemboy Jul 19, 2026
b459dde
fix(rekey.91): preserve FEC fate on the rekey prime-emit; None path l…
vxfemboy Jul 19, 2026
e60b7ba
feat(rekey.91): complete relay-path rekey (relayed_handshake_init/res…
vxfemboy Jul 19, 2026
2fbe21e
feat(rekey.91): schedule + relay-wrap rekey Init for relay peers (rem…
vxfemboy Jul 19, 2026
b163430
test(rekey.91): netns relay-forced money test — loss-free rotation ov…
vxfemboy Jul 20, 2026
004c138
fix(rekey.91): gate rekey completion on peers[idx].relay — path-consi…
vxfemboy Jul 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 78 additions & 0 deletions .github/workflows/integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,84 @@ jobs:
fi
done

- name: Build the rekey_epoch_witness on-wire proof tool
# Standalone example binary (not a #[test]): see its module doc for
# why it counts distinct cleartext Noise-IK ephemeral keys rather
# than trying to decode session data, which is cryptographically
# impossible from a passive capture (forward secrecy).
run: cargo build --release -p yipd --example rekey_epoch_witness

- name: Run the 9a rekey money test under sudo (poll driver)
# run-netns-rekey.sh: two yipd peers held to YIP_REKEY_INTERVAL_MS=2000
# (~10 rotations over a ~20s ping stream) must show (1) loss-free
# continuity across every rotation and (2) >=3 distinct completed
# Noise-IK rekey rounds on the wire (the rigorous, non-vacuous proof
# that conn_tag rotates per epoch -- see the script's header comment
# for the full argument, including why a naive raw-byte diff would be
# vacuous and why re-deriving session keys from a passive capture is
# cryptographically impossible).
run: |
sudo bash bin/yipd/tests/run-netns-rekey.sh "$(pwd)/target/release/yipd" | tee /tmp/rekey-poll.log
if grep -q "^SKIP run-netns-rekey" /tmp/rekey-poll.log; then
echo "::error::9a rekey money test (poll) skipped — expected root + tcpdump + the built witness tool in this job"
exit 1
fi
if grep -q "\[FAIL\]" /tmp/rekey-poll.log; then
echo "::error::9a rekey money test (poll) failed — loss-free rotation or on-wire conn_tag rotation regressed"
exit 1
fi

- name: Run the 9a rekey money test under sudo (uring driver)
run: |
sudo -E env YIP_USE_URING=1 bash bin/yipd/tests/run-netns-rekey.sh "$(pwd)/target/release/yipd" | tee /tmp/rekey-uring.log
if grep -q "^SKIP run-netns-rekey" /tmp/rekey-uring.log; then
echo "::error::9a rekey money test (uring) skipped — expected root + tcpdump + the built witness tool in this job"
exit 1
fi
if grep -q "\[FAIL\]" /tmp/rekey-uring.log; then
echo "::error::9a rekey money test (uring) failed — loss-free rotation or on-wire conn_tag rotation regressed"
exit 1
fi

- name: Run the rekey.91 relay-forced money test under sudo (poll driver)
# run-netns-rekey-relay.sh: the run-netns-relay.sh RELAY-FORCED
# topology (A/B mutually unreachable except via R's blind relay)
# held to the same YIP_REKEY_INTERVAL_MS=2000 cadence as the 9a
# direct-path test above. Proves relay-only sessions also rotate
# loss-free: (1) relay-forwarded=<N> N>0 (the relay, not a
# direct/punched path, carried the traffic), (2) <=1% loss across
# ~10 rotations, (3) rekey_epoch_witness (with the opt-in
# YIP_WITNESS_UNWRAP_RELAY=1 RelaySend/RelayDeliver envelope
# unwrap) reports >=3 distinct completed rekey rounds. Uses the
# release yipd and debug yip-rendezvous already built above in
# this job.
run: |
sudo bash bin/yipd/tests/run-netns-rekey-relay.sh \
"$(pwd)/target/release/yipd" \
"$(pwd)/target/debug/yip-rendezvous" | tee /tmp/rekey-relay-poll.log
if grep -q "^SKIP run-netns-rekey-relay" /tmp/rekey-relay-poll.log; then
echo "::error::rekey.91 relay money test (poll) skipped — expected root + tcpdump + the built witness tool in this job"
exit 1
fi
if grep -q "\[FAIL\]" /tmp/rekey-relay-poll.log; then
echo "::error::rekey.91 relay money test (poll) failed — relay did not carry traffic, loss-free continuity, or on-wire rekey rotation regressed"
exit 1
fi

- name: Run the rekey.91 relay-forced money test under sudo (uring driver)
run: |
sudo -E env YIP_USE_URING=1 bash bin/yipd/tests/run-netns-rekey-relay.sh \
"$(pwd)/target/release/yipd" \
"$(pwd)/target/debug/yip-rendezvous" | tee /tmp/rekey-relay-uring.log
if grep -q "^SKIP run-netns-rekey-relay" /tmp/rekey-relay-uring.log; then
echo "::error::rekey.91 relay money test (uring) skipped — expected root + tcpdump + the built witness tool in this job"
exit 1
fi
if grep -q "\[FAIL\]" /tmp/rekey-relay-uring.log; then
echo "::error::rekey.91 relay money test (uring) failed — relay did not carry traffic, loss-free continuity, or on-wire rekey rotation regressed"
exit 1
fi

dpi-undetectability:
# The anti-DPI undetectability merge gate (3a Task 7): fails the build if
# a wire/obfuscation change reintroduces a DPI-recognizable fingerprint.
Expand Down
Loading
Loading