docs(test-harness): record tester disable reasons; fix SSH submodule URLs and enable fixed-term-loan - #667
Draft
nebasuke wants to merge 6 commits into
Draft
docs(test-harness): record tester disable reasons; fix SSH submodule URLs and enable fixed-term-loan#667nebasuke wants to merge 6 commits into
nebasuke wants to merge 6 commits into
Conversation
Project::try_from_solidity_output cloned every contract's parsed legacy assembly into the translation path and retained the original even when evm.legacyAssembly was not requested, and from_contract cloned the nested runtime code before stripping it from the deploy assembly. Move the assembly into translation by value, clone it only when the output selects evm.legacyAssembly, and replace the clone-then-strip pair with Assembly::take_runtime_code. Output is byte-identical on the Graph Horizon legacy and via-IR replays. The horizon legacy RSS peak is unchanged (9.6 GB): it is produced inside solidity_compile while solc builds the standard JSON output, before solx parses a single byte of it.
solc now emits evm.legacyAssembly as a compact JSON string (see NomicFoundation/solx-solidity#174), so its response object no longer accumulates every contract's assembly tree until the final dump. materialize unwraps the string form; the plain object form stays accepted. Graph Horizon legacy replay: main-process peak RSS 9.56 GB -> 3.89 GB, wall time ~48 s -> ~33 s, output byte-identical.
Pins the submodule to the tip of NomicFoundation/solx-solidity#174. To be re-pinned to the merged 0.8.34 commit before this PR lands; until then this PR hard-requires that branch (older libsolc still emits the object form, which materialize also accepts, but the memory win only exists with the string emission).
NomicFoundation/solx-solidity#174 landed as a squash whose tree is identical to the previously pinned branch tip, so built artifacts are unchanged; the gitlink now points at a commit reachable from 0.8.34.
The four undocumented 'disabled = true' entries date back to the configs' introduction (#110/#175) with no reason recorded anywhere. Determined each empirically by running the harness prep and build locally with solx 0.1.7: - ens-contracts: the fork lacks solx wiring and only enables solc 0.8.17/0.8.26, so the harness's >=0.8.34 pragma pin fails HHE909; the pinned lockfile also references @ensdomains/buffer@0.1.1, unpublished from npm. - olympus: the fork lacks solx wiring; solc pinned to 0.8.15. - synthetix: written in Solidity v0.4/v0.5, below the solx version floor (same class as lido-core). - fixed-term-loan (Foundry): a nested submodule pins an SSH URL, so the unauthenticated CI clone fails. With an https insteadOf rewrite it compiles with solx and passes all 270 tests - a harness-side rewrite would let it be enabled.
… fixed-term-loan Some projects pin submodules to git@github.com: URLs, which the harness's unauthenticated CI clone cannot fetch. Pass an insteadOf rewrite via -c on the submodule-touching git commands; per-process config propagates to nested submodule clones through GIT_CONFIG_PARAMETERS, verified against the exact failing case (fixed-term-loan -> maple-proxy-factory -> contract-test-utils, --depth 1 --recursive). That was fixed-term-loan's only blocker: with the rewrite in place it compiles with solx 0.1.7 on both codegens without the memory-safe-asm escape hatch and passes all 270 tests on both, so enable it.
nebasuke
force-pushed
the
tester-disable-reasons
branch
from
August 19, 2026 15:07
87191bb to
ccc21af
Compare
Coverage Summary
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Claude Summary
Record tester disable reasons; fix SSH submodule URLs and enable fixed-term-loan
The four undocumented
disabled = trueentries in the harness configs date back to theconfigs' introduction (#110/#175) with no reason recorded anywhere — in git history, PR
bodies, or comments. This PR determines each reason empirically and records it, and fixes
the one that turned out not to be a solx limitation at all.
Disable reasons (first commit)
Each project was run through the harness prep (pragma pin,
forge config --fix,via_ir/evm_version strip) and built with solx 0.1.7 locally:
USE_SOLX/SOLXin its Hardhat config) and only enables solc 0.8.17/0.8.26, so the harness's>=0.8.34pragma pin fails HHE909. The pinned lockfile also references@ensdomains/buffer@0.1.1, which has been unpublished from npm (registry now has 0.1.0 → 0.1.3), so it is uninstallable as pinned.ens-contracts and olympus need fork-side work (solx wiring plus a version lift) before they
can be enabled; synthetix cannot be.
SSH submodule URL fix + enable fixed-term-loan (second commit)
maple-labs/fixed-term-loanpinsmaple-proxy-factory -> contract-test-utilsto agit@github.com:URL, which the harness's unauthenticated clone cannot fetch. The fix passes-c url.https://github.com/.insteadOf=git@github.com:on the two submodule-touching gitinvocations in
clone_repository(the SHA-pathsubmodule updateand the--recurse-submodulesfallback). Per-process
-cconfig propagates to nested submodule clones viaGIT_CONFIG_PARAMETERS; verified against the exact failing case at the same--depth 1 --recursiveshape the harness uses. Scoped per invocation — no global git configmutation on runners or dev machines, and the main-repo fetch is unaffected (project URLs in
the configs are already https).
With the clone fixed, fixed-term-loan was its own validation: it compiles with solx 0.1.7 on
both codegens without the memory-safe-asm escape hatch and passes 270/270 tests on both
legs (
--fuzz-runs 0,FOUNDRY_INVARIANT_RUNS=1, seed0xdeadbeef), so the project isenabled. It is a lean repo — the test suites finish in ~100 ms — so integration runtime impact
is negligible; it will appear as new rows in the Foundry benchmark reports.
Testing
cargo check -p solx-devclean.SSH-pinned submodule resolves via https, exit 0.
EVM_DISABLE_MEMORY_SAFE_ASM_CHECK;270 passed / 0 failed on each codegen.
ci:integrationrun to see fixed-term-loan exercised in CI before merge.