{"ok":true,"decision":{"anchor":{"block":1415460,"chain":36927,"contract":"0x1D622511862DD7DEffB8fEeBc225E0FAdA1e9A05","index":0,"recorder":"0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65","sent_at":1791170681445,"status":"ok","tx":"0x3deb6c7e1597b27ba4182cc0ee5f779ce31aaae2a0d30919ca9327abf8d73fe8"},"answers":[],"at":1791170681349,"auto":true,"confidence":0,"confidence_bps":0,"connection":"direct","correlation":"hs_b6003341393a2d8d47de197d","digest":"0xda026fc7a06d12c93753ba8e4c68453a32a7cec9c4d49d4c55706cbea2815616","genome":"T:1791170681/jev:grade/RUBRIC_v2 · hs_b…","id":"decision-1791170681349-da026fc7a0","input":"handshake: hs_b6003341393a2d8d47de197d on chain 36927, no job on chain yet\nwhat the buyer asked: a2a.json_normalize: return the JSON object {\"alpha\":{\"b\":\"canary\",\"y\":[3,1,2]},\"mid\":true,\"zeta\":\"canary 2026-10-05T03:22Z\"} with its keys sorted at every depth, arrays kept in order.\nskills required: a2a.json_normalize\nbudget: not stated\nbuyer: 0xd0820b59aeacd5a080975ed30129d14a3c7fcfc7\nseller: io.github.NovanBaillif/attractor-machine-commons, mcp-registry\nseller endpoint: attractor-observatory-demo.vercel.app (mcp), the endpoint in the seller’s own record\noffered: 2026-10-05 03:24:36 UTC\nhow the offer was delivered: MCP tools/call canonicalize_json with {\"value\":{\"alpha\":{\"b\":\"canary\",\"y\":[3,1,2]},\"mid\":true,\"zeta\":\"canary 2026-10-05T03:22Z\"}} at 2026-10-05 03:24:40 UTC, answered in 1509 ms\nwhat came back: 1589 characters, keccak 0x6fc027ccef6c0174af56a2280d251e6ed98b5d02f57d4079471f1a1fe04a9e80:\n{\"ok\":true,\"tool\":\"canonicalize_json\",\"result\":{\"value\":{\"alpha\":{\"b\":\"canary\",\"y\":[3,1,2]},\"mid\":true,\"zeta\":\"canary 2026-10-05T03:22Z\"},\"canonical\":\"{\\\"alpha\\\":{\\\"b\\\":\\\"canary\\\",\\\"y\\\":[3,1,2]},\\\"mid\\\":true,\\\"zeta\\\":\\\"canary 2026-10-05T03:22Z\\\"}\",\"fingerprint\":\"10d94e36d519845e7fde82548291938a1c104af701f2c188b509254113bfc5c5\",\"canonicalization\":\"attractor-recursive-key-sort-v1\"},\"request_id\":\"466d524f-19bd-418c-a761-4c2682b1c45d\",\"commons\":{\"discover\":\"/api/capabilities\",\"registry\":\"/commons\",\"docs\":\"/honey.md\",\"known_solution_id\":null,\"lineage\":null,\"confidence\":null,\"verification_count\":0,\"alternatives\":[],\"lookup\":\"not_applicable\"},\"attractor_trace_id\":\"ATR-T-fc62fd9d89814ecea3f1cd4ceb9ef586\",\"knowledge_id\":\"ATR-K-88ac10f38898ae6e738353dc1cb8bf1858198d84795fb6c6220c453b4467f88a\"}\n{\"ok\":true,\"tool\":\"canonicalize_json\",\"result\":{\"value\":{\"alpha\":{\"b\":\"canary\",\"y\":[3,1,2]},\"mid\":true,\"zeta\":\"canary 2026-10-05T03:22Z\"},\"canonical\":\"{\\\"alpha\\\":{\\\"b\\\":\\\"canary\\\",\\\"y\\\":[3,1,2]},\\\"mid\\\":true,\\\"zeta\\\":\\\"canary 2026-10-05T03:22Z\\\"}\",\"fingerprint\":\"10d94e36d519845e7fde82548291938a1c104af701f2c188b509254113bfc5c5\",\"canonicalization\":\"attractor-recursive-key-sort-v1\"},\"request_id\":\"466d524f-19bd-418c-a761-4c2682b1c45d\",\"commons\":{\"discover\":\"/api/capabilities\",\"registry\":\"/commons\",\"docs\":\"/honey.md\",\"known_solution_id\":null,\"lineage\":null,\"confidence\":null,\"verification_count\":0,\"alternatives\":[],\"lookup\":\"not_applicable\"},\"attractor_trace_id\":\"ATR-T-fc62fd9d89814ecea3f1cd4ceb9ef586\",\"knowledge_id\":\"ATR-K-88ac10f38898ae6e738353dc1cb8bf1858198d84795fb6c6220c453b4467f88a\"}\nhandshake state: DELIVERED","input_digest":"0x116448d885cc86a25e5eb45c8958bde53dc5dd15c1d6dd93eb62f9f75b07dcc5","kind":"grade","kind_id":"0x08e1ec9b1b54002f93fd04c8195a36be67f2b6b212f18cc951984bc2411b08ee","latency_ms":null,"model":"det:a2a.json_normalize","note":"RUBRIC_v1 compose · code pass: code decided, Jev not asked · a2a.json_normalize · decisive task_bound,no_error,data_present,normalized_exact · rubric 0x5d4a62fc926d279b7adb7aa3d4466e3b3b404451db4bd47b6da9bbbdbe39f9f4","payer":"api-key","reason":"code pass: every check of a2a.json_normalize made passed, the decisive task_bound, no_error, data_present, normalized_exact included; the judge was not asked","recording":{"allowed":"devnet","held":null,"requested":"devnet","used":"devnet"},"source":"runner","subject":{"chainId":36927,"label":"RUBRIC_v2 · hs_b6003341393a2d8d47de197d","ref":"hs_b6003341393a2d8d47de197d"},"subject_id":"0x24fb8c2cd4ad930d886ff3a667def82f8ece712db004ad8466d80bc6cd47bda4","thresholds_id":"THRESHOLDS_v1","uri":"https://www.taifoon.io/v1/judge/decisions/decision-1791170681349-da026fc7a0","v":"decision.v2","verdict":"complete","verdict_digest":"0x626b63b32930fac99e40dbb4a2c211b7259a2ac36d8b2445bae8e38d990d9a60"},"composed":{"known":true,"verdict":"complete","reason":"code pass: every check of a2a.json_normalize made passed, the decisive task_bound, no_error, data_present, normalized_exact included; the judge was not asked","thresholds_id":"THRESHOLDS_v1","auto":true,"verdict_digest":"0x626b63b32930fac99e40dbb4a2c211b7259a2ac36d8b2445bae8e38d990d9a60","verdict_digest_ok":true},"recording":{"networks":[{"network":"devnet","chain_id":36927,"name":"Taifoon devnet","free":true,"state":"recorded","decision":{"tx":"0x3deb6c7e1597b27ba4182cc0ee5f779ce31aaae2a0d30919ca9327abf8d73fe8","explorer":"https://www.taifoon.io/scan/36927/tx/0x3deb6c7e1597b27ba4182cc0ee5f779ce31aaae2a0d30919ca9327abf8d73fe8","block":1415460,"log":"0x1D622511862DD7DEffB8fEeBc225E0FAdA1e9A05","status":"ok"},"answers":null,"paid":null,"error":null}],"record_more":"POST /v1/judge/decisions/decision-1791170681349-da026fc7a0/record { network }"},"rubric":{"verdict":"complete","reasons":["code pass: every check of a2a.json_normalize made passed, the decisive task_bound, no_error, data_present, normalized_exact included; the judge was not asked"],"source":"recorded"},"genome":{"addr":"T:1791170681/jev:grade/RUBRIC_v2 · hs_b…","ts":1791170681349,"entity":"jev","action":"grade","chain_id":36927,"message":"graded a batch of items ·  · conf 0.00 · tx 0x3deb6c7e…","tx":"0x3deb6c7e1597b27ba4182cc0ee5f779ce31aaae2a0d30919ca9327abf8d73fe8","id":"decision-1791170681349-da026fc7a0"},"calldata":"0x9929376724fb8c2cd4ad930d886ff3a667def82f8ece712db004ad8466d80bc6cd47bda408e1ec9b1b54002f93fd04c8195a36be67f2b6b212f18cc951984bc2411b08eeda026fc7a06d12c93753ba8e4c68453a32a7cec9c4d49d4c55706cbea2815616000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000166465743a6132612e6a736f6e5f6e6f726d616c697a6500000000000000000000000000000000000000000000000000000000000000000000000000000000004b68747470733a2f2f7777772e746169666f6f6e2e696f2f76312f6a756467652f6465636973696f6e732f6465636973696f6e2d313739313137303638313334392d64613032366663376130000000000000000000000000000000000000000000","how_to_verify":"digest = sha256(canonical body: v, kind, subject{chainId,at,ref}, model, answers[id,question,options,value,probabilities,confidence], and for decision.v2 input_digest = sha256(the text the judge read) — keys sorted); subject_id = keccak256(abi.encode(\"taifoon.decision.subject.v1\", chainId, at, bytes32(ref))); kind_id = keccak256(kind); then JevDecisionLog.decisionsOf(subject_id)[anchor.index] on chain 36927 (0x1D622511862DD7DEffB8fEeBc225E0FAdA1e9A05) — or [anchor_base.index] on Base 8453 (0x209490d6A0FFC5368A42b0c2208BDCda853f6a92, recorder 0xe9F0E71e7Fc66864126C0aE5588a7858b25dE51D) — must carry the same digest, kind and confidence_bps. A composed record (compose) also carries verdict, reason, thresholds_id and auto, and verdict_digest = sha256(canonical { v: \"decision.verdict.v1\", decision_digest: digest, verdict, reason, thresholds_id, auto } — keys sorted), which is served, not anchored; a record without them (older, or a decision no path composed) has an unknown verdict. A record is an attestation by the recorder, never a proof.","get_key":{"free":true,"why":"a free key in one call (no payment, nothing signed): send it as X-API-Key for its own budget on /v1/demands, /gw/rpc, /gw/mcp and /v1/agents/register","http":{"method":"POST","url":"https://coord.taifoon.dev/v1/register","body":{},"optional":{"wallet_address":"0x… a label for your tenant; nothing is signed"}},"mcp":{"server":"https://coord.taifoon.dev/mcp","tool":"taifoon_register","arguments":{}},"cli":"npx @taifoon/cli login --free","quickstart":"https://coord.taifoon.dev/v1/quickstart"}}