Skip to content

README: point at the open-salt spec instead of restating it - #256

Open
thedavidmeister wants to merge 1 commit into
mainfrom
2026-09-21-issue-143-readme-open-salt-pointer
Open

thedavidmeister wants to merge 1 commit into
mainfrom
2026-09-21-issue-143-readme-open-salt-pointer

Conversation

@thedavidmeister

Copy link
Copy Markdown
Contributor

Closes #143

README.md carried its own account of what the open-salt address does and does
not fix, and it had already fallen behind the NatSpec that CLAUDE.md names as
the spec. It read

The residual the address cannot fix — implementations MUST NOT read
tx.origin — …

definite and singular, while src/interface/ICloneableFactoryV4.sol lists two
MUSTs there: no tx.origin, and "The gas initialize is given MUST NOT select
state", the latter added by 48a0349, which touched that file alone. An
implementer reading the README as exhaustive keeps tx.origin out of
initialize, leaves a try/catch that defaults on out-of-gas, and ships the
hazard the second MUST exists to prevent.

The fix is to stop keeping a second copy rather than to sync this one: the
bullet now says what is repo-local — which interface declares the open-salt
pair, that it extends ICloneableFactoryV3, what the salt hashes — and points
at the NatSpec for what the address commits to, what it does not fix, and the
MUSTs that places on implementations. No restated MUST is left in README.md,
so there is nothing here that can drift again.

The deleted WHO/WHAT paragraph went with it: it was the same second copy of
ICloneableFactoryV4.sol:54-90, and it is the part a reader would trust as the
whole trade-off.

README.md is also #124's file, one section earlier. Each stands alone.

QA

  • Discriminating tests: n/a - README prose, and tests never assert README text.
    The drift this PR removes is exactly the kind no test can catch, which is why
    the copy is removed rather than corrected.
  • Mutations applied: n/a - no src/ or test/ change, so there is no behaviour
    to mutate.
  • Oracle: the NatSpec itself at src/interface/ICloneableFactoryV4.sol:135-168,
    read against the README sentence, and git log --name-only 48a0349 for which
    files the second MUST landed in.
  • Category check: the issue asks for (A) the stale tx.origin-as-sole-residual
    claim and (B) the hand-maintained paraphrase that produced it; covered A,B.
    The rest of the README was checked for the same shape: the ## Library
    section describes this repo's own files, the ### Legacy entries describe
    which interface superseded which, and neither restates a normative MUST, so
    neither is in scope.

🤖 Generated with Claude Code

The README named tx.origin as the one residual the address cannot fix; the
NatSpec has carried two MUSTs there since 48a0349. Keep no restated MUST.

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

coderabbitai Bot commented Sep 21, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 38 minutes.

Check out review usage here.

View limit details

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.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 9e711af7-c619-4677-902d-1ec825cec350

📥 Commits

Reviewing files that changed from the base of the PR and between 710dff5 and 501fb33.

📒 Files selected for processing (1)
  • README.md

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.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant