Skip to content

Dev - rc7 - #71

Merged
rya-sge merged 53 commits into
mainfrom
dev
Oct 16, 2026
Merged

rya-sge merged 53 commits into
mainfrom
dev

Conversation

@rya-sge

@rya-sge rya-sge commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

…iew: complete CMTAT routing table, forwarder trust, rule-author obligations, synced rule lists, build instructions
…in a dedicated erc3643 Foundry profile at solc 0.8.30, and bump lib/ERC-3643 to 4.2.0-beta1
…ed v3.0.0 summary of the changes since v2.1.0
…e notes: no affected pattern, same warnings and bytecode size)
…yed code unchanged apart from metadata, erc3643 test profile stays on Prague
…te the current IRuleEngine / IRuleEngineERC1404 inheritance
… with the v3.3.0-rc4 code as text and fix the CMTATBaseRuleEngine link
…eedback (unchanged from rc6, nothing to fix) and refresh the audit overview
…and token self-binding so the ERC-2771 forwarder cannot impersonate a token; add forwarder-relay tests for all variants
…), output identical; update the rc7 report headers, feedback, audit overview and changelog
  duplicate-batch tests for all variants, make bare expectReverts specific;
  docs(security): add the v3.0.0-rc7 code-quality review including tests
  (coverage, 33 mutants all killed)
… (admin, tokenContract)) and RuleEngine2771 (immutable trusted forwarder) over a shared RuleEngineAccessControlShared base; add RuleEngine2771 tests and

  update scripts and docs
  feat: make ERC-2771 opt-in for the ownable variants too - RuleEngineOwnable and RuleEngineOwnable2Step drop the forwarder (constructor (owner_, tokenContract)), new RuleEngineOwnable2771 and RuleEngineOwnable2Step2771 carry it;
  add shared ERC-2771 and no-forwarder test bases for all six deployables and update docs
…stom errors (Aderyn L-2); docs(security): rerun Slither and Aderyn on the final rc7 code; docs: regenerate the Surya schema and refresh the inlined Surya

  tables
…the final code - re-verified findings, re-measured gas, ERC-2771 reuse probe, 17 new mutants all killed; fix the RuleEngine-with-CMTAT forwarder section
…nstead of rulesCount()/rule(i), saving 227 gas per rule on detectTransferRestriction (rc7 code-quality review A-3)
…75 gas per call (rc7 code-quality review B-1); docs(security): assess B-2, the contains() pre-checks in addRule/removeRule add no security
…stead of a contains() pre-check, saving 271/268 gas and removing the unreachable OperationNotSuccessful error (rc7 code-quality review B-2, branch coverage

  40/40); docs(security): revise C-3 against the single-versus-batch revert convention
…ngine2771 extends RuleEngine like the ownable *2771 contracts, and group the deployables in

  src/deployment/accessControl and src/deployment/ownable (breaking for import paths only); docs: update READMEs, agent guide, tooling paths, Surya schema and the rc7 code-quality
  review D-2
…ngine2771 extends RuleEngine like the ownable *2771 contracts, and group the deployables in

  src/deployment/accessControl and src/deployment/ownable (breaking for import paths only); docs(security): restate I-1 and I-2 in the rc7 code-quality review with current call
  sites, the recomputed narrowed IRule id and the unguarded transferred of the stateful mock rules
… in the Foundry workflow (rc7 code-quality review K-4)
…ine (9 tests) and import the CMTAT interface ids in the mock rules; docs: add RuleEngine-with-CMTAT.md 4.8 on

  the standalone rule role and its obligations (rc7 code-quality review I-2)
…ules with require(cond, CustomError()), caching the rule cap in addRule since require evaluates error arguments eagerly (rc7 code-quality review E-2)
…canTransferFrom), new ERC-165 id 0xb1a69752 required strictly by the engine, breaking for rules advertising only 0x2497d6cb; reference rules also implement

  IRuleEngineERC1404 for the standalone role (rc7 code-quality review I-1)
…; test: check batch rollback and empty batches as no-ops in the three access-control families (rc7 code-quality review C-3)
… code - both hosts compile with no linearization conflict, but a CMTAT Standard token embedding TokenBindingExtendedModule is 326 bytes over EIP-170
… and note that contract size depends on the CMTAT deployment version used as host
…rowed 0xb1a69752 so rules built before rc7 keep working, checking ERC-165 support once (rc7 code-quality review I-1)
…gementModule title, _transferred wording, placeholder comment, section headers, empty Events header,

  restricion typo) (rc7 code-quality review G-2)
…5fe2) and update the reports, feedback and overview; docs: regenerate the Surya schema and the sol2uml diagrams

  (add the *2771 deployables and IRule), rendering sol2uml through Graphviz
…okens for all six deployables (rc7 code-quality review K-5); docs: correct the ERC3643TokenMock header for T-REX 4.2.0-beta1 (G-3) and add a coverage table measured on the final rc7 code (K-2)
…tionNotSuccessful error and the IRule ERC-165 id compatibility get their own bullets, the misleading No external engine interface change heading becomes an accurate What does not change
…d callback guard fuzzing, self-binding re-bind, binding of rules and EOAs, Ownable2Step acceptance window,

  reverting views, reentrant rule, zero forwarder); docs(security): add the rc7 Claude security audit repor
  acceptOwnership, so a nominee added as a rule cannot become owner (rc7
  security review F-1); test: invert the F-1 proof of concept into a regression
  test and add the recovery path
…iew F-2 (clear the

  approval on a manager unbind, single-use approval, or documentation) and F-3 (keep
  rules and bound tokens disjoint, document binding as a trust decision)
…s the token's self-binding approval, so the token cannot undo the manager's decision; a token unbinding itself keeps it (rc7 security review F-2); test: invert the F-2 proof of concept and cover the batch, self-unbind and event paths
…d adding a bound token as a rule now revert, via a new _checkBindingTarget hook in the token binding registry

  and a bound-token check in _checkRule; document binding as a trust decision (rc7 security review F-3)
…view F-4

  - measured prototype (fails closed, slightly cheaper, still reverts on
  malformed rule data); not recommended now, with the conditions and design if
  an integrator needs it
…eference submodule) - per-rule restriction codes and ERC-3643 support, rules that protect one token per instance, binding the operation rules to the engine,

  legacy IRule ID advertised by Rules up to v0.6.0
…eference submodule) - per-rule restriction codes and ERC-3643 support, rules that protect one token per instance, binding the operation rules to the engine,

  legacy IRule ID advertised by Rules up to v0.6.0
, after the security review fixes F-1 to F-3) - Slither output identical; Aderyn 90 -> 91 instances (L-5 empty default of the F-3 _checkBindingTarget hook,

  by design), nSLOC 694 -> 716; refresh AUDIT_OVERVIEW, the stale doc/README.md static-analysis summaries and the CHANGELOG
… rc7 supports CMTAT >= v3.0.0 (tested against v3.0.0 and v3.3.0-rc4), which RuleEngine to use with CMTAT v3.0.0
…7 ones for the six deployables (Foundry and Hardhat, solc 0.8.37, Osaka); point doc/README.md Compilation to them and refresh its contract-size table
@rya-sge
rya-sge merged commit 72fbcbe into main Oct 16, 2026
2 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.

1 participant