7. Zero-Knowledge Cryptography

7.3 Keyed BLAKE3 Blinded Commitments & Zero-Leak Flywheel

ZeroLeakTrainingTrajectoryV1 · 128-Byte ZLT1 Record

How Chinwag routes encrypted frames using blinded 32-byte BLAKE3 commitments (T_coalesce) and improves model routing with a 128-byte zero-code telemetry struct.

7.3 Keyed BLAKE3 Blinded Commitments & Zero-Leak Flywheel

ZeroLeakTrainingTrajectoryV1 · 128-Byte ZLT1 Record

Even when message bodies are encrypted, naive cloud relays leak sensitive engineering metadata in plaintext headers: repository names (acme/payments-core), file paths (src/billing/stripe.rs), and ticket titles (Fix CVE-2026-xxxx).

Chinwag eliminates metadata leakage with Keyed BLAKE3 Blinded Routing Commitments (T_coalesce) and our Fixed 128-Byte Zero-Leak Customer Learning Flywheel (ZeroLeakTrainingTrajectoryV1).


1. Blinded Routing Commitments (T_coalesce · 32 Bytes)

To coalesce stale heartbeats and enforce disjoint --file-scope leases at the edge without learning your repository or file names, your local chinwag daemon derives a local org-secret blinding key K_blind (via HKDF-SHA256 from your org root secret, which never leaves your devices):

T_coalesce = BLAKE3::keyed_hash(K_blind, "chinwag.topic.v2|" || repo_id || "|" || canonical_glob)
  • The Cloudflare Edge Durable Object sees only an opaque 32-byte pseudonymous digest (T_coalesce = 0x8a4f...).
  • If two agents attempt to lock the same file glob simultaneously, their T_coalesce digests collide deterministically at the edge · allowing the edge arbiter to reject the duplicate lease in < 5ms without knowing which file or repository was requested.

2. The 128-Byte Zero-Leak Weekly Learning Flywheel (ZeroLeakTrainingTrajectoryV1)

How does Chinwag Delivery-2 (Chinwag Reflex-1 & Chinwag Delivery-2) get smarter at predicting task sizes, model-tier pass rates, and 7-day code survival (SURV) every week without ever reading a single byte of your source code, prompts, or diffs?

Each completed task optionally emits a fixed, schema-locked 128-byte binary telemetry vector (ZeroLeakTrainingTrajectoryV1) containing strictly quantized numeric indicators and Ed25519 authenticity proof · and zero strings, zero identifiers, zero tokens, and zero code:

#[repr(C, packed)]
pub struct ZeroLeakTrainingTrajectoryV1 {
    pub magic_ver: [u8; 4],            // Bytes 0..4:     "ZLT1"
    pub org_blind_bucket: [u8; 8],     // Bytes 4..12:    Keyed BLAKE3-64 pseudonymous cohort tag
    pub lang_and_framework_id: u16,    // Bytes 12..14:   Enum ID (e.g., 1=Rust, 2=TS, 3=Python)
    pub codegraph_fan_in_bucket: u8,   // Bytes 14..15:   Quantized fan-in tier (0..15)
    pub codegraph_fan_out_bucket: u8,  // Bytes 15..16:   Quantized fan-out tier (0..15)
    pub estimated_loc_p90: u16,        // Bytes 16..18:   Pre-flight predicted LOC
    pub actual_loc_delta: u16,         // Bytes 18..20:   Actual AST-normalized LOC changed
    pub driver_model_class_id: u16,    // Bytes 20..22:   Enum ID of driver model family
    pub reviewer_model_class_id: u16,  // Bytes 22..24:   Enum ID of reviewer model family
    pub hooks_h1_to_h5_bitmask: u8,    // Bytes 24..25:   Pass/fail bits for H1..H5
    pub ui_gate_stage1_score: u8,      // Bytes 25..26:   0..176 DOM physics score
    pub ui_gate_stage2_score: u8,      // Bytes 26..27:   0..64 Vision-3 rubric score
    pub copy_gate_score: u8,           // Bytes 27..28:   0..64 Declaration copy score
    pub ci_strikes_count: u8,          // Bytes 28..29:   Number of CI strikes before green
    pub tombstone_hits_count: u8,      // Bytes 29..30:   Negative memory tombstones matched
    pub cycle_duration_secs_u32: u32,  // Bytes 30..34:   Wall-clock seconds from claim to merge
    pub credits_consumed_u16: u16,     // Bytes 34..36:   Total credits consumed by task
    pub survival_7d_bps: u16,          // Bytes 36..38:   7-day AST survival in basis points (0..10000)
    pub mo_grpo_chips_earned: u16,     // Bytes 38..40:   Settled MO-GRPO Chips (◈)
    pub reserved_zero: [u8; 24],       // Bytes 40..64:   MUST be all 0x00 (verified at edge)
    pub ed25519_sig: [u8; 64],         // Bytes 64..128:  K1 Ed25519 signature over Bytes 0..64
} // Exact total size: 128 bytes. Any frame != 128 bytes or with non-zero reserved bytes is dropped.

Auditable Outbound Inspection

You can inspect every 128-byte trajectory struct before it leaves your workstation:

chinwag tasks inspect-flywheel --last 5 --hex

Because ZeroLeakTrainingTrajectoryV1 contains only numeric enums, durations, and pass/fail bitmasks (64 payload bytes + 64 signature bytes = 128 bytes), it is mathematically impossible for source code, customer PII, or proprietary business logic to leak into the learning loop.


Next Steps