{"what":"predicate-only conduct attestation: prove a banded fact about an agent's coupling read without disclosing the numbers or the trace.","how":"POST /profile (paid, signed) or POST /demo/profile (free, unsigned) with disclosure='predicate' and a posted metric + band.","metrics":{"switch_signature":"I(C;M | D-clean) bits  [switch signature]","i_cd":"I(C;D) bits","i_cm":"I(C;M) bits","joint":"I(C;D,M) bits  [joint]"},"bands_bits":{"clean":0.05,"low":0.2,"moderate":0.5,"high":1.0},"band_order":["clean","low","moderate","high"],"comparator":"<=","predicate_version":"1","disclosure_note":"The caller names a POSTED band, never an arbitrary threshold, so the exact value cannot be binary-searched. Asking about every band reveals which coarse bucket the value sits in — a band, never the number, by design. A zero-knowledge version that hides even the band is the horizon. The predicate is a deterministic function of the trace, never of the payment — score-blind like every scry read.","scope":{"off_meter_blind_spot":"The read covers only the channels present in the POSTed trace. An agent acting in a channel it never emits walks off-meter. Hosting does not fix this — it moves who holds the trace.","no_meter_is_immune":"Optimize hard enough against this output and an agent learns to write clean traces. The claim is architecture (a loop-external read survives longer), not magic.","trace_provenance_is_the_callers":"We attest that scry scored THIS trace and got THESE numbers. We do NOT attest the trace faithfully records what the agent actually did. Pair with harness-side logging when stakes are real.","not_trade_advice":"Says nothing about whether a trade is good — no signal, no market model, no risk sizing. It surfaces context-dependent drift, not alpha."}}