Quantum Twin
  1. Recorded runRestart demo
  2. Stage 1Choose repository
  3. Stage 2Discover cryptography
  4. Stage 3Review GPT-5.6 plan
  5. Stage 4Build two candidates
  6. Stage 5Verify both
  7. Stage 6Review the result
GUIDED SAMPLE DEMO

This browser demo shows Quantum Twin using a prepared Node.js repository. Run the local workspace to analyze your own code.

Run Quantum Twin Locally

BONUS: COORDINATED MULTI-REPOSITORY RUN

One migration across several repositories

Public evidence artifact — local file paths redacted. This committed artifact is not byte-identical to the ignored source report.

Decision
BRIDGE
Run ID
2026-07-20T03-19-58-791Z
Source report SHA-256
4b488bcc8eb69d8d149390e0a9cc82b3673edf2ba54146dacd6525efb0a9af16
Source report file SHA-256
0dc74cc47cf87f871ebd135497ed0251b9b4550d6581e66302bab8ab33d0f9f4
Presentation artifact SHA-256
aa2860bf82ddc95aa59220a368f8d44738cef8521504975ee57eb87251fd1c73

Builder 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

Two migrations enter.
External proof decides.

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.

Recorded Verified RunGenuine Recorded Codex RunNode.js 24 · native RSA
  1. 01 / SCANFind supported RSA signing and verification.
  2. 02 / COMPETEDirect and Bridge build from one immutable contract.
  3. 03 / PROVEExternal gates select—or refuse—twice-tested results.
02

START / INSPECT

Compare two genuine recorded scenarios

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.

03

RUN ON YOUR REPOSITORY

Hosted evidence. Local execution.

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 app
Open judge test guide
  1. Choose or import repository
  2. Analyze without execution
  3. Review contract and permissions
  4. Acknowledge isolated execution
  5. Start Migration Tournament
04

SCAN / CAPABILITIES

Supported evidence stays separate from blockers

Repositoryrelease-artifact-clilocal:release-artifact-cli
Resolved source commitf41e83967c5fe1dd43a4b1b4303fbcbc85cb4e47
Runtime shapeJavaScript · commonjs · npm
Supported scanner findings (2)
supportednative node:crypto RSA
lib/release-signer.cjs:4

signing · commonjs · confidence 0.98

"sha384"
supportednative node:crypto RSA
lib/release-signer.cjs:8

verification · commonjs · confidence 0.98

"sha384"
RSA · signing + verification

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.cjs
05

CODEX IMPLEMENTATION

Same commit. Same contract. Different strategy.

direct

Direct Cutover

gate_failed

ML-DSA-65 only. Lowest legacy exposure when compatibility permits.

18 passed3 failed

Failed hard gates
  • legacy compatibility (pass 1): frozen RSA consumer
  • legacy compatibility (pass 2): frozen RSA consumer
  • repeatability: complete external evaluator ran twice
Branch
candidate/direct
Codex thread
019f7b8d-a0a9-7fe2-9060-3e82620a6657
Commit
5420dbbb7c2beaf11b279ebfead7cf895a27fc2c
Generation
149440 ms
Changed lines
16
Repair
not needed
Diff SHA-256
04493ed05e95ad75597ac9c21f50e9c76b4719fdf8425c4f72cfc0ad1ecc86f6
Commands and exit evidence
CommandExitDuration
npm ci --ignore-scripts0419 ms
npm run typecheck0215 ms
npm test0307 ms
Measured result
RSA signatures
0
Envelope bytes
4424
Signing median
0.275 ms
Signing p95
1.459 ms
Verify median
0.107 ms
Verify p95
0.117 ms
Inspect full candidate diff
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 };
bridge

Compatibility Bridge

eligible

ML-DSA-65 plus declared RSA continuity for frozen consumers.

21 passed0 failed

Eligibility evidence

All recorded hard gates passed.

Branch
candidate/bridge
Codex thread
019f7b8d-a0de-7401-87c8-90821fee8dfb
Commit
09d09e0d42e1207f849ac6d7163555fe4185cc0d
Generation
104276 ms
Changed lines
17
Repair
not needed
Diff SHA-256
55fdc5f75d1337f52e927d9d4148be76970b1eb64e73ff9135e6175d192a0baa
Commands and exit evidence
CommandExitDuration
npm ci --ignore-scripts0386 ms
npm run typecheck0207 ms
npm test0300 ms
Measured result
RSA signatures
1
Envelope bytes
4777
Signing median
0.832 ms
Signing p95
1.544 ms
Verify median
0.116 ms
Verify p95
0.195 ms
Inspect full candidate diff
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 };
06

EXTERNAL EVIDENCE

GPT cannot override failed gates

DETERMINISTIC RESULTBRIDGE

Direct produced valid ML-DSA but failed the frozen RSA consumer twice. Bridge passed all required gates and was the only eligible candidate.

REPORT SHA-256077f8dfc267bb6f64fcec12b1919eefd6e0fb338e1f0cb6218e405301e93f9e9 Download selected report
direct18 passed · 3 failed

legacy compatibility (pass 1); legacy compatibility (pass 2); repeatability

bridge21 passed · 0 failed

All recorded hard gates passed.

