LIVE
TASKS 24H065 policiesCOMPLIANT0.0%0 attestedOPERATORS32 signingRESTAKED4e-15 NEWT—MEDIAN RESPONSE36sp99 48.0sRE-VERIFIED 24H—0 invalidatedBLOCK11,958,597Sepolia
NEWTON PROTOCOL · POLICY CLIENT

0x5f75…6880revision 16 · superseded

0x5f75377870f4e477bf5ad149cfc9549af1ba6880 · 1 of 8 policies · Sepolia
Revision 16 is superseded. Every attestation minted against 0x17c4a105…4356 was revoked when revision 17 landed on 2026-09-30 — regardless of its expiry block, because the client’s policyId no longer matches. Tasks created under it still replay correctly: each one carries this exact set as its own frozen snapshot. See revision 19, the current set →
REVISION
16 of 19
POLICIES
1 of 8
DISTINCT
1
RESPONSE EXPIRY
300 blocks
CHAIN
Sepolia
TASKS · 24H
—
ALLOW RATE
—
Every policy must allowFail-closed, and no short-circuit: every policy is evaluated even after one has denied, and a single denial denies the intent. The response expires 300 blocks after its reference block — the shortest expireAfter in the set, on slot 0.

Policies — 1

one Rego + WASM pair per slot
  1. 0
    0xa1ac0aef68ff48a383fe6ab17590a63a0b0ff08e0xa1ac…f08enot in factory registry300 blocksbounds set expiry
    wasmnone — pure Regorego
    — rules— denyno WASMspecHash 0x664504ff…
    listnot in schema0x2614CdfC0119B509c0B98236545751Bc19DfcF22
    swap_selectornot in schema0x9d555cf7
    threshold_hexnot in schema0000000000000000000000000000000000000000000000000000000000000000
    deposit_selectornot in schema0xf08a814e
    policyParams — 197 bytes on chain0x7b22737761705f73656c6563746f72223a2230783964353535636637222c226465706f7369745f73656c6563746f72223a2230786630386138313465222c227468726573686f6c645f686578223a2230303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030222c226c697374223a22307832363134436466433031313942353039633042393832333635343537353142633139446663463232227d
Each module is evaluated against its own input — {"params": <this slot’s policyParams>, "wasm": <this slot’s WASM output>}. There is no shared data.wasm object and no cross-slot namespace, so slot 1 cannot read slot 0’s WASM output and a policy cannot be written to depend on its neighbours.
SET IDENTITY
POLICY_SET_DOMAINkeccak256("newton.policy.set")
chainId11155111
revision16
policies0xa1ac…f08e@300
Task managerreads getPolicies() at task creation, then never again
policyId = keccak256(abi.encode(POLICY_SET_DOMAIN, chainId, client, revision, policies)), where policies is the complete ordered array with each entry’s parameters and expiry. Order is part of it, so a reorder alone is a new id.
WHAT A TASK FREEZES
A task carries this exact ordered set as its own snapshot, plus one WASM input per slot. Response validation reads that snapshot and never re-reads the client, so reconfiguring mid-flight cannot change what an in-flight task means — and replay proves it by recomputing the policyId over the snapshot and comparing against the task’s own.
The bound is MAX_POLICIES = 8, enforced on chain and mirrored in the operator, the enclave and the proof guest. An oversize set is rejected, never truncated, and an empty one is rejected too — there is no vacuous allow.

Tasks under revision 16

5 of 5 matchingExport CSVJSON
TaskSenderPolicyFunctionSignersResultAge
The export carries one row per task with the frozen policy set in slot order, and it is the complete filtered history rather than this page. It has no per-policy verdict column: TaskResponse.allowed is a single boolean for the whole set, so which policy denied a task is in no record.