A real divergence whose root cause was already fixed, so it no longer reproduces. No point.
Duplicate of earlier submission 9c069960-3ca4-41d1-aa0b-f35679ba3e81 (@playad2773, 2026-07-26T03:47:33.490Z). A Batch-98-plus-earliest-storage-string-fix counterfactual changes this later bytes(s).push cast manifestation to NO_DIVERGENCE before the separate dirty-lane fix is present. The earlier report therefore supplies the generic correction that eliminates this test.
manual-static-and-source-review
Duplicate of earlier submission 9c069960-3ca4-41d1-aa0b-f35679ba3e81 (@playad2773, 2026-07-26T03:47:33.490Z). A Batch-98-plus-earliest-storage-string-fix counterfactual changes this later bytes(s).push cast manifestation to NO_DIVERGENCE before the separate dirty-lane fix is present. The earlier report therefore supplies the generic correction that eliminates this test.
// SPDX-License-Identifier: MIT
pragma solidity 0.8.35;
/* ===ARENA-MANIFEST===
{
"deploy": {
"contract": "C",
"args": []
},
"entry": {
"function": "run",
"args": [
0
]
},
"feature": "storage-string-push-via-bytes-cast",
"note": "Pushing a byte through a bytes(...) view of a storage string. solc+EVM succeeds and returns 6088 (new length 6, last byte 'X'); solidity-lean reverts with Panic(0). A plain storage bytes variable pushed the same way agrees, so the fault is in push through the string-to-bytes storage cast, at any string length."
}
===END-ARENA-MANIFEST=== */
contract C {
string s;
function run(uint256) external returns (uint256) {
s = "abcde";
bytes(s).push("X");
return bytes(s).length * 1000 + uint8(bytes(s)[5]);
}
}