Uh oh!
There was an error while loading. Please reload this page.
chore: remove the submodule-era residue — the dead foundry.lock and its references - #50
Conversation
foundry.lock is Foundry's git-submodule lockfile. This repo has no .gitmodules, no lib/ and no gitlinks; dependencies come from soldeer under dependencies/. Its two pins are both dead: lib/forge-std points at v1.14.0 while the build uses 1.16.1, and lib/rain.math.binary names a dependency that appears in neither foundry.toml [dependencies] nor soldeer.lock. Nothing reads it, and forge build emitted a 'Dependency ... not found at expected path' warning per entry. The references outlive the file, so they go with it: REUSE.toml annotated .gitmodules and foundry.lock, and .soldeerignore excluded .gitmodules, /foundry.lock and /lib. It also excluded .coderabbitai.yaml, CLAUDE.md and /target, none of which exist here and none of which any tooling produces -- there is no Cargo.toml and no crates/. .DS_Store, .vscode, .pre-commit-config.yaml and the build outputs stay: those are absent from a clean checkout by design and present when soldeer push runs. src/lib/LibCodeGen.sol stays in the REUSE annotation -- it is first-party source, not a lib/ path. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (2)
💤 Files with no reviewable changes (2)
Included review availability: Your plan includes up to 1 review per rolling hour; 0 remain after this review. WalkthroughThe change removes obsolete ChangesRepository metadata cleanup
Estimated code review effort: 1 (Trivial) | ~3 minutes Merge Risk:⚪ Minimal · up to This configuration-only cleanup removes obsolete dependency and packaging references without changing Solidity code or published package contents; no actionable merge-blocking risk remains after normal checks and review. Possibly related issues
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
thedavidmeister
commented
Aug 16, 2026
Reviewed e7e947d: ready — Closes #35. Three files, 16 deletions, no source and no test touched. The evidence behind it is what makes it landable rather than plausible. Both
The consequence is stated in the body rather than left to be discovered: All five checks green, and CodeRabbit actually reviewed this one — |
Uh oh!
There was an error while loading. Please reload this page.
Closes#35.
Configuration only. No Solidity source, no deployed bytecode, no audited artifact.
What was dead, verified on a fresh clone of
main(af4e5a9)foundry.lockis Foundry's git submodule lockfile. This repo takes no submodules:.gitmodules, nolib/directorygit ls-files --stage | awk '$1=="160000"'→ empty (zero gitlinks)foundry.tomlsetslibs = ['dependencies'];soldeer.lockis the live lockfile, and it holds exactly one package,forge-std 1.16.1Its two pins contradicted each other and the build:
lib/forge-std→1801b054, which is forge-std v1.14.0, while the build resolves 1.16.1lib/rain.math.binary→ a dependency that appears in neitherfoundry.toml [dependencies]norsoldeer.lockNot silent either.
forge build --forceon the clean clone, before this change:Both are gone after it. The one remaining
Warning: Found unknown config section in foundry.toml: [package]is pre-existing, is forge deprecating the section soldeer itself uses, and is not this issue.Submodules also cannot return:
rainix-sol-staticrunsno-submodules, which fails on a root.gitmodulesor any committed gitlink.The references go with the file
None of these fail anything on their own —
reuse linttolerates annotation paths that do not exist, and a.soldeerignoreline for an absent path is a no-op. That is exactly why they survived the first pass, so they are removed in the same change rather than left for a third.REUSE.toml— dropped".gitmodules"and"foundry.lock"."src/lib/LibCodeGen.sol"is kept: that is first-party source that exists, not alib/submodule path..soldeerignore— dropped.gitmodules,/foundry.lockand/libfor the same reason, plus three more absent paths found while checking:.coderabbitai.yaml— no such file, and not gitignored, so nothing can produce itCLAUDE.md— no such file/target— this repo has no Rust: noCargo.toml, nocrates/,targetis not in.gitignore, and nothing undernix developproduces one (checkedgit status --porcelain --ignoredafter a devShell build: the only ignored-but-present paths are.pre-commit-config.yaml,cache/,dependencies/,out/)Deliberately kept:
.DS_Store,.vscode,.pre-commit-config.yaml,/out,/cache,/dependencies,/docs. Those are absent from a clean checkout by design — OS junk, local developer files, or artifacts generated atforge soldeer install/forge build/ devShell-entry time, and therefore present whensoldeer pushruns..pre-commit-config.yamlin particular is written into the tree by entering the rainix devShell, which the run above confirms.What ships is unchanged
forge soldeer push --dry-runonmainand on this branch produce identical 18-entry file lists. Removing the.soldeerignorelines adds nothing to the package, because none of the paths they named exist.QA
nix develop -c forge build --forceon the unmodified clone emitsWarning: Dependency 'lib/rain.math.binary' not found at expected pathandWarning: Dependency 'lib/forge-std' not found at expected path, and the same command on this branch emits neither. That pair fails on base and passes here. Alongside it,nix develop -c reuse lintis compliant with REUSE 3.3 (42/42 files, 0 missing/unused/bad) after the two annotation paths are dropped,nix develop -c forge fmt --checkis clean, andnix develop -c forge testis 84 passed / 0 failed — byte-identical to the pre-change baseline measured onmainataf4e5a9, with no test added, edited or weakened.pathlist, and a packaging ignore list. None contains a statement a mutant could be applied to or survive in. The nearest analogue was run instead, as a whole-file deletion probe on the packaging config:forge soldeer push --dry-runonmainand on this branch produce identical 18-entry package listings, so no removed ignore line was load-bearing.foundry.lockpinning a dependency this repo no longer takes #35 —git ls-files --stage | awk '$1=="160000"'for the absence of gitlinks,ls -a+git ls-filesfor the absence of.gitmodules,lib/,CLAUDE.md,.coderabbitai.yaml,Cargo.tomlandcrates/,soldeer.lockfor the one live dependency (forge-std 1.16.1) againstfoundry.lock's v1.14.0 pin,git status --porcelain --ignoredafter a devShell build for which ignored paths actually materialise, and rainix'sno-submodules— confirmed wired intorainix-sol-static— for the claim that submodules cannot return.foundry.lockpinning a dependency this repo no longer takes #35 asks for six things — deletefoundry.lock; dropREUSE.tomllines 8 and 19 while keeping line 18; drop.soldeerignorelines 2, 7, 11, 18, 20 and 25; noDependency ... not foundwarning fromforge build; no.gitmodules/lib//foundry.lockreference left outsidedependencies/and first-partysrc/lib/; CI green. All six covered. The last was re-verified by grep after the change: outsidedependencies/there is now nogitmodulesand nofoundry.lockstring anywhere, and every survivinglib/hit is a first-partysrc/lib/path — theREUSE.tomlannotation the issue explicitly carves out, plusscript/andtest/imports ofsrc/lib/*.sol.One consequence to note
REUSE.tomlis in the published package (it appears in the 18-entry dry-run listing above), so therainix-autopublishsoldeer content gate will read this as a content change: merging publishes0.1.7and bumps[package].versionto0.1.8. That is correct — the packagedREUSE.tomlgenuinely changed — but it means a configuration-only PR cuts a release.Summary by CodeRabbit