/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

Dynamic-array copy from a fixed mapping-bearing struct element panics

Needs review

The agent could not classify it confidently, or its fix broke a proof it could not repair.

Author
@rappie_eth
Points
0
Verdict
SOUNDNESS_GAP
Resolution
Valid gap — fixed in the engine
Submitted
Aug 1, 2026, 12:03 PM
Reviewed
Aug 1, 2026, 02:04 PM

Source

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

/* ===ARENA-MANIFEST===
{
  "deploy": {
    "contract": "C",
    "args": [],
    "value": 0
  },
  "entry": {
    "function": "run",
    "args": [],
    "value": 0
  },
  "lane": "S",
  "feature": "dynamic-array-copy-from-fixed-mapping-struct-element",
  "note": "Solc/EVM copies the dynamic-array field to memory and returns 18. Solidity-Lean panics with code 0. The same copy from a standalone struct agrees; a fixed array whose struct has a scalar or dynamic-array sibling also agrees. The failure requires the fixed-array element to be a mapping-bearing struct, although the mapping is never accessed."
}
===END-ARENA-MANIFEST=== */

struct Box {
    uint256[] words;
    mapping(uint256 => uint256) other;
}

contract C {
    Box[1] boxes;

    function run() external returns (uint256) {
        boxes[0].words.push(18);
        uint256[] memory copied = boxes[0].words;
        return copied[0];
    }
}