The bench harness now refuses to time anything on a machine whose load average exceeds its core count, and marks both rate sections NOT MEASURED instead. The stored run is one of those, so the throughput table has nothing behind it. The paper handles that rather than papering over it. emit.py reads whether the run measured rates and sets \ifconcMeasured; main.tex prints the table and the paired ratios when it did, and when it did not says so, explains the gate, and prints no number at all. The alternative -- leaving the last run's table in place under a run that produced none -- is the same defect as the Native column, one section over. emit.py also follows the harness's renamed section header and stops assuming a concurrent section exists, so a rate-free run generates cleanly instead of crashing, and every non-rate macro is still emitted. Co-authored-by: Hanzo Dev <[email protected]>
ZAP Protocol — Papers
Docs: ZAP design papers · part of the ZAP Protocol
Formal results on the ZAP wire, transport, and sub-protocol family. Every paper is in LaTeX, brand-neutral, and accompanies a proof in ../proofs/.
| # | Paper | Topic | Key result |
|---|---|---|---|
| 1 | pq-hybrid-kem | Z-Wing triple-hybrid KEM (X25519 + ML-KEM-768 + ML-KEM-1024) | IND-CCA2-AKE bound 2^-87 under standard assumptions |
| 2 | zero-copy-throughput | Throughput vs gRPC/HTTP-2/QUIC/JSON | p99 9–14× small msg vs JSON; 3.5–6× vs gRPC |
| 3 | transport-vs-jwt | Transport-layer mutual auth vs bearer JWT | ZAP advantage strictly dominates JWT; mint-storm impossibility |
| 4 | rns-identity-binding | KEM-bound service naming | Spoofing reduces to KEM key compromise + sig forge + small audit-able root |
| 5 | streaming-tail-latency | Multi-stream pubsub, FEC, no head-of-line blocking | Per-stream latency conditionally independent of other streams |
| 6 | fix-trading-channel | FIX 4.4/5.0 over ZAP | 1.5–8μs/msg savings vs FIX-over-TLS, 30–50% wire bytes |
| 7 | agent-communication | ZAP-MCP / ZAP-A2A non-repudiation | Audit artifact = signed frame; provenance chain bound k·(EUF-CMA + q²/2^257) |
| 8 | composability | Categorical composition of sub-protocols | ZAP-base is initial; tight-embedding additive loss bound |
What composes onto what
Per the composability paper, every sub-protocol is a tight embedding of ZAP-base. Properties chain:
ZAP-base (PQ conf, mutual auth, zero-copy)
↑
├── zap-http (HTTP req/resp; inherits all ZAP-base)
├── zap-ws (multi-stream pubsub + FEC; HOL-blocking elimination)
├── zap-rns (KEM-bound naming; inherits ZAP-base + adds spoofing reduction)
├── zap-fix (FIX semantics; tail-latency-bounded)
├── zap-mcp (MCP non-repudiation per frame)
├── zap-acp (FIPA-style speech acts, signed)
└── zap-a2a (Google Agent2Agent, audit-grade)
A zap-fix session over zap-rns over zap-ws over zap-base inherits zap-base's post-quantum guarantees automatically — no FIX-specific PQ proof needed.
Build
Each paper directory has a Makefile. Most build under pdflatex (TeX Live 2025); a few are tested with tectonic. Compiled PDFs are checked in where the toolchain was available locally.
cd pq-hybrid-kem && make # produces main.pdf
cd ../proofs/pq-hybrid-kem && make # produces proof.pdf
transport-vs-jwt uses \cref, so it needs cleveref, which a minimal TeX
Live such as TinyTeX does not ship. Without it latexmk -Werror stops at the
preamble and writes no PDF, which reads like a broken paper rather than a
missing package:
tlmgr install cleveref
License
CC-BY-4.0 for the paper text; MIT OR Apache-2.0 for any code samples.