zebra-report/web
Russell Ballestrini c76cb397ba
zebra-spaces: sign + verify mic-state, anti-replay window
Three-layer defense for the mic-state channel:

1. Authenticity: send signs over 'mic-state|' + room_id + payload
   with the identity ed25519 key. Receivers verify against the
   member's roster pubkey (which the server tied to me.uuid at join
   time). Missing or invalid sig -> drop the message + log err line
   to telemetry.

2. Freshness: payload carries a wall-clock timestamp. Receivers reject
   anything older than 30s in either direction (covers clock drift).

3. Monotonicity: each peer's last-accepted timestamp is tracked on
   mm._micT; an old or equal-timestamp message is silently dropped,
   so a replay of a previously-valid mic-state can't reset state to
   a stale value.

Pairs with signal 59ad814.
2026-06-03 12:36:14 -04:00
..
blog phase 1: unfirehose reconstruction from session JSONL ingest 2026-05-27 13:51:14 -04:00
fonts phase 2: gap analysis — cat>> append + binary asset recovery 2026-05-27 13:54:19 -04:00
chat.html css: .row uses minmax(0, max-content) so long labels shrink + wrap 2026-06-02 09:27:55 -04:00
host-your-own.html zebra: dark mode default on all pages + unified theme key 2026-06-01 22:18:02 -04:00
how-it-works.html zebra: dark mode default on all pages + unified theme key 2026-06-01 22:18:02 -04:00
index.html web: bump mobile body padding from 1rem to 1.25rem so the right edge has visible breathing room 2026-05-31 14:13:25 -04:00
kernel.html web: bump mobile body padding from 1rem to 1.25rem so the right edge has visible breathing room 2026-05-31 14:13:25 -04:00
stamp.js web: stamp each zebra-report page with build date + md5/sha256 2026-05-28 17:50:12 -04:00
zebra-audio.html css: .row uses minmax(0, max-content) so long labels shrink + wrap 2026-06-02 09:27:55 -04:00
zebra-spaces.html zebra-spaces: sign + verify mic-state, anti-replay window 2026-06-03 12:36:14 -04:00