docs: confirm U64E comb 48 MHz point at n=6 — 18.39 s median - #64
Merged
Conversation
Rerun of the flagged single-point measurement from the 2026-07-25 U64E sweep: comb profile, 48 MHz only, n=6 per positive vector (20 runs total, all correctness-PASS). Median 18.39 s, spread 18.31-18.45 s (±0.4%) across all three positive vectors — the U64E number is solid, so the +12%-vs-C64U delta at 48 MHz is not U64E measurement noise. Residual uncertainty moves to the C64U's 16.5 s (itself n=2). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2 tasks
This was referenced Aug 13, 2026
Merged
JC-000 added a commit
that referenced
this pull request
Aug 13, 2026
…roup tools/test_x25519.py reported "RESULTS: 71/71 passed, 0/71 failed" while skipping both RFC 7748 scalarmult vectors. Those two are the only end-to-end x25519_scalarmult coverage in the file — everything else in the 71 is field arithmetic — so the default invocation certified a clean pass without ever multiplying a scalar. Skipped groups were never added to test_groups, so they left the denominator entirely and the counters could not express the gap. Same skip-as-pass shape as audit finding F3 (credit: Lane C confirmed the mechanism independently). The gate's justification was a "~100 min each" comment. Measured under VICE warp on the in-tree ip65 build: full suite with both vectors 37.9 s full suite without them 4.8 s ~16.5 s per vector — the comment was off by a factor of ~360, and the gate was buying 33 seconds while hiding the only test that matters. So both halves: - The vectors now run BY DEFAULT. `--fast` skips them; `--slow` is kept as an accepted no-op so existing invocations don't break. - Any skipped group is recorded and named in the verdict: RESULTS: 71/71 passed, 0/71 failed -- 2 group(s) SKIPPED: \ x25519 RFC 7748 vector 1, x25519 RFC 7748 vector 2 WARNING: end-to-end x25519_scalarmult coverage did NOT run; \ this run does not certify X25519. An unqualified clean pass is no longer printable over a group that did not run. Exit code is unchanged (0 iff nothing failed): unlike F3's missing-label case, `--fast` is an explicit operator choice, so it is not an error — but it can no longer be a silent one. run_tests now returns (passed, failed, skipped_groups). tools/run_all_tests.py is the only in-tree importer; it unpacks the third value and raises if it is ever non-empty, so a future gate cannot quietly drop coverage from the aggregate verdict. That run gains the vectors too: x25519 72/72 -> 73/73, aggregate 255/255, +34.8 s for the suite. Also corrected in passing: the vectors were labelled "RFC 7748 Section 6.1" but are the §5.2 scalarmult vectors (§6.1 is the Alice/Bob DH pair), and U_2 ends 0x93 — bit 255 set — which makes vector 2 the decodeUCoordinate MSB regression test that catches upstream c64-x25519 #64, the bug live in our pinned libs/x25519 v0.6.0. Noted at the vectors so nobody drops it as redundant. Verified: default -> 73/73, both vectors PASS, 38.2 s --fast -> 71/71 + both groups named + warning --slow -> 73/73 (back-compat no-op) run_all_tests.py --skip-slow -> x25519 73/73, TOTAL 255/255 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Follow-up to #63, resolving the flagged caveat on the comb-profile 48 MHz point. Reran
bench_ecdsa_u64e.pyon the U64E (comb build at HEAD, boot-at-48,ECDSA_REPEATS=6): 20 runs, all correctness-PASS.Also: P-384 doc-drift correction (second commit)
While closing stale issues #32/#45 it emerged that CLAUDE.md's three P-384 references still described the v0.3.0-era failure (unresolved
ec_base384_x/yat link). Verified at the v0.6.0 pin: bothmake p384-overlayandmake BACKEND=uci USE_OVERLAY_P384_EMBED=1now fail earlier, at thear65staging step intools/integration/build_nistcurves_p384.sh(upstream layout drift). The Crypto ABI paragraph, Known-issues entry, and P-384 wall-clock section now describe the current failure chain, record the #32/#45 closures, and mark the P-384 wall-clock as unmeasurable until the build is fixed.Test plan
🤖 Generated with Claude Code