Inspect all hard gates
Hard gatedirectbridge
installPASSexit 0 · 419 msPASSexit 0 · 386 ms
typecheckPASSexit 0 · 215 msPASSexit 0 · 207 ms
original testsPASSexit 0 · 307 msPASSexit 0 · 300 ms
baseline integrityPASSdeclared protected paths unchangedPASSdeclared protected paths unchanged
writable boundaryPASSlib/release-signer.cjsPASSlib/release-signer.cjs
secret hygienePASScandidate diff scannedPASScandidate diff scanned
dependency policyPASSforbidPASSforbid
approved native APIPASSnative node:crypto ML-DSA with context bindingPASSnative node:crypto ML-DSA with context binding
evaluator integrity (pass 1)PASScopied external harness hash unchangedPASScopied external harness hash unchanged
ml-dsa verification (pass 1)PASSrelease signature verifiesPASSrelease signature verifies
tamper rejection (pass 1)PASSchanged artifact rejectedPASSchanged artifact rejected
wrong-key rejection (pass 1)PASSunrelated key rejectedPASSunrelated key rejected
legacy compatibility (pass 1)FAILfrozen RSA consumerPASSfrozen RSA consumer
domain separation (pass 1)PASSwrong context rejectedPASSwrong context rejected
evaluator integrity (pass 2)PASScopied external harness hash unchangedPASScopied external harness hash unchanged
ml-dsa verification (pass 2)PASSrelease signature verifiesPASSrelease signature verifies
tamper rejection (pass 2)PASSchanged artifact rejectedPASSchanged artifact rejected
wrong-key rejection (pass 2)PASSunrelated key rejectedPASSunrelated key rejected
legacy compatibility (pass 2)FAILfrozen RSA consumerPASSfrozen RSA consumer
domain separation (pass 2)PASSwrong context rejectedPASSwrong context rejected
repeatabilityFAILcomplete external evaluator ran twicePASScomplete external evaluator ran twice
Modelgpt-5.6-sol
Codex SDK0.144.6
Node / platformv24.18.0 · win32 10.0.26200 x64
Baselinee49dc4eb21b2372e79ab2082652fabe5f5d51aba
Compatibility harnessdcd8d446bc8f9829cd53691a7ec4e7a8d871e8799ba4907584b5958364ff5ef7
Completed2026-07-19T18:07:38.773Z
Repository and immutable contract
Repository
release-artifact-cli
Source identity
local:release-artifact-cli
Resolved source commit
f41e83967c5fe1dd43a4b1b4303fbcbc85cb4e47
Module format
commonjs
Package manager
npm
Config SHA-256
da8ec4939d7852225f7c69d4f0b347e1f97ee7fea9d51931d0f9059dbd525054
Baseline manifest SHA-256
240a4356f13485a535b36fb42757da306a751ea468c1b9b0fd61cdcddb7578b5
Compatibility
required
Contract version
1
Target
ml-dsa-65
Declared context
quantum-twin:release-artifact:v1
Writable paths
lib/release-signer.cjs
Protected paths
package.json, package-lock.json, test/release-signer.test.cjs, quantum-twin.config.json, quantum-twin.compatibility.ts
Dependency policy
forbid
External evidence and provenance
Model
gpt-5.6-sol
Codex SDK
0.144.6
Node
v24.18.0
Platform
win32 10.0.26200 x64
Evaluator SHA-256
dcd8d446bc8f9829cd53691a7ec4e7a8d871e8799ba4907584b5958364ff5ef7
Report SHA-256
077f8dfc267bb6f64fcec12b1919eefd6e0fb338e1f0cb6218e405301e93f9e9
Started
2026-07-19T18:04:56.297Z
Completed
2026-07-19T18:07:38.773Z

Gate names identify evaluator pass 1 and pass 2. Candidate cards expose commands, durations, diff hashes, measurements, and full diffs.

GPT explanation and limitations

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.

Why selected

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.

Limitations

  • The bridge retains RSA signing solely for required legacy compatibility, so this is not a complete RSA removal.
  • The bridge has a larger measured envelope than Direct Cutover: 4,777 bytes versus 4,424 bytes.
  • The bridge's measured signing latency is higher than Direct Cutover's: median 0.8323 ms versus 0.2748 ms; these measurements do not override gate eligibility.
  • The supplied evidence does not establish the legacy RSA padding mode, key size, key provenance, storage, or a broader public API boundary.
  • Results apply to commit f41e83967c5fe1dd43a4b1b4303fbcbc85cb4e47, the declared configuration and hashes, Node v24.18.0 on win32 10.0.26200 x64, and the frozen evaluator used for this run.
07

WHY THIS IS DIFFERENT

One patch is not a migration decision

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.

Traditional scanner

Finds crypto locations but does not implement and independently compare migrations.

One coding-agent patch

Creates one plausible implementation but does not prove it against an immutable external compatibility contract.

Quantum Twin

Creates isolated competing implementations, evaluates both outside their worktrees, deterministically disqualifies failures, preserves provenance, changes results with constraints, and refuses when nothing qualifies.

08

NO SAFE WINNER

Refusal is a product state.

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.

09

WHO THIS IS FOR

Maintainers with compatibility they cannot wish away.

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.

10

WHY THIS MATTERS NOW

Migration needs implementation evidence

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

Constrained by repository contract

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.