[GH-ISSUE #2780] test(apple): same-named dyld CLI slice fixture is rejected on x64 #995

Closed
opened 2026-10-15 18:30:12 +00:00 by bsakaguchi · 0 comments
Owner

Originally created by @N0zoM1z0 on GitHub (Oct 13, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/2780

Originally assigned to: @N0zoM1z0 on GitHub.

Problem

The CLI regression reports each same-named slice's own embedded dyld environment constructs a FAT executable containing only arm64e and arm64e.x1 slices. On an x64 host, the public CLI correctly rejects that artifact before reaching dylib tracing: FAT binary has no host-compatible x64 architecture.

The intended regression checks that slices sharing an architecture display name retain their own dyld environment. The fixture currently prevents that oracle from executing on the portable x64 CI runner.

Reproduction and attribution

  • Hosted CI run 38384977454, documentation-only head debffc44387dda98196aedd1ac8566928499dd96, shard1: 1 failed / 1,846 passed / 18 skipped. All other five shards passed.

  • Clean main 747e7299141cec0b03774c427f579889d5088d20, Linux x64, Node24.18.0 / npm11.16.0 / Vitest5.0.3:

    npm run test:focused -- tests/boundary/cli/dylibResolutionCli.test.ts
    

    Result: 10 passed / 1 failed, exit1; identical host-compatible-architecture rejection.

  • The case was introduced in upstream 52d4ce6ce (#2733). The skill-only feature diff contains no production, fixture or test changes. Latest inspected main fa0a9b2d328a07d8ec2924dc224d51c620981dcc still has the same case without a fixture correction.

Required correction

Add a neutral x86_64 slice through the existing fatImage/machoImage fixture producer. Retain both ARM slices and both original settings scenarios: absent first/later-present, and distinct values in both slices. Assert the full architecture sequence, including both same-named ARM roots and the additional neutral root; preserve exact per-slice findings.

Do not weaken artifact admission, skip x64 CI, replace the ARM collision with distinct names, or delete the finding assertions. The extra slice permits admission without manufacturing an environment finding or changing runtime behavior.

Validation

Run the actual compiled CLI file, the dylib producer/consumer tests and existing ARM/FAT architecture-selection regressions. Introduce a temporary producer mutation that selects the first same-named slice again: the corrected CLI case must still fail for the lost/misattributed environment setting. Restore production source and rebuild afterward. Actual ARM or Windows host execution must be distinguished from parser-level architecture evidence.

This is fixture drift and a blocked regression oracle, not evidence that production should admit an architecture absent from a FAT artifact.

Resolution

Main independently merged the equivalent neutral-x64-slice correction in PR#2755 / commitfb28ec153. The locally prepared correction in the skill branch passed140cases and a controlled first-same-named-slice regression was caught by the retained findings assertion. Its redundant test commit was dropped on rebase; #2692 again contains only its four skill/documentation files and does not claim to deliver the upstream test repair. The independently reproduced baseline failure and raw records are retained.

Originally created by @N0zoM1z0 on GitHub (Oct 13, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/2780 Originally assigned to: @N0zoM1z0 on GitHub. ## Problem The CLI regression `reports each same-named slice's own embedded dyld environment` constructs a FAT executable containing only `arm64e` and `arm64e.x1` slices. On an x64 host, the public CLI correctly rejects that artifact before reaching dylib tracing: `FAT binary has no host-compatible x64 architecture`. The intended regression checks that slices sharing an architecture display name retain their own dyld environment. The fixture currently prevents that oracle from executing on the portable x64 CI runner. ## Reproduction and attribution - Hosted [CI run 38384977454](https://github.com/morluto/rea/actions/runs/38384977454), documentation-only head `debffc44387dda98196aedd1ac8566928499dd96`, shard1: 1 failed / 1,846 passed / 18 skipped. All other five shards passed. - Clean main `747e7299141cec0b03774c427f579889d5088d20`, Linux x64, Node24.18.0 / npm11.16.0 / Vitest5.0.3: ```sh npm run test:focused -- tests/boundary/cli/dylibResolutionCli.test.ts ``` Result: **10 passed / 1 failed**, exit1; identical host-compatible-architecture rejection. - The case was introduced in upstream `52d4ce6ce` (#2733). The skill-only feature diff contains no production, fixture or test changes. Latest inspected main `fa0a9b2d328a07d8ec2924dc224d51c620981dcc` still has the same case without a fixture correction. ## Required correction Add a neutral x86_64 slice through the existing `fatImage`/`machoImage` fixture producer. Retain both ARM slices and both original settings scenarios: absent first/later-present, and distinct values in both slices. Assert the full architecture sequence, including both same-named ARM roots and the additional neutral root; preserve exact per-slice findings. Do not weaken artifact admission, skip x64 CI, replace the ARM collision with distinct names, or delete the finding assertions. The extra slice permits admission without manufacturing an environment finding or changing runtime behavior. ## Validation Run the actual compiled CLI file, the dylib producer/consumer tests and existing ARM/FAT architecture-selection regressions. Introduce a temporary producer mutation that selects the first same-named slice again: the corrected CLI case must still fail for the lost/misattributed environment setting. Restore production source and rebuild afterward. Actual ARM or Windows host execution must be distinguished from parser-level architecture evidence. This is fixture drift and a blocked regression oracle, not evidence that production should admit an architecture absent from a FAT artifact. ## Resolution Main independently merged the equivalent neutral-x64-slice correction in PR#2755 / commitfb28ec153. The locally prepared correction in the skill branch passed140cases and a controlled first-same-named-slice regression was caught by the retained findings assertion. Its redundant test commit was dropped on rebase; #2692 again contains only its four skill/documentation files and does not claim to deliver the upstream test repair. The independently reproduced baseline failure and raw records are retained.
bsakaguchi 2026-10-15 18:30:12 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#995
No description provided.