Skip to content

Test the compute-honesty spot-check (challenge.py); defer endpoint bindings#43

Merged
leyten merged 2 commits into
masterfrom
test/challenge-spot-check
Jul 7, 2026
Merged

Test the compute-honesty spot-check (challenge.py); defer endpoint bindings#43
leyten merged 2 commits into
masterfrom
test/challenge-spot-check

Conversation

@leyten

@leyten leyten commented Jul 7, 2026

Copy link
Copy Markdown
Owner

Two things:

1. Adversarial tests for shard/challenge.py (had zero) — the layer-block spot-check that catches a node getting paid without running its block's real matmuls (the gap the receipt hash-chain can't close). 13 CPU tests: compare passes identical + honest ULP drift, fails garbage / wrong-magnitude (rel-norm guard) / partial-direction; challenge_block passes an honest recompute and fails a lazy-constant / wrong block, with both sides fed the same seeded input; derive_challenge/sketch determinism.

2. Decision: defer receipt endpoint bindings. Under coordinator-trusted-challenge a tok_in_root/tok_out_root is security theater — the tail root is a tautology (the coordinator already observes the reply tokens), the head root only proves a node saw the tokens (and the coordinator can already bit-exactly recompute the head's in_root from embedding(token_ids)). Neither proves compute — that's challenge.py's job. A (prompt, answer) receipt-of-service belongs in the c0mpute layer. Recorded in the living state with the revisit condition.

Test + doc only, no production change. Suite 189 green.

leyten added 2 commits July 7, 2026 17:11
shard/challenge.py is the primitive that actually catches a node getting paid
without running its block's real matmuls — the gap the receipt hash-chain
can't close (a chain proves byte-continuity, never out == block(in)). A
verifier draws a seeded input both sides derive identically, the suspect and
a trusted replica run the same block, and outputs are compared by cosine +
relative norm with a tolerance (honest heterogeneous hardware drifts a few
ULPs -> cosine ~1; garbage/wrong/skipped block -> cosine ~0). It had ZERO
tests.

13 CPU tests (pure discriminators direct; challenge_block with synthetic
blocks, block_forward stubbed): derive_challenge deterministic + seed-varying;
sketch deterministic; compare passes identical + ULP drift, fails garbage /
scaled-magnitude (rel-norm guard) / partial-direction, works on sketches;
challenge_block passes an honest recompute and fails a lazy-constant / wrong
block, feeding both sides the same seeded input. Test-only. Suite 189 green.
…al lever

Worked the endpoint-binding trust model and decided against building it. Under
the coordinator-trusted model a tok_in_root/tok_out_root is theater: the tail
root is a tautology (the coordinator already observes+uses the reply tokens),
and the head root only proves a node saw the tokens it was handed — the
coordinator can already bit-exactly recompute the head's in_root from
embedding(token_ids) (a gather, hardware-independent). Neither proves compute.
Compute honesty is challenge.py's redundant-recompute spot-check (now tested),
and a (prompt, answer) receipt-of-service belongs in the c0mpute layer, not the
engine's activation chain. Record the decision + revisit condition.
@leyten
leyten merged commit 13634f6 into master Jul 7, 2026
@leyten
leyten deleted the test/challenge-spot-check branch July 7, 2026 17:11
leyten added a commit that referenced this pull request Jul 20, 2026
…challenge probe (#128)

One no-spend day, five merged PRs (shard #125/#126/#127, c0mpute #42/#43).
Warm re-join receipt folds into the P0-#6 churn-proof ring session.
RESUME-HERE + launch tracker updated; next = P0-#3 relay automation.
leyten added a commit that referenced this pull request Jul 22, 2026
…challenge probe (#128)

One no-spend day, five merged PRs (shard #125/#126/#127, c0mpute #42/#43).
Warm re-join receipt folds into the P0-#6 churn-proof ring session.
RESUME-HERE + launch tracker updated; next = P0-#3 relay automation.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant