Uh oh!
There was an error while loading. Please reload this page.
Remove the submodule-era residue: dead foundry.lock, .gitmodules and lib/ references - #122
Conversation
This repo has no submodules: no `.gitmodules`, no `lib/`, and `git ls-files --stage` reports zero gitlinks. Dependencies come from soldeer under `dependencies/` (`libs = ["dependencies"]`), locked in `soldeer.lock`. `foundry.lock` is Foundry's git-submodule lockfile. Its 9 pins all name `lib/` paths that do not exist, contradict the live soldeer pins (forge-std v1.14.0 vs 1.16.1, openzeppelin-contracts v5.5.0 vs 5.6.1) and include two dependencies this repo no longer has at all (`rain.intorastring`, `rain.math.float`). `forge build` emitted one "Dependency '...' not found at expected path" warning per entry: 9 before this change, 0 after. - delete `foundry.lock` - drop its `REUSE.toml` annotation entry, since the annotated file is gone and REUSE annotations describe files that exist - drop the `.soldeerignore` entries tied to the submodule era only: `.gitmodules`, `/foundry.lock`, `/lib`. Every other entry stays, including paths absent from a clean checkout, because `.soldeerignore` is a publish filter rather than a description of the tree. - rewrite the `CLAUDE.md` "Dependencies" paragraph, which claimed git submodules in `lib/`, a dependency set including `rain.math.float` and `rain.intorastring`, and a `rain.sol.codegen` remapping in `foundry.toml` that does not exist there Submodules cannot return: rainix CI runs a `no-submodules` check that fails on a root `.gitmodules` or any committed gitlink. 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: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (3)
💤 Files with no reviewable changes (2)
📝 WalkthroughWalkthroughThe repository removes obsolete ChangesSoldeer migration cleanup
Estimated code review effort: 1 (Trivial) | ~3 minutes Merge Risk:⚪ Minimal · up to This change removes obsolete submodule-era files and references without changing executable application behavior; the reported build, test, formatting, static-analysis, and licensing checks pass, so no actionable merge-blocking risk remains. 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 |
Uh oh!
There was an error while loading. Please reload this page.
@coderabbitai assess this PR size classification for the totality of the PR with the following criterias and report it in your comment: S/M/L PR Classification Guidelines:This guide helps classify merged pull requests by effort and complexity rather than just line count. The goal is to assess the difficulty and scope of changes after they have been completed. Small (S)Characteristics:
Review Effort: Would have taken 5-10 minutes Examples:
Medium (M)Characteristics:
Review Effort: Would have taken 15-30 minutes Examples:
Large (L)Characteristics:
Review Effort: Would have taken 45+ minutes Examples:
Additional Factors to ConsiderWhen deciding between sizes, also consider:
Notes:
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bashset -euo pipefail
base="$(git merge-base HEAD origin/main 2>/dev/null || git merge-base HEAD main 2>/dev/null || true)"if [ -z"$base" ];thenecho"Could not determine the base branch."exit 1
fiprintf'MERGE_BASE=%s\n'"$base"
git diff --stat "$base" HEAD
printf'\nNAME_STATUS\n'
git diff --name-status "$base" HEAD
printf'\nNUMSTAT\n'
git diff --numstat "$base" HEADLength of output: 604 SIZE=S You are interacting with an AI system. |
Closes#121
What
This repo has no git submodules.
.gitmodulesis absent, there is nolib/directory, andgit ls-files --stage | grep ^160000returns nothing — zero committed gitlinks. Dependencies come from soldeer:foundry.tomlsetslibs = ["dependencies"]andsoldeer.lockpins the 7 packages that land underdependencies/.Everything removed here referenced that dead submodule layout.
foundry.lockdeletedfoundry.lockis Foundry's git submodule lockfile. All 9 of its pins namelib/paths that do not exist. Two of them (lib/rain.intorastring,lib/rain.math.float) are for dependencies this repo does not have at all, and two more contradict the live soldeer pins —1801b054is forge-std v1.14.0 where soldeer resolves 1.16.1,fcbae539is openzeppelin-contracts v5.5.0 where soldeer resolves 5.6.1. Nothing reconciles any of it because nothing reads it.It was not silent.
forge buildemitted oneDependency '...' not found at expected pathwarning per entry. Measured inrainix#sol-shellat the pinned CI SHA, in this working tree, restoring the file and building versus deleting it and building:REUSE.tomlDropped the
"foundry.lock",annotation entry. REUSE annotations describe files that exist, so a path that no longer exists is residue.reuse lintis green after the change (80/80 files with copyright and license information)..soldeerignoreRemoved exactly the three submodule-era entries:
.gitmodules,/foundry.lock,/lib.Nothing else was touched.
.soldeerignoreis a publish filter, not a description of the tree, so entries naming paths absent from a clean checkout (.DS_Store,.vscode,.pre-commit-config.yaml,/out,/cache,/dependencies,/remappings.txt) are forward-looking rules and stay. Every remaining entry was checked for spelling against the tree; all are correct.CLAUDE.mdThe "Dependencies" paragraph asserted git submodules in
lib/, listed a dependency set includingrain.math.floatandrain.intorastring(neither is insoldeer.lock), and claimed arain.sol.codegenremapping infoundry.toml— which has noremappingskey at all;remappings.txtis generated byforge soldeer install. Rewritten to describe the soldeer layout that is actually in use.Why this cannot regress
rainix CI runs a
no-submodulescheck that fails on a root.gitmodulesor any committed gitlink, so submodules cannot come back and these pins can never become live again.QA
forge builddependency-warning count, which is 9 on base and 0 on this branch (verified by restoring and re-deleting the file in this tree, below). The full existing suite (118 tests) is the regression guard and passes unchanged, as doesreuse lint, the job aREUSE.tomledit could break.foundry.lockrestored fromHEAD(the deletion reverted in place) ->forge buildinrainix#sol-shellre-emits all 9Dependency '...' not found at expected pathwarnings (BASELINE_WARNINGS=9); deleted again ->AFTER_WARNINGS=0. The revert-mutant is killed, proving the deletion is what removes the warnings rather than build caching or a stale artifact.REUSE.toml-> an unlicensed file left in the tree madereuse lintexit 1 ("Missing copyright and licensing information"), confirming the lint actually ran over this tree and is not vacuously green; with the tree clean it exits 0 at 80/80.soldeer.lock(7 packages: @OpenZeppelin-Contracts 5.6.1, forge-std 1.16.1, rain-lib-hash 0.1.0, rain-lib-typecast 0.1.0, rain-math-binary 0.1.3, rain-sol-codegen 0.1.0, rain-solmem 0.1.3),foundry.toml(libs = ["dependencies"], a[dependencies]table, noremappingskey),git ls-files --stage(zero mode-160000 entries), and the absence of.gitmodulesandlib/in a fresh clone. The upstream tags for the two contradicting pins were read from the forge-std and openzeppelin-contracts release pages, not from this repo.foundry.lock,.gitmodulesandlib/references in a repo with no submodules #121's "Done when" asks for (a)foundry.lockdeleted, (b) itsREUSE.tomlannotation removed, (c) the listed.soldeerignorelines removed, (d)CLAUDE.mdline 72 rewritten for the soldeer layout, (e) noDependency '...' not found at expected pathwarnings, (f) no.gitmodules/lib//foundry.lockreference left in the tree outsidedependencies/, (g) CI green. All seven covered: a-d in the diff, e measured 9 -> 0, f re-grepped over all tracked files after the change (zero hits), g run locally in the pinned CI shell per the table below. The issue's out-of-scope list (.DS_Store,.pre-commit-config.yaml,/out,/cache,/dependencies,/remappings.txt, and.vscode) is untouched.Verification
Run locally in
github:rainlanguage/rainix/53e96a7d0a97d7c7c75c3b2412521324776fdac6#sol-shell— the exact shell and pinned SHA therainix-solreusable workflows use — afterforge soldeer install:reuse lintforge fmt --checkslither .rainix-sol-single-contractforge test -vvvforge builddep warningsNote, not in this PR
CLAUDE.md's "Build & Development" block still listsrainix-sol-prelude/rainix-sol-test/rainix-sol-static/rainix-sol-legal, none of which exist in the rainix flake any more — CI now runsforge soldeer install,slither .,forge fmt --check,rainix-sol-single-contract,reuse lintandforge test -vvvdirectly. That is stale in the same file but is a different migration and outside issue #121's scope.The local
denofmtpre-commit hook wants to reflow all ofCLAUDE.mdto 80 columns. That reflow is not applied here: it is unrelated whole-file churn, and no CI job runs pre-commit (mainis not denofmt-clean today).🤖 Generated with Claude Code
Summary by CodeRabbit
Documentation
Chores