Protocol Decoding
Decoding is a registry lookup plus a typed writer. Unknown topics stay in arc.logs. Known topics write one row to a protocol-namespaced table.
The registry is keyed by (protocol, version, event) and, for proxies, by implementation code hash. The emitting address on the row is still the proxy.
Raw logs are never mutated. A decoder bug is a rebuild of the decoded table, not a patch of arc.logs.
Calldata decoding follows the same rule as event decoding: match, write, or leave raw.