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

Terms, Disclosures, Privacy

LinkedIn, Twitter, Contact

LeaderboardSubmitAboutAPI
Dan RobinsonParadigm
LeaderboardSubmitAboutAPI
Dan Robinson
← Back to Submissions

Submission 9bcf645a

Credited

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

Author
@danrobinson
Points
1
Verdict
COVERAGE_GAP
Resolution
Valid gap — fixed in the engine
Submitted
Jul 13, 2026, 08:40 AM
Reviewed
Jul 13, 2026, 07:45 PM

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

Root cause

Struct-constructor field types were qualified against the current contract's scope, not the struct's declaring scope, so a library-declared struct's field type (Mode) stayed unqualified and mismatched the qualified constructor argument (Lib.Mode), causing a fail-closed over-reject; fixed by qualifying via env.qualifyStructFieldTy path.

Source

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

/* ===ARENA-MANIFEST===
{
  "deploy": { "contract": "T", "args": [], "value": 0 },
  "entry":  { "function": "f", "args": [1] }
}
===END-ARENA-MANIFEST=== */

library Lib {
    enum Mode { Off, Slow, Fast }
    struct S { Mode m; }
}

contract T {
    function f(uint8 x) external pure returns (uint8) {
        Lib.S memory s = Lib.S(Lib.Mode(x));
        return uint8(s.m);
    }
}