Notes / Audits and snapshots

Batch 9 -- 2026-09-16 (automated pipeline run)

Audits and snapshots2026-09-16Chain: Robinhood ChainLinked: PancakeSwap V3 Factory, SushiSwap V3 Factory, Symbiosis Portal, STRATO Bridge depositRouter (Robinhood side)

Source: data/scored_targets_2026-09-16-batch9.md in the repository, rendered here without changes. Source file

Source of candidates: the local candidate backlog prepared on 2026-09-16 (4 entries, each already sourced from 2+ independent sources with eth_getCode confirmed, but explicitly NOT yet verified live -- two of them had unresolved hops). No new web research this batch; no tracker-board leads were consumed.

Every read below was done fresh on Robinhood Chain mainnet on two independent RPCs, https://rpc.mainnet.chain.robinhood.com (block ~64,530,134) and https://robinhood.drpc.org (block ~64,530,605), with byte-identical results on both. robinhood.drpc.org is new to this project: it is the first working second RPC found for this chain (Alchemy/Ankr/thirdweb public endpoints refuse it), which also let this batch close the Curve second-RPC caveat (see end).

Scoring convention used for all four (new helper _safe_rooted_scores)#

All four authority chains end in one plain Gnosis Safe with no module, no guard, and no timelock anywhere in the chain. One shared heuristic, stated rather than hidden:

This lands the four in the same range as the closest existing shapes (Arcus 2-of-3 = 43, Longbow 2-of-3 = 33, Chainlink 4-of-9 = 36, LayerZero 5-of-7 = 34). Like every other formula in scorers.py, it is a heuristic, not a measured risk.

1. PancakeSwap V3 Factory -- 44/100#

2. SushiSwap V3 Factory -- 31/100#

3. Symbiosis Portal -- 43/100#

4. STRATO Bridge depositRouter (Robinhood side) -- 29/100#

Signer overlap (D.3 point 4)#

All 17 existing GROUPS entries were resolved live and compared against the 17 root signers of the four new Safes, and the four were compared with each other: zero shared signers. The four new groups were added to signer_overlap.py, so their 100 is a verified value, not the not-applicable default.

Review of an existing target (D.6): index 0, Morpho Steakhouse USDG vault -- confirmed#

Re-derived from scratch on both RPCs: owner() = 0xCa50D23F... (8,609-byte contract) -> owner() = 0x337feFE4..., bare EOA (nonce 3); curator() = 3-of-7 Safe 0x9023FBD6...; isSentinel(0x5642BCd5...) = true, a 1-of-7 Safe with the same 7 owners; timelock(setOwner/setCurator/setIsSentinel) = 0/0/0 (addAdapter and increaseAbsoluteCap = 7 days, setIsAllocator = 0). Matches the published 10/35/15, composite 19, crossExposure 80 (the curator Safe is shared with the Ethena x Steakhouse vault). GROUPS["steakhouse"] entries still exact. Nothing to change.

Other corrections in this batch#

Running total#

42 targets (up from 38). All 38 pre-existing composites re-derived unchanged in the dry-run.

On-chain confirmation#

Pushed in one updateScores() transaction on Robinhood Chain Testnet (chain 46630): 0x6147bf6bddb12fe42b6f8e03d5daf72221a17b1c21ad40649968f0850566bb04, block 120,425,411, status success. Independently re-read afterwards (separate calls, not the push script's output): trackedTargetsCount() = 42; getScore() for indexes 38-41 returns 65/60/0/100/100/44, 50/35/0/100/100/31, 65/55/0/100/100/43, 45/35/0/100/100/29 (admin/multisig/timelock/oracleAuthority/crossExposure/composite), matching the table above.

Falsification#

Any of these would falsify a batch-9 score: a Safe's getThreshold()/getOwners() changing, a module or guard appearing on any of the 4 Safes, Portal.owner() diverging from ProxyAdmin.owner(), depositRouter.owner() no longer being the custody Safe, or a timelock being inserted anywhere in these chains.

Not an audit, not investment advice. All notes · Back to the dashboard.