FixCraft YUME stealth transport

YUME 2.0 desktop implementation status

Status: 2.0-dev6 vertical slice implemented; release gates incomplete.

The signed-commit inventory, competitive assessment, exact session handoff, and ordered next-agent gates are in docs/YUME_2_0_DEV6_HANDOFF.md. The explicit development-merge, 2.0-rc1, exact-2.0, and branch-sync gates are in docs/YUME_2_0_STABILIZATION.md.

This is a truthful inventory of the focused Linux x86-64 client/server work. It does not claim Android, GUI, nginx, alternate browser profiles, H3, federation, Windows runtime, or release qualification. Composite AUTH and dual-identity admin are implemented in the CLI/server scope. Development-merge evidence must include a fresh full optimized and sanitizer qualification of the exact signed tree; results from an earlier checkpoint do not transfer across corrections.

Implemented

Development evidence completed

Required before 2.0-rc1

Required before exact version 2.0

Known residual

The former Chrome 131/150 and Windows/Linux identity mismatch is fixed behind one immutable Chrome 151/Debian 13 + Node 24 profile. The normal build still defaults to the explicitly named openssl-diagnostic backend. The new pinned uTLS helper builds reproducibly with official Go 1.26.5 and its five live first flights pass the normalized ClientHello/ServerHello structural gate. Selecting chrome151 never silently falls back: a build without the helper fails closed. The bounded certificate/exporter and process lifecycle matrix, process ramps, reconnect storm, and segmented full-speed soak pass. Matched WAN, one uninterrupted deployed-network soak, exact Chrome 151.0.7922.71 same-session capture, classifier/active-probe evidence, and independent review remain required before that backend becomes the default or YUME claims release-qualified Chrome parity. Matching ALPN or a coarse JA3/JA4 summary is insufficient. Traffic padding is likewise an evidence-driven option, not an automatic improvement.

Client AUTH sends a composite Ed25519 + ML-DSA-87 public identity and both signatures over the complete canonical challenge/response transcript; it never sends the private key. As of 2.0-dev4 the signature input also covers a 32-byte RFC 8446 exporter that each endpoint derives from its own live TLS object and never transmits, and the same value is folded into the establishment root. A malicious terminating endpoint with compatible admission/PSK access can no longer relay a live AUTH exchange to a second server: the forwarded signature is over a different connection’s exporter. Both endpoints require TLS 1.3 and a finished handshake; there is no unbound mode and no way to negotiate the binding away.

Identity-file safety is now a creation and loading invariant rather than operator hygiene. Composite generation serializes the Ed25519 and ML-DSA-87 halves into one private and one public file, creates both through the exclusive owner-only writer, wipes the private PEM buffer, and refuses to replace an existing path. crypto::load_composite_keypair() reads the private file through an already-validated descriptor and requires exactly two private-key PEM blocks in the fixed order. Windows has no equivalent ownership/mode enforcement and fails closed, which remains open work alongside protected secret loading there.

The hybrid ephemeral establishment/rekeys provide a forward-secrecy design against later long-term-file compromise, not secrecy from yumed itself. yumed terminates the ratchet and handles decrypted stream bytes. Historical secrecy still depends on honest non-retention, ephemeral erasure, primitive/RNG security, and the absence of live endpoint compromise.