Uh oh!
There was an error while loading. Please reload this page.
chore: remove submodule-era residue — dead foundry.lock, .gitmodules and lib/ references - #30
chore: remove submodule-era residue — dead foundry.lock, .gitmodules and lib/ references#30thedavidmeister wants to merge 2 commits into
Conversation
This repo has no submodules: no .gitmodules, no lib/, and `git ls-files --stage` reports zero gitlinks. Dependencies come from soldeer (`libs = ["dependencies"]`, `soldeer.lock`). - Delete `foundry.lock`. It is Foundry's git-submodule lockfile and its 2 pins are both for `lib/` paths that do not exist. Both contradict the live build: `fcbae539` is openzeppelin-contracts v5.5.0 while soldeer resolves 5.6.1, and `2e47e41` is no tagged rain.solmem release while soldeer resolves rain-solmem 0.1.3. It also has no `forge-std` entry. `forge build` emitted one `Dependency '...' not found at expected path` warning per entry; it now emits none. - REUSE.toml: drop the `foundry.lock`, `.gitmodules` and `.vscode/**/` annotation entries. None of those paths exist in the tree. - .soldeerignore: drop `/foundry.lock`, `.gitmodules`, `/lib` and `CLAUDE.md`, none of which exist; correct `.coderabbitai.yaml` to `.coderabbit.yaml`, the real CodeRabbit config filename, so a config added later is actually ignored rather than published. Submodules cannot return here: rainix CI's `no-submodules` check fails on a root `.gitmodules` or any committed gitlink. The `.soldeerignore` entries for `.DS_Store`, `.vscode`, `.pre-commit-config.yaml` and the build/publish outputs are left alone — those are absent from a clean checkout by design and present when `soldeer push` runs. Closes#29 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 (1)
WalkthroughThe change updates ChangesRepository metadata cleanup
Estimated code review effort: 1 (Trivial) | ~3 minutes Merge Risk:⚪ Minimal · up to This PR removes obsolete dependency-lock and metadata entries without changing Solidity behavior; the supplied validation is green, and no actionable merge-blocking risk remains after normal checks and review. Possibly related issues
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 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 |
`.soldeerignore` is a publish filter, not a description of the tree. An entry naming a file that is absent today is a forward-looking rule, not residue: dropping it publishes that file into the soldeer package if anyone adds it later. The previous commit wrongly removed `CLAUDE.md` on the grounds that no such file exists here, which is precisely the case the filter is for. Only entries tied to the dead submodule era go, because submodules cannot return — rainix CI's `no-submodules` check fails on a root `.gitmodules` or any committed gitlink. That is `.gitmodules`, `/lib` and `/foundry.lock`, and nothing else. Every remaining entry stays whether or not its path exists today. The misspelled `.coderabbitai.yaml` stays corrected in place to `.coderabbit.yaml` rather than dropped, for the same reason: dropping it would remove the protection. `REUSE.toml` is the opposite case and is unaffected. Its annotations describe files that exist, so a path absent from the tree there is residue and still goes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Closes#29
This repo has no submodules. There is no
.gitmodules, nolib/, andgit ls-files --stage | grep ^160000is empty. Dependencies come from soldeer —foundry.tomlsetslibs = ["dependencies"]andsoldeer.lockis the live lockfile for@openzeppelin-contracts5.6.1,forge-std1.16.1 andrain-solmem0.1.3.What is removed
foundry.lock— Foundry's git-submodule lockfile. Its 2 pins both name alib/path that does not exist, and both contradict what the build actually uses:fcbae539is openzeppelin-contracts v5.5.0 against soldeer's 5.6.1, and2e47e41is not any tagged rain.solmem release (v0.1.3isce03de80) against soldeer'srain-solmem0.1.3. It also has noforge-stdentry at all. Nothing reconciles any of it.REUSE.toml— drops three annotationpathentries that match nothing in the tree:"foundry.lock",".gitmodules",".vscode/**/". A REUSE annotation describes files that exist, so a path absent from the tree is residue..soldeerignore— drops.gitmodules,/liband/foundry.lock, and corrects.coderabbitai.yamlto.coderabbit.yamlin place. The misspelling made that line a no-op; a real.coderabbit.yamladded later would have been published to soldeer rather than ignored.Submodules cannot come back: rainix CI's
no-submodulescheck fails on a root.gitmodulesor any committed gitlink. That is what makes those three entries dead rather than dormant.What is deliberately left alone
Every other
.soldeerignoreentry, whether or not its path exists today —CLAUDE.md,.DS_Store,.vscode,.pre-commit-config.yaml,/targetand the rest of the build/publish outputs (/out,/cache,/dependencies,/result,/meta,/docs,/deployments,/audit)..soldeerignoreis a publish filter, not a description of the tree. An entry naming a file that is absent today is a forward-looking rule, not residue: deleting it means that file gets published into the soldeer package if anyone adds it later. So absence from a clean checkout is not evidence an entry is dead — some of these are OS junk or local developer files, some are artifacts generated atforge soldeer install/forge buildtime and therefore present exactly whensoldeer pushruns, and some simply have not been added yet. The only entries that can be removed safely are ones whose file can never come back, which is why the submodule-era three go and nothing else does.This is also why the misspelled CodeRabbit entry is corrected rather than dropped — dropping it would remove the protection.
Scope is rain.string only, per the issue. The same residue in the sibling repos, and the repos that legitimately still use submodules (
flow,rain.tier.interface), are untouched.Verification
Run in the pinned
rainix#sol-shell(53e96a7), on this branch:forge buildDependency '...' not found at expected pathwarning (was 2 — reconfirmed on this branch by restoring the file, which brings both back)reuse lint(legal)forge test -vvvslither .forge fmt --checkrainix-sol-single-contractrainix-static no-submodules .grep -rnover the tree confirms no remaining.gitmodules,foundry.lockor submodule-lib/reference outsidedependencies/. The onlylib/hits left are Solidity source paths (src/lib/...,rain-solmem-0.1.3/src/lib/...).QA
forge buildstops warning) is verified by direct A/B on this branch rather than by a test, because forge warnings are not assertable fromforge test.git show main:foundry.lock > foundry.lockon this branch, thenforge buildin the pinnedrainix#sol-shell— bothWarning: Dependency 'lib/rain.solmem' not found at expected pathandWarning: Dependency 'lib/openzeppelin-contracts' not found at expected pathcome back; delete it again and both are gone. Killed by observed build output, so the deletion is what silences the warnings, not a cosmetic change. TheREUSE.tomland.soldeerignorelines have no mutant that any check can kill —reuse linttolerates annotation paths that do not exist and a.soldeerignoreline for an absent path is a no-op, which is exactly why the issue says none of them blocks its own deletion. That absence of a killing check is what makes over-deletion in.soldeerignorethe real hazard here, and it is bounded by the "file can never come back" rule rather than by CI.foundry.lockis Foundry's git-submodule lockfile, meaningful only where deps are vendored underlib/; this repo's live dependency source isfoundry.toml+soldeer.lock. Pin identity checked against upstream, not against the issue text:gh api repos/OpenZeppelin/openzeppelin-contracts/git/ref/tags/v5.5.0returns exactlyfcbae5394ae8ad52d8e580a3477db99814b9d565(soldeer resolves 5.6.1), and rain.solmemv0.1.3dereferences toce03de807b5766ccd2f03547ffe9f1576581b450, not the pinned2e47e41(which is a real commit — the2026-01-26-auditmerge — but no release). Absence of submodules checked from git itself:git ls-files --stage | grep ^160000is empty, andrainix-static no-submodules .reports clean.foundry.lockdeleted, (b) every listedREUSE.tomlentry removed, (c) every listed.soldeerignoreline removed or corrected, (d) noDependency '...' not found at expected pathfromforge build, (e) no.gitmodules/lib//foundry.lockreference anywhere outsidedependencies/, (f) CI green on test / static / legal. Covered a, b, c, d, e, f. On (c),CLAUDE.mdis corrected to stay: the issue listed it as dangling, but.soldeerignoreis a filter rather than a description of the tree, so an entry for a file that does not exist yet is a forward-looking rule and removing it would publish that file if it were ever added. The.coderabbitai.yamlmisspelling is fixed in place for the same reason instead of taking the issue's "or drop the line" option. The scope-out list is untouched, and the sibling repos the issue names as also carrying this residue are left to their own issues.🤖 Generated with Claude Code