agent couldn't reproduce the failure - CI runs on arm64 and the agent's sandbox is x86
Fixes unreproducible CI failures caused by architecture mismatch between the agent's x86 sandbox and arm64 CI runners. Use when a test fails on CI but passes in the agent's sandbox and the platforms differ. Covers matching the target architecture (emulation or native runners), and treating arch-specific failures as real. Not for failures that reproduce on the same architecture.
TL;DR
CI runs on arm64 and the agent's sandbox is x86, so the failure never reproduces locally. Reproduce on the same architecture: run the test under arm64 emulation (qemu) or on a native arm64 runner. Architecture-specific failures (SIMD, alignment, native modules) are real bugs, not flakes.
The symptom
agent couldn't reproduce the failure - CI runs on arm64 and the agent's sandbox is x86Steps
1. Confirm the architecture gap
Check the CI runner architecture (uname -m on the CI job) and the agent sandbox architecture. arm64 CI vs x86 sandbox confirms the mismatch. Expected: CI reports aarch64/arm64; the sandbox reports x86_64.
2. Reproduce under emulation
Run the failing test under qemu-aarch64 or in an arm64 container image. Expect it to be slower; that is fine for a repro. Expected: The CI failure reproduces under emulation.
3. Fix the arch-specific root cause
Common culprits: native modules built for the wrong arch, SIMD intrinsics, alignment assumptions, or hardcoded page sizes. Fix the code, not the test. Expected: The test passes under emulation and on native arm64.
4. Give the agent an arch-matched lane
Add an arm64 reproduction lane to the healing setup (emulated or native) so the agent never again declares 'cannot reproduce' on an arch-mismatched sandbox. Expected: Future arm64 failures reproduce on the first try.
When to use
- CI fails but the agent's sandbox passes
- CI runners and the sandbox are different CPU architectures
- The failure involves native code, SIMD, or alignment
When not to use
- Both environments are the same arch (look for env or data differences)
- The failure is clearly environmental (DNS, credentials)
- Emulation is unavailable and the failure is urgent (use a native arm64 CI job to iterate)
Why it happens
x86 and arm64 differ in SIMD instruction sets, memory alignment behavior, and native module ABIs. Code that is correct on one can fault on the other. An x86 sandbox physically cannot execute the arm64 code path, so 'cannot reproduce' is an environment statement, not a verdict on the bug.
Edge cases
- Rosetta-style translation on macOS: translated x86 can still hide arm64-only bugs; test native.
- Docker multi-arch images: make sure the agent pulls the arm64 variant, not the x86 one.
- Page-size differences (4k vs 16k/64k): a classic arm64-only failure mode in mmap-heavy code.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_q8t6VmIp5ykswTzNggqvmQ