Skip to content

fix(addresses): regenerate 40204 book from citrate-chain 0aab474b (post-reroll) - #15

Open
SaulBuilds wants to merge 1 commit into
mainfrom
fix/reroll-address-book-0aab474b
Open

SaulBuilds wants to merge 1 commit into
mainfrom
fix/reroll-address-book-0aab474b

Conversation

@SaulBuilds

Copy link
Copy Markdown
Contributor

Why

citrate_sdk/_generated/federation_contract.json ships the pre-reroll chain-40204 address book (e.g. CitrateMemberSBT 0xf0badd9e…, MembershipStakeVault 0x53fb4bad…, CitrateWalletFactory 0x86486d1d… — the factory no longer has code on-chain). Downstream deployers using citrate-labs-sdk get retired addresses.

Source

CitrateNetwork/citrate-chain main @ 0aab474b — contracts/addresses/40204.json (fresh-keys reroll 2026-09-29), via the federation intermediate regenerated in CitrateNetwork/citrate-federation#304.

Generator

citrate-federation/scripts/gen-contract.mjs → python scripts/sync_contract.py. No hand edits; the vendored file is byte-identical to the regenerated intermediate (and to the sdk-js copy).

Diff: 71 addresses changed, 31 contracts added, 7 removed (the retired cooperative entries, which are no longer in the book). Membership: SBT 0xa24aa35f…, vault 0x4c0f8b27…. AA: factory 0x24e2a41E…, paymaster 0x8E65bff9….

Verification

  • python scripts/sync_contract.py --check → matches canonical (needs #304 merged for the CI contract-drift job, which reads federation main).
  • Every address in the vendored file appears in the book. The old SBT/VR/vault/grant-signer prefixes now appear only in the new deny-list test.
  • Locked env (uv sync --frozen --all-extras, Python 3.11): ruff check . clean; mypy . clean (86 files); pytest -q → 855 pass / 49 skipped / 0 fail. The first full run had 3 failures, all old-address pins, which are fixed below. The affected modules were re-run green, and one test was added.
  • Tests that hard-coded the old addresses now use the book values, with the same exact-equality strength:
    • test_federation_contract.py: AA factory/paymaster + membership SBT/vault pins; new test_no_pre_reroll_addresses_leak.
    • test_identity_wallet.py / test_cli.py: the predictAddress(0x4242…) vector is now 0x79A945921aF5152b97D726E5B584640fb1f80d0c, read from the live factory 0x24e2a41E… with cast call on rpc.citrate.ai on 2026-10-04. It matches the SDK's local computation and the JS SDK.

Version

0.6.3 → 0.6.4 (pyproject.toml, __version__, uv.lock self-entry). CHANGELOG entry added.

Release (after merge — not done here)

Publishing happens after merge, through .github/workflows/publish.yml (PyPI Trusted Publishing/OIDC). Either publish a GitHub Release, or dispatch the workflow with publish_version=0.6.4. Nothing has been published to PyPI.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Vv2gVzy5XLFKg48yckN9YQ

…st-reroll)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vv2gVzy5XLFKg48yckN9YQ
@SaulBuilds
SaulBuilds requested a review from a team as a code owner October 4, 2026 20:23
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