Skip to content

build: transfer native CI workloads and correct RISC-V ECDSA selection - #110

Merged
loadingalias merged 6 commits into
mainfrom
ci-cross-ibm
Sep 12, 2026
Merged

build: transfer native CI workloads and correct RISC-V ECDSA selection#110
loadingalias merged 6 commits into
mainfrom
ci-cross-ibm

Conversation

@loadingalias

Copy link
Copy Markdown
Owner

Cross-build the IBM and RISC-V CI workloads and source-bound runner tools on x86-64, then execute the transferred workloads on native hardware. Keep native CI in a fail-fast matrix and qualify Apple Silicon locally through mandatory Git hooks.

Fix LLVM's RISC-V ECDSA comb-table optimization by keeping the selection mask opaque. The original binary conditionally loaded coordinates based on the secret digit; the corrected measured binary scans the table with masked selection. Add retained diagnostic replay support and make CT preparation runners resolvable before named definitions reach the default branch.

Validation:

  • just check, just ct-test, just test-scripts, and workflow validation passed.
  • Mandatory local Apple Silicon qualification passed: complete native and portable release suites, doctests, and RSA assembly checks.
  • Full RISC-V Constant-Time run https://github.com/loadingalias/rscrypto/actions/runs/34716684806 passed all 94 required cases with zero blocking findings on head 9a10ef364c398241a28ea2b24360f43e056943f4.
  • Retained full-report artifact SHA-256: 73f33d98827d21a309dac11d9e26f65a93d4acd303ff8a8aa3c2446f9aa59c05.

This merges the validated baseline for code review. It does not bump versions, create a tag, publish, or claim full release qualification across every architecture. RISC-V BINSEC remains not applicable under the existing manifest policy.

Centralize CI runner shapes and separate cross-built benchmark preparation from native measurement. Measure x86-64 on Intel and AMD, retain transfer provenance, and bound benchmark invocations to 90 minutes.

Require physical Apple Silicon qualification through local commit hooks in place of hosted macOS CI, and configure Markdown linting.
Verify the original source and prepared binary, then retain three full-sample measurements on one pinned CPU with host snapshots. Keep every timing result and preserve failure status across repetitions; this diagnostic mode does not replace full CT qualification.
Keep the comb selection mask opaque to prevent LLVM from replacing the table scan with secret-dependent conditional loads. Add a single-case candidate diagnostic that preserves the original sampling budget and retains failures.
RunsOn resolves public-repository named runners from the default branch. Specify planning and cross-build shapes directly so branch diagnostics do not require those names to exist on main.
@loadingalias
loadingalias merged commit 9a10ef3 into main Sep 12, 2026
8 of 13 checks passed
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