Skip to content

chore(chainio): sync 40204 address book to the r1006 root (genesis a3651a27) - #12

Merged
SaulBuilds merged 1 commit into
mainfrom
chore/addresses-r1006
Nov 10, 2026
Merged

SaulBuilds merged 1 commit into
mainfrom
chore/addresses-r1006

Conversation

@SaulBuilds

Copy link
Copy Markdown
Contributor

Summary

Re-syncs this repo's vendored 40204 address book to the live r1006 root book, merged on citrate-chain main as 312a0c2f (chain #454; genesis 0xa3651a27…cdd4). r1005 addresses are retired.

Commits:

  • 2fdbcb7 chore(chainio): sync 40204 address book to the r1006 root (genesis a3651a27)

Verification

  • 351 workspace tests pass; live code check of all 104 addresses.
  • Drift check against chain main 312a0c2f: packages/chain-config/bin/check.mjs check <vendored> --canonical contracts/addresses/40204.json passes.

Reviewer notes: addresses are lowercase in the r1006 book; Quorum.AnchorRegistry is a dotted key.

🤖 Generated with Claude Code

…651a27)

citrate-chain PR #454 (book/r1006-root @ e395954b) makes the root
contracts/addresses/40204.json the live r1006 book (rpc.citrate.ai,
chainId 40204, genesis 0xa3651a27...cdd4). The vendored r1005 copy
pinned 81 moved addresses that are dead on the live chain, including
every address the typed helpers resolve (ComputeMarketplace,
ComputePool, ComputeVerifier, HeartbeatMonitor, ComputePricingOracle,
ContributionAccounting, BulkComputeGateway, ModelRegistry, WrappedSALT,
InferenceRouter) and the AA factory and paymaster.

Re-vendored with the repo's own tool, scripts/sync-addresses.sh (jq
--sort-keys of the canonical), run against an r1006 export, never by
hand. The book now carries the r1006 additions (GovernanceTimelock,
GovernanceMultisig, GuardianTimelock, GuardianMultisig,
GuardianCanceller, TeamVesting_team_1, FederatedRoundLedger,
PatronageLedger, Quorum.AnchorRegistry, genesis.OrangeSeed/V0) and
drops LiquidStakingPool, QuorumAnchorRegistry and CitAgentTimelock,
none of which this repo references. A dotted key
(Quorum.AnchorRegistry) is an ordinary map key to addrbook.rs.

Verification, against the r1006 root:
- address-drift check exactly as the workflow runs it (check.mjs):
  matches; sync-addresses.sh --check and check-address-drift.sh: match.
- cargo test --workspace: 351 passed, 0 failed; release build OK.
- CITRATE_RPC_URL=https://rpc.citrate.ai cargo test -p chainio --test
  live_rpc: 4/4, deployed code verified at all 104 contracts+aaStack
  addresses, live pricing oracle answers.

The drift gate compares against citrate-chain main, so this merges after
#454.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Larry Klosowski <larryklosowski@proton.me>
@SaulBuilds
SaulBuilds requested a review from a team as a code owner November 10, 2026 21:52

@BerryManifold BerryManifold left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated Codex static review of 2fdbcb7fac416f27602db3718988a0c9aaa0b346 is complete. Result: incomplete; details retained privately. Details and coverage limits are recorded in the project's private review log. No tests were executed by this reviewer. Both account submissions represent the same Codex review, not independent reviews.

@Matr0xshka Matr0xshka left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated Codex static review of 2fdbcb7fac416f27602db3718988a0c9aaa0b346 is complete. Result: incomplete; details retained privately. Details and coverage limits are recorded in the project's private review log. No tests were executed by this reviewer. Both account submissions represent the same Codex review, not independent reviews.

@Matr0xshka Matr0xshka left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MAC independent reviewer agent, not Codex, not DGX. Reviewed head 2fdbcb7.

Verdict: approve. No P1, no P2, no P3.

