Skip to content

Move soldeer release metadata under foundry's [external] section - #48

Merged
thedavidmeister merged 1 commit into
mainfrom
2026-08-19-issue-28
Aug 19, 2026
Merged

Move soldeer release metadata under foundry's [external] section#48
thedavidmeister merged 1 commit into
mainfrom
2026-08-19-issue-28

Conversation

@thedavidmeister

Copy link
Copy Markdown
Contributor

Closes #28

foundry.toml opened with a bare [package], which foundry reads as an
unrecognised profile, so every forge invocation printed:

Warning: Found unknown config section in foundry.toml: [package]
This notation for profiles has been deprecated and may result in the profile not being registered in future versions.
Please use [profile.package] instead or run `forge config --fix`.

The section is now [external.package], with a comment stating it is release
metadata for rainix-autopublish, not foundry config. [external.*] is the
section foundry reserves for another tool's config and ignores — added for
exactly this in foundry-rs/foundry#5866 and excluded from forge config --fix
in foundry-rs/foundry#12723. forge config --fix was NOT run: measured in the
issue, it turns one warning into two (name and version are not profile
keys). This is the same change as the worked precedent
rainlanguage/rain.sol.codegen#143.

One file, +7/−1. The name and version lines are byte-untouched. No prose in
this repo names [package].version (README grep came back empty), so the
issue's "fix any prose in the same pass" clause has nothing to fix here.

Publishing is provably untouched

  • /foundry.toml is in .soldeerignore, so it is not in the published package.

  • rainix's real gate (rainix-static soldeer-gate from rainix
    53e96a7d, the SHA rainix-autopublish.yaml pins) run on before/after
    copies of the tree with only this diff between them:

    before: remote=0.1.0 publish=0.1.1 next=0.1.2 NEW=79a6b46114c32677523be027d74f96f96ad01c9921c553f0f96f3e51537607ec
    after:  remote=0.1.0 publish=0.1.1 next=0.1.2 NEW=79a6b46114c32677523be027d74f96f96ad01c9921c553f0f96f3e51537607ec
    

    Byte-identical content hash, same version/next. (Both copies had the
    in-dev version identically set to 0.1.1 so the gate's ahead-invariant
    passes — the repo sits at 0.1.0 == published 0.1.0, which is issue Migrate to the next-version Soldeer release lifecycle (bump [package].version) #24,
    not this one; the gate blanks the version line before hashing so this does
    not affect the measured hash. OLD != NEW / changed=true appears in BOTH
    runs identically: main's source has drifted from the 2026-05-09 published
    0.1.0 zip — pre-existing, zero delta from this diff.)

  • The gate's read_local_version and the autopublish bump sed both anchor
    on the first ^version[[:space:]]*= line with no section awareness; this
    diff leaves that line as the only such line. The exact bump sed run on a
    copy of the new file rewrites only the version line.

  • forge soldeer push rain-datacontract~0.1.1 --dry-run succeeds on the new
    section (run inside the gate).

Interaction with #24 (concurrent)

#24's fix bumps version = "0.1.0""0.1.1" on a line this diff does not
touch (the diff is confined to the section header and comment lines above it),
so the two merge cleanly in either order, and the version-line anchor both the
gate and the bump sed use is unchanged by this diff.

QA

  • Discriminating tests: n/a — config-only, no Solidity behaviour change and test/ mirrors src/ so release metadata has no home in the mirror tree; the discriminating check is a command run both ways: nix develop -c forge config prints the [package] warning on main (1bcfc35) and prints nothing on this branch; nix develop -c forge test 18/18 green on both.
  • Mutations applied: n/a — no executable code changed; mutation-probe mutates code under test and there is none in this diff.
  • Oracle: forge's own warning output on main vs this branch; rainix soldeer-gate (rainix-static @53e96a7d) run on before/after copies with byte-identical NEW hash; feat: support external sections in foundry.toml foundry-rs/foundry#5866 + #12723 for the [external] exemption semantics; soldeer_gate.rs source read at the pinned SHA for the version-line anchor.
  • Category check: issue asks (a) silence the warning without forge config --fix, (b) leave soldeer publishing and the version-line anchor undisturbed, (c) comment marking the section as another tool's metadata, (d) fix prose naming [package].version, (e) verify via soldeer-gate before/after + silent forge config; covered a, b, c, e; d has no instances in this repo (verified by grep).

foundry reads any unreserved root section as a profile and warns about
[package] on every invocation, and forge config --fix would rewrite it
into [profile.package], turning one warning into two unknown-key
warnings. [external.*] is the section foundry reserves for another
tool's config and ignores (foundry-rs/foundry#5866, excluded from the
fixer in foundry-rs/foundry#12723).

Closes #28

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@thedavidmeister thedavidmeister self-assigned this Aug 19, 2026
@coderabbitai

coderabbitai Bot commented Aug 19, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@thedavidmeister, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 14 minutes

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits within each organization.

For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 2ac830f0-4771-49cc-8351-00f7887482ed

📥 Commits

Reviewing files that changed from the base of the PR and between 1bcfc35 and c1679d5.

📒 Files selected for processing (1)
  • foundry.toml

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 merged commit 12375ec into main Aug 19, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

foundry.toml's bare [package] warns on every forge invocation, and forge's suggested fix makes it worse

1 participant