Repository navigation
chore(chainio): sync 40204 address book to the r1006 root (genesis a3651a27) - #12
Conversation
…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>
BerryManifold
left a comment
There was a problem hiding this comment.
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
left a comment
There was a problem hiding this comment.
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
left a comment
There was a problem hiding this comment.
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, genesisHash0xa3651a27...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_getCodeon https://rpc.citrate.ai for all 104contracts+aaStackentries, 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 factory0x9ac0...6c85, r1005 paymaster0x804a...392cand r1005 radar AnchorRegistry0x7e56...6298are 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.jsonis 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.rsexists in the new book. - Key reading:
addrbook.rsdeserialises onlycontractsandaaStackintoHashMap<String,String>(so the removedgovernance.{type,threshold,minDelaySeconds}fields and the newsourceblock cannot break parsing) and looks names up exactly, soQuorum.AnchorRegistryis 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
left a comment
There was a problem hiding this comment.
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.
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:
Verification
packages/chain-config/bin/check.mjs check <vendored> --canonical contracts/addresses/40204.jsonpasses.Reviewer notes: addresses are lowercase in the r1006 book;
Quorum.AnchorRegistryis a dotted key.🤖 Generated with Claude Code