Method (all read-only):

  • Loaded the citrate-chain root book at main 312a0c2f (contracts/addresses/40204.json, r1006: 69 genesis + 28 post-genesis, genesisHash 0xa3651a27...cdd4) and the archived r1005 book (contracts/addresses/r1005/40204.json), and compared every address in this PR's vendored file by path with a script.
  • Ran the drift gate locally exactly as the workflow does: node citrate-chain/packages/chain-config/bin/check.mjs check <vendored> --canonical citrate-chain/contracts/addresses/40204.json (from 312a0c2f). Negative control: the pre-PR chatbot book fails the same command (CitratePaymaster mismatch, exit 1), so the gate is live.
  • eth_getCode on https://rpc.citrate.ai for all 104 contracts + aaStack entries, the 2 top-level SBT/vault entries, the 2 governance entries and radar's 4 contracts: 112/112 have code. Live genesis hash = 0xa3651a27...cdd4, chainId 0x9d0c. The r1005 factory 0x9ac0...6c85, r1005 paymaster 0x804a...392c and r1005 radar AnchorRegistry 0x7e56...6298 are codeless.
  • Grepped the PR head for every r1005-only address (91, plus radar's 4 old ones) and for the keys the r1006 book drops (CitAgentTimelock, LiquidStakingPool, QuorumAnchorRegistry, governance.{type,threshold,minDelaySeconds}), dotted-path lookups and case-sensitive address comparisons.

Results for this PR:

  • crates/chainio/src/generated/addresses.json is byte-equivalent (sorted JSON) to the root book at 312a0c2f: 136/136 equal, 0 mismatches, 0 r1005 leftovers, all lowercase. Local drift gate: matches canonical.
  • Spot-check, typed helpers this agent calls: ComputeMarketplace, HeartbeatMonitor, ContributionAccounting: all have code. Every typed-helper name in addrbook.rs exists in the new book.
  • Key reading: addrbook.rs deserialises only contracts and aaStack into HashMap<String,String> (so the removed governance.{type,threshold,minDelaySeconds} fields and the new source block cannot break parsing) and looks names up exactly, so Quorum.AnchorRegistry is one key. No checksum-case comparisons. all_addresses() feeds the SELL-S0 eth_getCode preflight; all 104 entries have code on r1006, so that preflight will pass.

CI: all checks green on this head. The drift job passed on its "skipped without CITRATE_CHAIN_READ_TOKEN" path, so CI did not run the comparison; the local run above is the evidence.

@BerryManifold BerryManifold left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MAC independent reviewer agent, not Codex, not DGX. Reviewed head 2fdbcb7.

Verdict: approve. No P1 or P2. CI is green (ci, drift, CodeQL, secret-scan).

Method (read-only): root book = citrate-chain main 312a0c2f contracts/addresses/40204.json. Live eth_getBlockByNumber(0) on rpc.citrate.ai returns genesis 0xa3651a27...cdd4, which matches the book. eth_getCode on all 131 distinct addresses in the root book: every contracts/aaStack/membership entry has code; the only codeless entries are the two deployer EOAs and the precompiles, which is expected. Ran chain-config/bin/check.mjs check from chain 312a0c2f against the vendored file locally: matches canonical. Grepped every tracked file for 40-hex literals and classified each one against the root book and the r1005 archive (contracts/addresses/r1005/40204.json).

The only runtime address source is crates/chainio/src/generated/addresses.json, loaded via include_str! in addrbook.rs. I checked the names the typed helpers require: ComputeMarketplace, ComputePool, ComputeVerifier, HeartbeatMonitor, ComputePricingOracle, ContributionAccounting, BulkComputeGateway, ModelRegistry, WrappedSALT and InferenceRouter. All are present and have code on r1006. Selector presence against the citrate-chain sources at 312a0c2f matches every one. The only selectors I did not find are ones with a leading 0x00 byte (PUSH3), or interface-only functions in the same file. The only non-book literals are test fixtures, including the deliberate stale-address regression constant 0x8951...e24b. No stale r1005 literal remains.

Tests: not run by me. I am relying on green CI.

@SaulBuilds
SaulBuilds merged commit e58c8f1 into main Nov 10, 2026
6 checks passed
@SaulBuilds
SaulBuilds deleted the chore/addresses-r1006 branch November 10, 2026 22:47
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.

3 participants