Skip to content

Remove the submodule-era residue: dead foundry.lock annotation in REUSE.toml - #263

Merged
thedavidmeister merged 1 commit into
mainfrom
2026-08-15-issue-262-reuse-foundry-lock
Aug 18, 2026
Merged

Remove the submodule-era residue: dead foundry.lock annotation in REUSE.toml#263
thedavidmeister merged 1 commit into
mainfrom
2026-08-15-issue-262-reuse-foundry-lock

Conversation

@thedavidmeister

@thedavidmeister thedavidmeister commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Closes #262

What changed

One line deleted from REUSE.toml, and nothing else:

   "flake.nix",
-  "foundry.lock",
   "foundry.toml",

Why

foundry.lock is Foundry's git submodule lockfile — it pins the commit of each dependency vendored under lib/. This repo resolves dependencies through soldeer instead, so the annotation names a path that does not exist in the tree.

Verified on this branch that the submodule world is genuinely gone, not merely unreferenced:

  • foundry.toml sets libs = ["dependencies"]; soldeer.lock pins 17 packages
  • no lib/ directory, no .gitmodules, no foundry.lock
  • git ls-files --stage | grep -c ^1600000 (zero gitlinks), so the no-submodules static check passes by construction
  • after the edit, git grep -E 'foundry\.lock|\.gitmodules' outside dependencies/ returns nothing; every remaining lib/ hit is src/lib/, test/lib/, or a soldeer dependency's own src/lib/ import path

Scope is rain.erc4626.words only, per the issue. The same residue in sibling repos, and the repos that legitimately still use git submodules (flow, rain.tier.interface), are untouched.

Verification

Full rainix suite run locally against the pinned CI toolchain (github:rainlanguage/rainix/53e96a7d0a97d7c7c75c3b2412521324776fdac6#sol-shell), matching each job in rainix-sol.yaml and git-clean.yaml:

Job Command Result
legal reuse lint green — 58/58 files with copyright + license, REUSE 3.3 compliant, 0 read errors
static slither . green — 63 contracts, 96 detectors, 0 results
static forge fmt --check green
static rainix-sol-single-contract green
static no-submodules green by construction — 0 gitlinks, no .gitmodules
test forge test -vvv green — 145 passed, 0 failed, 0 skipped across 24 suites, including the Base fork suite
copy-artifacts script/Build.solforge buildscript/build.shforge fmtgit status green — no regenerated artifact drifted; REUSE.toml is the only modified path

QA

  • Discriminating tests: none, and none is correct here. The diff contains no Solidity, no script and no config that any test executes. There is no behaviour to assert.
  • Mutation / A-B. The meaningful comparison is reuse lint with and without the line, because legal is the only job this diff can touch. Both were run in the pinned shell: origin/main (annotation present) reports 58/58 files covered and compliant; this branch (annotation removed) reports 58/58 files covered and compliant. Identical. That is the point — the annotation matched zero files, so removing it takes nothing's coverage away, and no check can distinguish the two trees. reuse lint tolerates annotation paths that do not exist, which is exactly why this line survived unnoticed and why the issue states it does not block its own deletion. There is no mutant here that any check kills; claiming otherwise would be inventing a signal that does not exist.
  • Oracle, independent of the issue text. foundry.lock is Foundry's git-submodule lockfile, meaningful only where dependencies are vendored under lib/. Checked against the repo itself rather than against the issue: git log --all -- foundry.lock returns no commits, git cat-file -e HEAD~1:foundry.lock fails, ls lib .gitmodules finds neither, and git ls-files --stage | grep ^160000 is empty. So the annotation is unambiguously dead, not a pin for something present.
  • Category check. The issue's "done when" is: (a) REUSE.toml line 11 removed, (b) no .gitmodules / lib/ / foundry.lock reference anywhere outside dependencies/, (c) CI green on test / static / legal. All three covered, evidenced above. The issue's explicit out-of-scope — sibling repos carrying the same residue, and flow / rain.tier.interface which genuinely still use submodules — is untouched.

🤖 Generated with Claude Code

foundry.lock is Foundry's git submodule lockfile. This repo resolves
dependencies through soldeer (foundry.toml libs = ["dependencies"],
soldeer.lock pins 17 packages), has no lib/ directory, no .gitmodules
and zero gitlinks, so the file was deleted in the submodule -> soldeer
migration. Its REUSE.toml annotation was left behind and named a path
that does not exist.

reuse lint tolerates annotations for missing paths, which is why this
survived; it still reports 58/58 files covered with the line gone.

Closes #262

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@thedavidmeister thedavidmeister self-assigned this Aug 15, 2026
@coderabbitai

coderabbitai Bot commented Aug 15, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 25b8acfd-3c3e-4c2c-8889-2899ed55a565

📥 Commits

Reviewing files that changed from the base of the PR and between e02d60e and 5e09240.

📒 Files selected for processing (1)
  • REUSE.toml
💤 Files with no reviewable changes (1)
  • REUSE.toml

Walkthrough

The change removes the deleted foundry.lock path from the annotation list in REUSE.toml.

Changes

REUSE annotation cleanup

Layer / File(s) Summary
Remove stale foundry.lock annotation
REUSE.toml
The annotation path list no longer includes foundry.lock.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Merge Risk: ⚪ Minimal · up to 5e092

This change removes an obsolete REUSE annotation for a lockfile that is no longer present and does not alter runtime or product behavior. No actionable merge-blocking risk remains after normal checks and review.

Possibly related issues

  • rainlanguage/rain.merkle#17: Addresses the same stale foundry.lock annotation cleanup in another repository.
  • rainlanguage/rain.dia#67: Covers the same REUSE.toml annotation removal in another repository.
  • rainlanguage/rain.datacontract#26: Targets the same submodule-era foundry.lock residue.
  • rainlanguage/rain.extrospection#47: Addresses removal of a stale foundry.lock reference.
  • rainlanguage/rain.string#29: Covers the same stale foundry.lock reference cleanup.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The change satisfies issue #262 by removing the obsolete foundry.lock annotation and preserving the repository’s scoped migration cleanup.
Out of Scope Changes check ✅ Passed The pull request changes only the REUSE.toml annotation required by issue #262.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically describes the removal of the obsolete foundry.lock annotation from REUSE.toml.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 2026-08-15-issue-262-reuse-foundry-lock

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@thedavidmeister thedavidmeister added the ai:ready AI vetter: passes review, ready for human decision label Aug 18, 2026
@thedavidmeister

Copy link
Copy Markdown
Contributor Author

🤖 ai:vetter
vet-protocol 4
lens source@5e09240e6427323516034df3f730339cc94a92fb + audit skill invoked at pr:263
Reviewed 5e09240: ready — closes #262 — deletes the dead foundry.lock REUSE.toml annotation; tree verified to hold no foundry.lock/.gitmodules/top-level lib, libs=["dependencies"] with soldeer.lock live, and all 12 remaining REUSE annotation paths resolve
cost 88 — dead lockfile annotation one-line removal

@thedavidmeister
thedavidmeister merged commit 5306f6b into main Aug 18, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai:ready AI vetter: passes review, ready for human decision

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Remove the submodule-era residue — REUSE.toml still annotates a deleted foundry.lock

1 participant