lib/release-signer.cjs:4signing · commonjs · confidence 0.98
"sha384"BONUS: COORDINATED MULTI-REPOSITORY RUN
Public evidence artifact — local file paths redacted. This committed artifact is not byte-identical to the ignored source report.
4b488bcc8eb69d8d149390e0a9cc82b3673edf2ba54146dacd6525efb0a9af160dc74cc47cf87f871ebd135497ed0251b9b4550d6581e66302bab8ab33d0f9f4aa2860bf82ddc95aa59220a368f8d44738cef8521504975ee57eb87251fd1c73Builder A changed both the signing and verifying code but failed the frozen-client check. Builder B changed both repositories, passed two clean end-to-end runs and rollback, and was selected automatically.
EVIDENCE-BACKED POST-QUANTUM MIGRATION
Quantum Twin builds two independent migrations with Codex, tests both with the same repeatable checks, and lets the evidence choose the winner — or refuse them both.
START / INSPECT
Explore genuine recorded runs here. No credentials required. Paste and migrate public repositories in the Local Repository Lab. Hosted mode displays genuine immutable reports and never executes third-party code.
Same repository. Same two strategies. Direct fails frozen compatibility, so Bridge is the only eligible candidate.
Run 2026-07-19T18-04-56-297Z · source local:release-artifact-cli · commit f41e83967c5fe1dd43a4b1b4303fbcbc85cb4e47
Hosted mode never invokes Codex, Git, worktrees, repository scripts, imports, or runtime writes.
RUN ON YOUR REPOSITORY
Supported contract: trusted local Node.js 24 TypeScript/JavaScript, native node:crypto RSA signing/verification, npm or pnpm, explicit writable/protected paths, and a declared compatibility harness.
npx --yes pnpm@11.9.0 install --frozen-lockfile npx --yes pnpm@11.9.0 appOpen judge test guide
SCAN / CAPABILITIES
local:release-artifact-clif41e83967c5fe1dd43a4b1b4303fbcbc85cb4e47lib/release-signer.cjs:4signing · commonjs · confidence 0.98
"sha384"lib/release-signer.cjs:8verification · commonjs · confidence 0.98
"sha384"Line 4 signs bytes with crypto.sign("sha384", bytes, keys.rsaPrivateKey) Line 8 verifies bytes with crypto.verify("sha384", bytes, keys.rsaPublicKey, Buffer.from(envelope.rsa, "base64")) The evidence establishes native node:crypto RSA signing and verification using SHA-384, but does not establish the RSA padding mode, key size, or key provenance
lib/release-signer.cjsCODEX IMPLEMENTATION
ML-DSA-65 only. Lowest legacy exposure when compatibility permits.
18 passed3 failed
| Command | Exit | Duration |
|---|---|---|
npm ci --ignore-scripts | 0 | 419 ms |
npm run typecheck | 0 | 215 ms |
npm test | 0 | 307 ms |
diff --git a/lib/release-signer.cjs b/lib/release-signer.cjs
index 9fa4aeb..8c28dc2 100644
--- a/lib/release-signer.cjs
+++ b/lib/release-signer.cjs
@@ -1,11 +1,13 @@
const crypto = require("node:crypto");
-function stampArtifact(bytes, keys, _context) {
- return { rsa: crypto.sign("sha384", bytes, keys.rsaPrivateKey).toString("base64") };
-}
-
-function checkArtifact(bytes, envelope, keys, _context) {
- return crypto.verify("sha384", bytes, keys.rsaPublicKey, Buffer.from(envelope.rsa, "base64"));
-}
+function stampArtifact(bytes, keys, context) {
+ const key = { key: keys.mlDsaPrivateKey, context: Buffer.from(context) };
+ return { mlDsa: crypto.sign(null, bytes, key).toString("base64") };
+}
+
+function checkArtifact(bytes, envelope, keys, context) {
+ const key = { key: keys.mlDsaPublicKey, context: Buffer.from(context) };
+ return crypto.verify(null, bytes, key, Buffer.from(envelope.mlDsa, "base64"));
+}
module.exports = { stampArtifact, checkArtifact };
ML-DSA-65 plus declared RSA continuity for frozen consumers.
21 passed0 failed
All recorded hard gates passed.
| Command | Exit | Duration |
|---|---|---|
npm ci --ignore-scripts | 0 | 386 ms |
npm run typecheck | 0 | 207 ms |
npm test | 0 | 300 ms |
diff --git a/lib/release-signer.cjs b/lib/release-signer.cjs
index 9fa4aeb..adc6e9e 100644
--- a/lib/release-signer.cjs
+++ b/lib/release-signer.cjs
@@ -1,11 +1,14 @@
const crypto = require("node:crypto");
-function stampArtifact(bytes, keys, _context) {
- return { rsa: crypto.sign("sha384", bytes, keys.rsaPrivateKey).toString("base64") };
-}
-
-function checkArtifact(bytes, envelope, keys, _context) {
- return crypto.verify("sha384", bytes, keys.rsaPublicKey, Buffer.from(envelope.rsa, "base64"));
-}
+function stampArtifact(bytes, keys, context) {
+ return {
+ mlDsa: crypto.sign(null, bytes, { key: keys.mlDsaPrivateKey, context: Buffer.from(context) }).toString("base64"),
+ rsa: crypto.sign("sha384", bytes, keys.rsaPrivateKey).toString("base64"),
+ };
+}
+
+function checkArtifact(bytes, envelope, keys, context) {
+ return crypto.verify(null, bytes, { key: keys.mlDsaPublicKey, context: Buffer.from(context) }, Buffer.from(envelope.mlDsa, "base64"));
+}
module.exports = { stampArtifact, checkArtifact };
EXTERNAL EVIDENCE
Direct produced valid ML-DSA but failed the frozen RSA consumer twice. Bridge passed all required gates and was the only eligible candidate.
077f8dfc267bb6f64fcec12b1919eefd6e0fb338e1f0cb6218e405301e93f9e9 Download selected reportlegacy compatibility (pass 1); legacy compatibility (pass 2); repeatability
All recorded hard gates passed.
| Hard gate | direct | bridge |
|---|---|---|
| install | PASSexit 0 · 419 ms | PASSexit 0 · 386 ms |
| typecheck | PASSexit 0 · 215 ms | PASSexit 0 · 207 ms |
| original tests | PASSexit 0 · 307 ms | PASSexit 0 · 300 ms |
| baseline integrity | PASSdeclared protected paths unchanged | PASSdeclared protected paths unchanged |
| writable boundary | PASSlib/release-signer.cjs | PASSlib/release-signer.cjs |
| secret hygiene | PASScandidate diff scanned | PASScandidate diff scanned |
| dependency policy | PASSforbid | PASSforbid |
| approved native API | PASSnative node:crypto ML-DSA with context binding | PASSnative node:crypto ML-DSA with context binding |
| evaluator integrity (pass 1) | PASScopied external harness hash unchanged | PASScopied external harness hash unchanged |
| ml-dsa verification (pass 1) | PASSrelease signature verifies | PASSrelease signature verifies |
| tamper rejection (pass 1) | PASSchanged artifact rejected | PASSchanged artifact rejected |
| wrong-key rejection (pass 1) | PASSunrelated key rejected | PASSunrelated key rejected |
| legacy compatibility (pass 1) | FAILfrozen RSA consumer | PASSfrozen RSA consumer |
| domain separation (pass 1) | PASSwrong context rejected | PASSwrong context rejected |
| evaluator integrity (pass 2) | PASScopied external harness hash unchanged | PASScopied external harness hash unchanged |
| ml-dsa verification (pass 2) | PASSrelease signature verifies | PASSrelease signature verifies |
| tamper rejection (pass 2) | PASSchanged artifact rejected | PASSchanged artifact rejected |
| wrong-key rejection (pass 2) | PASSunrelated key rejected | PASSunrelated key rejected |
| legacy compatibility (pass 2) | FAILfrozen RSA consumer | PASSfrozen RSA consumer |
| domain separation (pass 2) | PASSwrong context rejected | PASSwrong context rejected |
| repeatability | FAILcomplete external evaluator ran twice | PASScomplete external evaluator ran twice |
gpt-5.6-sol0.144.6v24.18.0 · win32 10.0.26200 x64e49dc4eb21b2372e79ab2082652fabe5f5d51abadcd8d446bc8f9829cd53691a7ec4e7a8d871e8799ba4907584b5958364ff5ef72026-07-19T18:07:38.773ZGate names identify evaluator pass 1 and pass 2. Candidate cards expose commands, durations, diff hashes, measurements, and full diffs.
GPT explanation only. Deterministic TypeScript selected result before this text was produced.
The immutable result selects the Compatibility Bridge candidate. It adds context-bound native node:crypto ML-DSA-65 signing and verification while retaining an RSA signature in the envelope for the frozen legacy consumer. The bridge was eligible and passed every hard gate in both evaluator runs, including ML-DSA verification, tamper rejection, wrong-key rejection, legacy compatibility, domain separation, evaluator integrity, and repeatability. Its measured envelope size was 4,777 bytes; signing median/p95 was 0.8323/1.5439 ms; verification median/p95 was 0.1160/0.1946 ms; and it emitted one RSA compatibility signature.
Selection was determined by hard-gate eligibility, not by GPT judgment or performance preference. The Direct Cutover passed ML-DSA security checks but failed legacy compatibility in both evaluator passes because it removed the RSA envelope field required by the frozen consumer; it was therefore gate_failed and non-repeatable as a complete successful evaluation. The bridge preserved that RSA field, passed legacy compatibility twice, and was the only eligible candidate. Accordingly, selectedCandidate remains bridge, with no changes to selection, gates, or measurements.
WHY THIS IS DIFFERENT
One generated patch is not a migration decision. Quantum Twin builds two, tests both the same way, and keeps the proof behind whichever one it picks.
Finds crypto locations but does not implement and independently compare migrations.
Creates one plausible implementation but does not prove it against an immutable external compatibility contract.
Creates isolated competing implementations, evaluates both outside their worktrees, deterministically disqualifies failures, preserves provenance, changes results with constraints, and refuses when nothing qualifies.
NO SAFE WINNER
If every candidate fails a hard gate, Quantum Twin refuses to select a migration.
GPT-5.6 cannot turn a failed candidate into a winner. Deterministic TypeScript owns this tested behavior.
WHO THIS IS FOR
Primary users: application-security engineers, platform-security teams, and maintainers of Node services whose RSA-signed data is consumed by deployed or frozen verifiers.
A maintainer needs ML-DSA-65 without silently breaking an existing verifier. A scanner finds RSA. A coding agent creates a patch. Quantum Twin compares competing implementations against the frozen compatibility contract and preserves proof of the decision.
WHY THIS MATTERS NOW
NIST standardized the first post-quantum cryptography algorithms in 2024 and says organizations should begin migration. NCCoE separates cryptographic discovery from interoperability testing. CISA, NSA, and NIST urge early migration planning and inventory.
Discovery identifies where cryptography exists. Quantum Twin adds concrete implementation comparison after discovery. It does not claim formal verification, certification, production approval, or whole-system quantum safety.
IMPLEMENTED
Node.js 24 TypeScript/JavaScript repositories using native node:crypto RSA sign/verify paths, with npm or pnpm and a declared compatibility harness.
DISCOVERY ONLY
TLS/X.509, JWT, Cloud KMS, HSM/PKCS#11, third-party cryptography, Java, Python, .NET, Go, and Rust produce evidence and adapter requirements—never patches.
VERIFIED MEANS
Recorded engineering-contract gates passed in isolated evaluation. Not formal verification, FIPS module certification, side-channel proof, cryptographic guarantee, production approval, or proof for an entire system.