readLocal
Run a PURE (or otherwise state-independent) circuit LOCALLY — against the contract's initialState(), with NO deployed address and NO chain fetch — and return its result as JSON.
This exists for computation the app must do BEFORE a contract exists or that never depends on chain state: e.g. deriving persistentHash commitments (signer/threshold/proposal) so a privacy contract's deploy-time arguments are computed by the contract's OWN pure circuits rather than a hand-reimplemented hash that could silently diverge. Because it runs against initialState, only PURE circuits (no ledger reads) are meaningful here; an impure circuit would see empty state.
Unlike read this needs no address — a handle built with only the contract JS (via MidnightContract.local) suffices. Same JSON encoding as read (BigInt → decimal string, Bytes → hex, structs preserved).