{"address_schema_version":1,"chain":"base","default_token":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","fixtures":[{"address":"0xc87a06DEE4c0E85912296002617120BBfd5EF990","evidence":"eth_getCode returns 0x (no code); USDC.transfer(addr,0) from signer simulates ok.","expected":{"classification":"eoa","code_present":false,"direct_recipient_plausibility":"plausible_direct_recipient","proxy_indication":"none_detected","transfer_path_result":"simulated_ok"},"label":"known EOA (REV, our shared Base payTo)"},{"address":"0x4200000000000000000000000000000000000006","evidence":"eth_getCode non-empty; EIP-1967 impl slot is zero and bytecode is not the EIP-1167 prefix.","expected":{"classification":"contract","code_present":true,"direct_recipient_plausibility":"requires_application_specific_path","proxy_indication":"none_detected","transfer_path_result":"simulated_ok"},"label":"known plain contract (Base WETH predeploy, not a proxy)"},{"address":"0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA","evidence":"eth_getStorageAt(EIP-1967 impl slot) is non-zero (points at the implementation).","expected":{"classification":"contract","code_present":true,"direct_recipient_plausibility":"requires_application_specific_path","proxy_indication":"eip1967","transfer_path_result":"simulated_ok"},"label":"known EIP-1967 proxy (USDbC, bridged USD Coin)"}],"note":"Each expected value was verified live against Base RPC at build time. These three lightweight records are retained for backward compatibility. A transfer_path=simulated_revert case is now provided as case 'genuine_transfer_revert' in signed_envelopes (transfer to the zero address \u2014 ERC-20 forbids transfer to address(0), a permanent non-fabricated on-chain revert). The four full signed end-to-end envelopes (real signatures, canonical bodies, expectations, reason codes) are under 'signed_envelopes'.","signed_envelopes":{"_comment":"Signed end-to-end envelope fixtures for GET /payable/address (address_schema_version 1), built to the Maha/Rajan spec (2026-08-26). ADDITIVE: address_schema_version stays 1. Each envelope carries a FULL schema-valid response with a REAL signature from the service signing path (_eval_address -> _signed), plus static expectations, derived reason codes, a fixed evaluation_time, a proof-manifest pointer, and the EXACT canonical_body string that was signed (so a verifier can separate signature-contract failures from policy failures).","address_schema_version":1,"chain":"base","default_token":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","envelopes":[{"canonical_body":"{\"address\":\"0xc87a06DEE4c0E85912296002617120BBfd5EF990\",\"address_schema_version\":1,\"chain\":\"base\",\"checked_at\":\"2026-08-26T18:06:07.642363+00:00\",\"classification\":\"eoa\",\"code_present\":false,\"direct_recipient_plausibility\":\"plausible_direct_recipient\",\"freshness_bound_seconds\":60,\"limitations\":{\"classification\":\"eth_getCode at latest block \\u2014 point-in-time; a contract can self-destruct and an EOA can later gain code.\",\"direct_recipient_plausibility\":\"Derived only from EOA/contract classification; a contract may still be a valid recipient via an application-specific path not evaluated here.\",\"freshness\":\"Reflects chain state at checked_at; may be served from cache up to freshness_bound_seconds.\",\"proxy_indication\":\"Detects ONLY EIP-1967 (standard implementation slot) and EIP-1167 (minimal-proxy bytecode). Legacy zeppelinos-slot, other-slot UUPS, and diamond proxies read as none_detected.\",\"scope\":\"does not assess token behavior allowlisting, blocklist state, contract withdrawal authority, or future release success\",\"transfer_path\":\"eth_call simulation at latest block, not an on-chain transfer. A revert may be caused by token blocklist state, a paused token, or non-standard ERC-20 logic; the reason string is reported verbatim \\u2014 blocklist detection is NOT claimed as a feature.\"},\"proxy_indication\":\"none_detected\",\"transfer_path\":{\"method\":\"eth_call 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.transfer(0xc87a06DEE4c0E85912296002617120BBfd5EF990, 0) from=0x41Fb10a9E637C85cE3C1d35c4f059E7de1593fBE (zero-amount; no balance required)\",\"result\":\"simulated_ok\",\"revert_reason\":null,\"token\":\"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"}}","canonical_sha256":"794545d12f5bd7b2aea3c56f669482642973be895a70febdb0f8d8953f85d15c","case":"known_eoa","evaluation_time":"2026-08-26T18:06:07.714583+00:00","evaluation_time_note":"Static timestamp of when this fixture was evaluated and frozen; slightly after response.checked_at. NEVER treat as current settlement evidence \u2014 re-query the live endpoint for a fresh, current signature before acting on any payment.","example_downstream_policy":"approve","expected":{"classification":"eoa","code_present":false,"direct_recipient_plausibility":"plausible_direct_recipient","proxy_indication":"none_detected","transfer_path_result":"simulated_ok","transfer_path_revert_reason":null},"input":{"address":"0xc87a06DEE4c0E85912296002617120BBfd5EF990","chain":"base","token":null},"label":"known EOA (REV, our shared Base payTo) \u2014 the address the preview already uses","proof_manifest":{"generated_at":"2026-08-24T07:29:18.582013+00:00","sha256":"afad74421615403c80862e63b47336ab25d7b948460fcabdbabaabafe41a9809","url":"https://x402.nsgoods.org/proof/index.json","version":"1.0"},"reason_codes":["EOA_NO_CODE","NO_PROXY_DETECTED","TRANSFER_SIM_OK","DIRECT_RECIPIENT_PLAUSIBLE"],"response":{"address":"0xc87a06DEE4c0E85912296002617120BBfd5EF990","address_schema_version":1,"chain":"base","checked_at":"2026-08-26T18:06:07.642363+00:00","classification":"eoa","code_present":false,"direct_recipient_plausibility":"plausible_direct_recipient","freshness_bound_seconds":60,"limitations":{"classification":"eth_getCode at latest block \u2014 point-in-time; a contract can self-destruct and an EOA can later gain code.","direct_recipient_plausibility":"Derived only from EOA/contract classification; a contract may still be a valid recipient via an application-specific path not evaluated here.","freshness":"Reflects chain state at checked_at; may be served from cache up to freshness_bound_seconds.","proxy_indication":"Detects ONLY EIP-1967 (standard implementation slot) and EIP-1167 (minimal-proxy bytecode). Legacy zeppelinos-slot, other-slot UUPS, and diamond proxies read as none_detected.","scope":"does not assess token behavior allowlisting, blocklist state, contract withdrawal authority, or future release success","transfer_path":"eth_call simulation at latest block, not an on-chain transfer. A revert may be caused by token blocklist state, a paused token, or non-standard ERC-20 logic; the reason string is reported verbatim \u2014 blocklist detection is NOT claimed as a feature."},"proxy_indication":"none_detected","signature":"0xefa070a987d7022e6e24e5100cc308433a50b677cf31cc22e9cfe2609c5e6e2e51af03ed76e100ec557ab64aa47a60724d2fe0778bbec1bbd38615e44b7672111c","signed_by":"0x41Fb10a9E637C85cE3C1d35c4f059E7de1593fBE","transfer_path":{"method":"eth_call 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.transfer(0xc87a06DEE4c0E85912296002617120BBfd5EF990, 0) from=0x41Fb10a9E637C85cE3C1d35c4f059E7de1593fBE (zero-amount; no balance required)","result":"simulated_ok","revert_reason":null,"token":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},{"canonical_body":"{\"address\":\"0x4200000000000000000000000000000000000006\",\"address_schema_version\":1,\"chain\":\"base\",\"checked_at\":\"2026-08-26T18:06:07.714669+00:00\",\"classification\":\"contract\",\"code_present\":true,\"direct_recipient_plausibility\":\"requires_application_specific_path\",\"freshness_bound_seconds\":60,\"limitations\":{\"classification\":\"eth_getCode at latest block \\u2014 point-in-time; a contract can self-destruct and an EOA can later gain code.\",\"direct_recipient_plausibility\":\"Derived only from EOA/contract classification; a contract may still be a valid recipient via an application-specific path not evaluated here.\",\"freshness\":\"Reflects chain state at checked_at; may be served from cache up to freshness_bound_seconds.\",\"proxy_indication\":\"Detects ONLY EIP-1967 (standard implementation slot) and EIP-1167 (minimal-proxy bytecode). Legacy zeppelinos-slot, other-slot UUPS, and diamond proxies read as none_detected.\",\"scope\":\"does not assess token behavior allowlisting, blocklist state, contract withdrawal authority, or future release success\",\"transfer_path\":\"eth_call simulation at latest block, not an on-chain transfer. A revert may be caused by token blocklist state, a paused token, or non-standard ERC-20 logic; the reason string is reported verbatim \\u2014 blocklist detection is NOT claimed as a feature.\"},\"proxy_indication\":\"none_detected\",\"transfer_path\":{\"method\":\"eth_call 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.transfer(0x4200000000000000000000000000000000000006, 0) from=0x41Fb10a9E637C85cE3C1d35c4f059E7de1593fBE (zero-amount; no balance required)\",\"result\":\"simulated_ok\",\"revert_reason\":null,\"token\":\"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"}}","canonical_sha256":"6480b953065c67bd2b6e65c3a7b60b5781a6aaba4e2d80166fecc0ff41422676","case":"plain_contract","evaluation_time":"2026-08-26T18:06:07.817787+00:00","evaluation_time_note":"Static timestamp of when this fixture was evaluated and frozen; slightly after response.checked_at. NEVER treat as current settlement evidence \u2014 re-query the live endpoint for a fresh, current signature before acting on any payment.","example_downstream_policy":"review","expected":{"classification":"contract","code_present":true,"direct_recipient_plausibility":"requires_application_specific_path","proxy_indication":"none_detected","transfer_path_result":"simulated_ok","transfer_path_revert_reason":null},"input":{"address":"0x4200000000000000000000000000000000000006","chain":"base","token":null},"label":"plain contract, NOT a proxy (Base WETH predeploy 0x4200..0006)","proof_manifest":{"generated_at":"2026-08-24T07:29:18.582013+00:00","sha256":"afad74421615403c80862e63b47336ab25d7b948460fcabdbabaabafe41a9809","url":"https://x402.nsgoods.org/proof/index.json","version":"1.0"},"reason_codes":["CONTRACT_CODE_PRESENT","NO_PROXY_DETECTED","TRANSFER_SIM_OK","REQUIRES_APP_SPECIFIC_PATH"],"response":{"address":"0x4200000000000000000000000000000000000006","address_schema_version":1,"chain":"base","checked_at":"2026-08-26T18:06:07.714669+00:00","classification":"contract","code_present":true,"direct_recipient_plausibility":"requires_application_specific_path","freshness_bound_seconds":60,"limitations":{"classification":"eth_getCode at latest block \u2014 point-in-time; a contract can self-destruct and an EOA can later gain code.","direct_recipient_plausibility":"Derived only from EOA/contract classification; a contract may still be a valid recipient via an application-specific path not evaluated here.","freshness":"Reflects chain state at checked_at; may be served from cache up to freshness_bound_seconds.","proxy_indication":"Detects ONLY EIP-1967 (standard implementation slot) and EIP-1167 (minimal-proxy bytecode). Legacy zeppelinos-slot, other-slot UUPS, and diamond proxies read as none_detected.","scope":"does not assess token behavior allowlisting, blocklist state, contract withdrawal authority, or future release success","transfer_path":"eth_call simulation at latest block, not an on-chain transfer. A revert may be caused by token blocklist state, a paused token, or non-standard ERC-20 logic; the reason string is reported verbatim \u2014 blocklist detection is NOT claimed as a feature."},"proxy_indication":"none_detected","signature":"0x0d2a00cb0080db3b0c5754d960247cf1a64862d843daddd2d8cdca7796b199be6862fe3a6e676939ded1dd103075fe2cddde3a7458827e60769518cf41b7c7961c","signed_by":"0x41Fb10a9E637C85cE3C1d35c4f059E7de1593fBE","transfer_path":{"method":"eth_call 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.transfer(0x4200000000000000000000000000000000000006, 0) from=0x41Fb10a9E637C85cE3C1d35c4f059E7de1593fBE (zero-amount; no balance required)","result":"simulated_ok","revert_reason":null,"token":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},{"canonical_body":"{\"address\":\"0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA\",\"address_schema_version\":1,\"chain\":\"base\",\"checked_at\":\"2026-08-26T18:06:07.817929+00:00\",\"classification\":\"contract\",\"code_present\":true,\"direct_recipient_plausibility\":\"requires_application_specific_path\",\"freshness_bound_seconds\":60,\"limitations\":{\"classification\":\"eth_getCode at latest block \\u2014 point-in-time; a contract can self-destruct and an EOA can later gain code.\",\"direct_recipient_plausibility\":\"Derived only from EOA/contract classification; a contract may still be a valid recipient via an application-specific path not evaluated here.\",\"freshness\":\"Reflects chain state at checked_at; may be served from cache up to freshness_bound_seconds.\",\"proxy_indication\":\"Detects ONLY EIP-1967 (standard implementation slot) and EIP-1167 (minimal-proxy bytecode). Legacy zeppelinos-slot, other-slot UUPS, and diamond proxies read as none_detected.\",\"scope\":\"does not assess token behavior allowlisting, blocklist state, contract withdrawal authority, or future release success\",\"transfer_path\":\"eth_call simulation at latest block, not an on-chain transfer. A revert may be caused by token blocklist state, a paused token, or non-standard ERC-20 logic; the reason string is reported verbatim \\u2014 blocklist detection is NOT claimed as a feature.\"},\"proxy_indication\":\"eip1967\",\"transfer_path\":{\"method\":\"eth_call 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.transfer(0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA, 0) from=0x41Fb10a9E637C85cE3C1d35c4f059E7de1593fBE (zero-amount; no balance required)\",\"result\":\"simulated_ok\",\"revert_reason\":null,\"token\":\"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"}}","canonical_sha256":"cbfd1ebadd410f928b483b05c937b03a61be9917812c7c2764ff1ad6725288e9","case":"eip1967_proxy","evaluation_time":"2026-08-26T18:06:07.922514+00:00","evaluation_time_note":"Static timestamp of when this fixture was evaluated and frozen; slightly after response.checked_at. NEVER treat as current settlement evidence \u2014 re-query the live endpoint for a fresh, current signature before acting on any payment.","example_downstream_policy":"review","expected":{"classification":"contract","code_present":true,"direct_recipient_plausibility":"requires_application_specific_path","proxy_indication":"eip1967","transfer_path_result":"simulated_ok","transfer_path_revert_reason":null},"input":{"address":"0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA","chain":"base","token":null},"label":"EIP-1967 proxy (USDbC, bridged USD Coin)","proof_manifest":{"generated_at":"2026-08-24T07:29:18.582013+00:00","sha256":"afad74421615403c80862e63b47336ab25d7b948460fcabdbabaabafe41a9809","url":"https://x402.nsgoods.org/proof/index.json","version":"1.0"},"reason_codes":["CONTRACT_CODE_PRESENT","PROXY_EIP1967","TRANSFER_SIM_OK","REQUIRES_APP_SPECIFIC_PATH"],"response":{"address":"0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA","address_schema_version":1,"chain":"base","checked_at":"2026-08-26T18:06:07.817929+00:00","classification":"contract","code_present":true,"direct_recipient_plausibility":"requires_application_specific_path","freshness_bound_seconds":60,"limitations":{"classification":"eth_getCode at latest block \u2014 point-in-time; a contract can self-destruct and an EOA can later gain code.","direct_recipient_plausibility":"Derived only from EOA/contract classification; a contract may still be a valid recipient via an application-specific path not evaluated here.","freshness":"Reflects chain state at checked_at; may be served from cache up to freshness_bound_seconds.","proxy_indication":"Detects ONLY EIP-1967 (standard implementation slot) and EIP-1167 (minimal-proxy bytecode). Legacy zeppelinos-slot, other-slot UUPS, and diamond proxies read as none_detected.","scope":"does not assess token behavior allowlisting, blocklist state, contract withdrawal authority, or future release success","transfer_path":"eth_call simulation at latest block, not an on-chain transfer. A revert may be caused by token blocklist state, a paused token, or non-standard ERC-20 logic; the reason string is reported verbatim \u2014 blocklist detection is NOT claimed as a feature."},"proxy_indication":"eip1967","signature":"0x083790fb3cc9fb532e7c061c5d3dc32b0482c080a778e6dfb4fe862c659bb3bf3bc4e200a5ad5dd6fdf849681b11bbe067cecb698edc9eee084d92109a82f81e1c","signed_by":"0x41Fb10a9E637C85cE3C1d35c4f059E7de1593fBE","transfer_path":{"method":"eth_call 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.transfer(0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA, 0) from=0x41Fb10a9E637C85cE3C1d35c4f059E7de1593fBE (zero-amount; no balance required)","result":"simulated_ok","revert_reason":null,"token":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},{"canonical_body":"{\"address\":\"0x0000000000000000000000000000000000000000\",\"address_schema_version\":1,\"chain\":\"base\",\"checked_at\":\"2026-08-26T18:06:07.922595+00:00\",\"classification\":\"eoa\",\"code_present\":false,\"direct_recipient_plausibility\":\"plausible_direct_recipient\",\"freshness_bound_seconds\":60,\"limitations\":{\"classification\":\"eth_getCode at latest block \\u2014 point-in-time; a contract can self-destruct and an EOA can later gain code.\",\"direct_recipient_plausibility\":\"Derived only from EOA/contract classification; a contract may still be a valid recipient via an application-specific path not evaluated here.\",\"freshness\":\"Reflects chain state at checked_at; may be served from cache up to freshness_bound_seconds.\",\"proxy_indication\":\"Detects ONLY EIP-1967 (standard implementation slot) and EIP-1167 (minimal-proxy bytecode). Legacy zeppelinos-slot, other-slot UUPS, and diamond proxies read as none_detected.\",\"scope\":\"does not assess token behavior allowlisting, blocklist state, contract withdrawal authority, or future release success\",\"transfer_path\":\"eth_call simulation at latest block, not an on-chain transfer. A revert may be caused by token blocklist state, a paused token, or non-standard ERC-20 logic; the reason string is reported verbatim \\u2014 blocklist detection is NOT claimed as a feature.\"},\"proxy_indication\":\"none_detected\",\"transfer_path\":{\"method\":\"eth_call 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.transfer(0x0000000000000000000000000000000000000000, 1) from=0x940181a94A35A4569E4529A3CDfB74e38FD98631 (zero-amount also reverted 'ERC20: transfer to the zero address')\",\"result\":\"simulated_revert\",\"revert_reason\":\"ERC20: transfer to the zero address\",\"token\":\"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"}}","canonical_sha256":"9049245d6a4e342467e563c3ea514c09de2da35541cbcc16a0714a89c0fa7fa4","case":"genuine_transfer_revert","evaluation_time":"2026-08-26T18:06:08.022336+00:00","evaluation_time_note":"Static timestamp of when this fixture was evaluated and frozen; slightly after response.checked_at. NEVER treat as current settlement evidence \u2014 re-query the live endpoint for a fresh, current signature before acting on any payment.","example_downstream_policy":"deny","expected":{"classification":"eoa","code_present":false,"direct_recipient_plausibility":"plausible_direct_recipient","proxy_indication":"none_detected","transfer_path_result":"simulated_revert","transfer_path_revert_reason":"ERC20: transfer to the zero address"},"input":{"address":"0x0000000000000000000000000000000000000000","chain":"base","token":null},"label":"genuine transfer revert (zero address \u2014 ERC-20 forbids transfer to address(0); a permanent, non-fabricated on-chain revert)","proof_manifest":{"generated_at":"2026-08-24T07:29:18.582013+00:00","sha256":"afad74421615403c80862e63b47336ab25d7b948460fcabdbabaabafe41a9809","url":"https://x402.nsgoods.org/proof/index.json","version":"1.0"},"reason_codes":["EOA_NO_CODE","NO_PROXY_DETECTED","TRANSFER_SIM_REVERT","REVERT_REASON:ERC20: transfer to the zero address","DIRECT_RECIPIENT_PLAUSIBLE"],"response":{"address":"0x0000000000000000000000000000000000000000","address_schema_version":1,"chain":"base","checked_at":"2026-08-26T18:06:07.922595+00:00","classification":"eoa","code_present":false,"direct_recipient_plausibility":"plausible_direct_recipient","freshness_bound_seconds":60,"limitations":{"classification":"eth_getCode at latest block \u2014 point-in-time; a contract can self-destruct and an EOA can later gain code.","direct_recipient_plausibility":"Derived only from EOA/contract classification; a contract may still be a valid recipient via an application-specific path not evaluated here.","freshness":"Reflects chain state at checked_at; may be served from cache up to freshness_bound_seconds.","proxy_indication":"Detects ONLY EIP-1967 (standard implementation slot) and EIP-1167 (minimal-proxy bytecode). Legacy zeppelinos-slot, other-slot UUPS, and diamond proxies read as none_detected.","scope":"does not assess token behavior allowlisting, blocklist state, contract withdrawal authority, or future release success","transfer_path":"eth_call simulation at latest block, not an on-chain transfer. A revert may be caused by token blocklist state, a paused token, or non-standard ERC-20 logic; the reason string is reported verbatim \u2014 blocklist detection is NOT claimed as a feature."},"proxy_indication":"none_detected","signature":"0xad198f43033f87badb10e7fabf3ef900322cabb325ec09f6d50ffbe84745edec67f598ee6b5a3ed011a0dc7c6dfe3948bb6ec58e1871227d534c4c9f90237caf1b","signed_by":"0x41Fb10a9E637C85cE3C1d35c4f059E7de1593fBE","transfer_path":{"method":"eth_call 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.transfer(0x0000000000000000000000000000000000000000, 1) from=0x940181a94A35A4569E4529A3CDfB74e38FD98631 (zero-amount also reverted 'ERC20: transfer to the zero address')","result":"simulated_revert","revert_reason":"ERC20: transfer to the zero address","token":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}}],"example_downstream_policy_note":"example_downstream_policy is an ILLUSTRATIVE mapping of this response to a generic approve/review/deny outcome for a hypothetical downstream consumer. It is NOT part of the address_schema_version-1 contract, NOT signed, and NOT specific to any integrator. Consumers define their own policy; this is only a worked example.","spec_source":"Maha/Rajan written commitment 2026-08-26: pin fixture digest + add all four as end-to-end regression cases.","verification":"For each envelope: strip signed_by+signature from response, canonicalise json.dumps(sort_keys=True,separators=(',',':'),ensure_ascii=True) -> must equal canonical_body; sha256(canonical_body)==canonical_sha256; EIP-191 recover_message(encode_defunct(text=canonical_body), signature) == response.signed_by."}}
