Skip to content

docs(IB20): clarify inverted seize-holder semantics - #207

Merged
rayyan224 merged 5 commits into
mainfrom
docs/seize-holder-natspec-clarity
Aug 24, 2026
Merged

docs(IB20): clarify inverted seize-holder semantics#207
rayyan224 merged 5 commits into
mainfrom
docs/seize-holder-natspec-clarity

Conversation

@rayyan224

Copy link
Copy Markdown
Collaborator

Summary

  • Clarify in IB20 NatSpec that SEIZE_HOLDER_POLICY uses inverted semantics.
  • Document that seizeWithMemo reverts when from is authorized under SEIZE_HOLDER_POLICY.
  • Call out that an unset holder-policy slot reads as ALWAYS_ALLOW, so no account is seizable until the issuer explicitly configures the slot.

Test plan

  • forge build

Made with Cursor

Make the SEIZE_HOLDER_POLICY NatSpec explicit that seize uses inverted
policy semantics: a holder is seizable only when the policy does not
authorize it, and an unset slot remains safe by default.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

Copy link
Copy Markdown

Interface Coverage

✅ All interface functions have test coverage.

@github-actions

github-actions Bot commented Aug 24, 2026

Copy link
Copy Markdown

📊 Forge Coverage (src/lib/)

🟡 ≥95% across all metrics — some metrics below 99%.

File Lines Stmts Branches Funcs
🟡 B20FactoryLib.sol 97.70% 98.00% 100.00% 95.00%
🔴 test/lib/ForceFeeder.sol 0.00% 0.00% 100.00% 0.00%
🔴 test/lib/PrecompileProbe.sol 0.00% 0.00% 0.00% 0.00%
🟢 MockActivationRegistry.sol 100.00% 100.00% 100.00% 100.00%
🟢 MockActivationRegistryStorage.sol 100.00% 100.00% 100.00% 100.00%
🟢 MockB20.sol 100.00% 100.00% 100.00% 100.00%
🟢 MockB20Asset.sol 100.00% 100.00% 100.00% 100.00%
🟡 MockB20Factory.sol 98.96% 99.10% 100.00% 100.00%
🟢 MockB20Stablecoin.sol 100.00% 100.00% 100.00% 100.00%
🟢 MockB20Storage.sol 100.00% 100.00% 100.00% 100.00%
🟡 MockPolicyRegistry.sol 100.00% 99.54% 97.67% 100.00%
🟢 MockPolicyRegistryStorage.sol 100.00% 100.00% 100.00% 100.00%
Total 97.07% 97.52% 98.16% 97.00%

Full report: download artifact. To browse locally: make coverage (runs forge coverage + genhtml + opens the HTML report).

Replace the "inverted semantics" phrasing with direct `isAuthorized(...)`
language so the seize-holder gate reads more concretely in the interface docs.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actions Bot commented Aug 24, 2026

Copy link
Copy Markdown

✅ Fork tests: all 721 passed

base/base is fully in sync with the base-std spec.

rayyan224 and others added 3 commits August 24, 2026 11:56
Explain in the IB20 NatSpec and seize changelog that SEIZE_HOLDER_POLICY
is distinct from the allowlist-style checks used by transfer and
transferFrom, and intentionally uses the inverse authorization result.

Co-authored-by: Cursor <cursoragent@cursor.com>
Add the design rationale that SEIZE_HOLDER_POLICY intentionally uses
the inverse of the allowlist-style transfer checks so the seize path can
target denied accounts while preserving the safe unset default.

Co-authored-by: Cursor <cursoragent@cursor.com>
Explain the inverted `SEIZE_HOLDER_POLICY` behavior in plainer technical English so the interface docs and changelog more clearly describe the default behavior and blocked-account model.

Co-authored-by: Cursor <cursoragent@cursor.com>
@rayyan224
rayyan224 merged commit 64bd955 into main Aug 24, 2026
10 checks passed
@rayyan224
rayyan224 deleted the docs/seize-holder-natspec-clarity branch August 24, 2026 16:32
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.

2 participants