@@ -49,18 +49,53 @@ export const SWAP_FEE_SPLIT = "0x15e69fd67dcc17e061ceeb93dac791e0f5af0eae";
4949 * in the SAME transaction (distribute-and-withdraw flows), and failing that by
5050 * the ledger credit that funded it — see `ledgerSplitForCredit`, which is what
5151 * recovers a bare `withdraw()` of balance deposited earlier. A split nobody has
52- * mapped yet (two such ETH-paying splits, 0xd9b2…ad6b and 0xdac8…e54, have
53- * already credited this treasury) still falls to the generic `splits` tag: an
54- * unmapped split must surface as unclassified, never wear another product's
55- * name. The one exception is spelled out at `UNATTRIBUTED_USDC_FALLBACK`.
52+ * mapped yet still falls to the generic `splits` tag: an unmapped split must
53+ * surface as unclassified, never wear another product's name. The one
54+ * exception is spelled out at `UNATTRIBUTED_USDC_FALLBACK`.
5655 *
57- * Adding a product = one entry here plus its i18n strings and tile tone.
56+ * ── THE ADDRESS BOOK ──
57+ *
58+ * MAPPED (below):
59+ * SUBNET_FINAL_SPLIT 0xcc7E…3A4E → "subnet". Recipients (reconstructed from
60+ * the creation event, hash-verified against the stored splitHash,
61+ * 2026-08-19): Sopa Multisig 0x96C3…eEA2 80%, treasury 20%. Pays USDC.
62+ * SWAP_FEE_SPLIT 0x15e6…0eae → "swap" (recipients above).
63+ *
64+ * IDENTIFIED, RECIPIENTS VERIFIED, PRODUCT UNKNOWN (`UNNAMED_VERIFIED_SPLITS`;
65+ * deliberately unmapped — their payouts stay generic until a human names
66+ * them). Both were once suspected of being subnet splits; the on-chain shape
67+ * refutes that, so do not re-add the hypothesis:
68+ * 0xd9b2…ad6b — 0xEed9…a282 20%, treasury 80% (hash-verified 2026-08-19).
69+ * Diverges from the subnet pattern on every axis: counterparty is not the
70+ * Sopa Multisig, the treasury share is INVERTED (80% vs the subnet's 20%),
71+ * different factory (0x5cba…21d1), no distribution incentive, pays ETH
72+ * where the subnet lane pays USDC.
73+ * 0xdac8…e54 — 0x9ad8…E1c8 49.5%, treasury 49.5%, 0x9946…17a1 1%
74+ * (hash-verified 2026-08-19). Also unrelated to the [80/20] subnet shape.
75+ * Pays ETH.
76+ *
77+ * NOT SPLITS, NEVER SOURCES: SplitsWarehouse 0x8fb6…1fb8 is shared transport
78+ * for every split above; the legacy Ethereum-mainnet treasury 0x4d3a…ce52
79+ * (config `GNARS_ADDRESSES_ETH.treasury`) is an obsolete DAO address, not an
80+ * income product; Seaport and the auction house have their own tags.
81+ *
82+ * Adding a product = verify the recipients against the stored splitHash first
83+ * (reconstruct from the creation event), then one entry here plus its i18n
84+ * strings and tile tone.
5885 */
5986const SPLIT_PRODUCT : Record < string , InflowSource > = {
6087 [ SUBNET_FINAL_SPLIT ] : "subnet" ,
6188 [ SWAP_FEE_SPLIT ] : "swap" ,
6289} ;
6390
91+ /** Investigated and hash-verified splits whose product is still unnamed (see
92+ * the address book above for their recipients and why they are NOT subnet).
93+ * Exported so future naming starts from the verified constants, not a re-dig. */
94+ export const UNNAMED_VERIFIED_SPLITS = [
95+ "0xd9b22da0c190a90bcada99d69b0f5aeeaf10ad6b" ,
96+ "0xdac848cfe537b21eeb5e718422e4055644b29e54" ,
97+ ] as const ;
98+
6499/**
65100 * Where a credit came from. Kept deliberately coarse — these are the things
66101 * the DAO actually earns from, not a transaction taxonomy. `splits` is the
0 commit comments