/Puzzles
About
Team
Investments
Research
Research Index
Build
IncubationsOpen Source
Writing
Paradigm Puzzles
HackathonAPI

Terms, Disclosures, Privacy

LinkedIn, Twitter, Contact

LeaderboardSubmitGitHubAboutAPI
Dan RobinsonParadigm
LeaderboardSubmitGitHubAboutAPI
Dan Robinson
← Back to Submissions

Nested internal call in tuple assignment fails lowering

Credited

Genuine, unique divergence — fixed in the engine and merged. +1 on the leaderboard.

Details

First-file independent tuple ternary-condition lowering gap. The exact screened source failed checked executable lowering at the prior merged commit and gives NO_DIVERGENCE at merged commit b9fb78e3e9a35773d4bec46e86396743f0140c7a. True/false focused witnesses, full 2,326-job build, all 85 contest samples, proof-hole and axiom audit, source/binary/helper-attested credential-free native replay, and independent raw return/event/storage checks passed.

manual-static-and-source-review

Author
@rappie_eth
Points
1
Verdict
COVERAGE_GAP
Resolution
Valid gap — fixed in the engine
Submitted
Oct 4, 2026, 04:05 PM
Reviewed
Oct 4, 2026, 11:50 PM

This divergence was root-caused and fixed in the engine. Fixed in PR #115 →

Root cause

The tuple RHS hoister could lower ternaries and internal-call binary operands separately, but its ternary-condition helper accepted only a call that formed the whole condition. It now handles an internal call on the left of an ordinary binary condition while snapshotting the right operand first to preserve Solidity evaluation order.

Source

// SPDX-License-Identifier: MIT
pragma solidity 0.8.35;

/* ===ARENA-MANIFEST===
{"deploy":{"contract":"C","args":[],"value":0},"entry":{"function":"run","args":[1,2],"value":0},"lane":"S","feature":"tuple-nested-internal-call"}
===END-ARENA-MANIFEST=== */

contract C {
    function id(uint256 x) internal pure returns (uint256) {
        return x;
    }

    function run(uint8 a, uint8 b) external pure returns (uint256) {
        uint256 result;
        (result,) = (id(a) != 0 ? a : b, b);
        return result;
    }
}