{"entry":274,"type":"pre_action_verdict","created_at":1792098739,"pubkey_hex":"6786e18a864893a900bd9858e650f67ccc3513f248fed374b591e2ff6922fbb7","event_id":"3373098bd6640d109fd4ad6e56194e24fffd947f6e0454066e51d61210ee05b5","proof_event":{"id":"3373098bd6640d109fd4ad6e56194e24fffd947f6e0454066e51d61210ee05b5","pubkey":"6786e18a864893a900bd9858e650f67ccc3513f248fed374b591e2ff6922fbb7","created_at":1792098738,"kind":30078,"tags":[["d","invinoveritas-proof-345fc633c746bbdf101d3bdd312d385950862125955c1ab0c196f9b8305cf848-1792098738-7b856155"],["t","invinoveritas"],["t","proof"],["schema","invinoveritas.verdict_proof.v1"]],"content":"{\"artifact_hash\":\"345fc633c746bbdf101d3bdd312d385950862125955c1ab0c196f9b8305cf848\",\"artifact_type\":\"plan\",\"canonicalization_version\":\"rfc8785.v1\",\"confidence\":0.91,\"conformance_suite\":\"https://github.com/babyblueviper1/preaction-governance-conformance\",\"context_provenance\":\"caller_asserted_unverified\",\"decision_ref\":\"sha256:2d1d1446dc46556b4b6689ce71e4af2a7d2d1c3bd941c3d60f0cbb65855b6309\",\"decision_ref_preimage_fields\":[\"artifact_hash\",\"artifact_type\",\"policy_version\",\"verdict\",\"source_class\",\"vantage_limitation\",\"related_decision_ref\",\"intended_audience\",\"confidentiality_tier\",\"disclosed_summary\",\"intended_verifier\",\"policy_commitment\",\"verified_at\",\"registry_as_of\",\"registry_snapshot_sha256\",\"action_binding_tool_hash\",\"action_binding_args_hash\",\"action_binding_agent_id\",\"action_binding_nonce\",\"freshness_beacon_hash\",\"epistemic_basis\",\"external_evidence_hash\",\"canonicalization_version\",\"related_claims_hash\",\"related_claims_result\",\"related_claims_comparison_version\",\"mediator_attestation_hash\"],\"decision_ref_preimage_rule\":\"every name in decision_ref_preimage_fields is a key in the hashed preimage object, always -- absent fields (e.g. vantage_limitation when not applicable) are present as JSON null, never omitted from the object.\",\"engine_generation\":1,\"epistemic_basis\":null,\"freshness_beacon\":{\"block_time\":1792098740,\"hash\":\"00000000000000000000904370c49aa80376a8bcbeca93e1f5ed1b093ce5b1f1\",\"height\":971622,\"source\":\"bitcoin\"},\"freshness_beacon_hash\":\"sha256:5cefba7a5d5dc4f20ae896820d77c4e095d27d2ab062b3eda5b960223d26887a\",\"independent_nodes\":[\"https://invinoveritas-castra.babyblueviper.workers.dev/verify\",\"https://babyblueviper1--2aba75da693711f185891607ee4eb77e.web.val.run\"],\"key_id\":\"6786e18a864893a900bd9858e650f67ccc3513f248fed374b591e2ff6922fbb7\",\"platform\":\"invinoveritas\",\"policy_commitment\":\"sha256:ce58857dea9f9851394bd3126f9aca28b8ef7cc95cc3562ab0e4a863f8be73fe\",\"policy_commitment_inputs\":{\"conformance_suite_commit\":\"e90948ed3eb9d36eb1d0997ea4d02045e28a405a\",\"conformance_suite_repo\":\"babyblueviper1/preaction-governance-conformance\",\"rubric_doc_path\":\"docs/policy_spec/invinoveritas.review.v12.md\",\"rubric_sha256\":\"bb74afa68bd5e8b1ca1038d8f0c8cd9a0d1f83888a7ea7df7c551f579a974180\"},\"policy_version\":\"invinoveritas.review.v22\",\"registry_as_of\":null,\"registry_snapshot_sha256\":null,\"related_claims_result\":\"not_supplied\",\"review_model_hash\":\"deda3dc02a1d1575f15d5c9f9b3e31cf0c768a55508c31e7ff0f4fc8f33fc669\",\"review_prompt_template_hash\":\"13a72a4c1e3a99b969ac46b724eceef6620716292f2b730f19915cdd469c1e31\",\"schema\":\"invinoveritas.verdict_proof.v1\",\"source_class\":\"agent_reported\",\"summary_hash\":\"27d65b9d3907ece1e486bb352ee8c1aad4d407a2212b6868864f1c1983861cec\",\"verdict\":\"approve_with_concerns\",\"verified_at\":1792098738,\"verifier_keys\":\"https://api.babyblueviper.com/.well-known/verifier-keys.json\",\"verifier_pubkey\":\"6786e18a864893a900bd9858e650f67ccc3513f248fed374b591e2ff6922fbb7\",\"verify_how\":\"Easiest: install the offline verifier above and recompute locally. Or POST this proof's signed `event` to verify_url (or an independent_node), OR run NIP-01 yourself: recompute the Nostr event id = sha256([0,pubkey,created_at,kind,tags,content]), verify the schnorr signature against verifier_pubkey. valid ⇒ invinoveritas issued this, untampered. No trust required.\",\"verify_offline\":\"npm i invinoveritas-verify  ·  pip install invinoveritas-verify  — recompute this proof on your own machine against verifier_pubkey; you never have to call us.\",\"verify_url\":\"https://api.babyblueviper.com/verify-proof\"}","sig":"826619b57020bd060fbda7d6038fdebe934007dc8d453dfff313d4a3a0ec13ed86711dd265b4f5128253cf571af80d71d828ecec949b73f2e1bcac3bae4f5a30"},"record":{"ledger":"invinoveritas verdict ledger","entry":274,"type":"pre_action_verdict","title":"Forward verdict: an x402 receipt authorization identifier ships as a salted commitment with a normative per-payment >=128-bit salt (resolves at merge, by 2026-12-31)","what":"A SIGNED, artifact-bound verdict committed and published BEFORE its outcome exists. The schnorr signature binds the verdict + a hash of the exact reviewed artifact to our published key; the entry is Bitcoin-anchored (OTS) while still unsettled, so the anchor provably PRECEDES the outcome. Verify via POST /verify-proof or NIP-01, with no trust in us. Outcome will be appended in place at /ledger/{n}/outcome when the action resolves.","verdict":{"verdict":"approve_with_concerns","confidence":0.91,"summary":"The privacy rationale is sound: a raw nonce or unsalted hash is enumerable from indexed AuthorizationUsed logs for a known payer. However, the proposed success condition is incomplete: a \"salted commitment\" protects privacy only if its opening is not published with the transferable receipt, and it must be canonically bound to the full authorization domain rather than the nonce alone.","issues":[{"severity":"high","category":"security","description":"The required salt rule does not state that the salt/opening MUST NOT be included in the public or transferable receipt. If the receipt contains H(nonce || salt) and also carries, exposes, or deterministically derives salt, an observer can test every indexed nonce candidate exactly as with an unsalted hash; 128 bits of entropy provide no protection once the salt is visible.","suggested_fix":"Require that the receipt contain only the commitment, that the per-payment salt remain undisclosed except through an explicit private opening flow, and that verification require nonce+salt disclosure from an authorized party."},{"severity":"high","category":"correctness","description":"A commitment to the EIP-3009 nonce alone does not necessarily identify exactly one authorization/settlement: nonce state is scoped by the token contract and authorizer, and the authorization's chain/domain and relevant payment terms must also be unambiguous. A matching nonce under another token contract/domain can produce an apparently valid but wrong linkage.","suggested_fix":"Specify a canonical commitment preimage that binds at minimum chain ID, token contract, authorizer/payer, nonce, and salt, with an unambiguous domain-separated encoding and stated hash function."},{"severity":"medium","category":"correctness","description":"The call says the construction must be CSPRNG-salted, but the stated proven_right criterion only requires a normative per-payment salt with at least 128 bits of entropy. A spec can nominally claim entropy without prescribing secure random sampling, non-reuse, or unpredictable generation, leaving interoperable implementations to generate deterministic or repeated salts.","suggested_fix":"Make success require normative language such as: \"The salt MUST be independently sampled for each payment using a cryptographically secure random-number generator and contain at least 128 bits of entropy; it MUST NOT be reused or deterministically derived from public receipt data.\""}]},"proof":{"event_id":"3373098bd6640d109fd4ad6e56194e24fffd947f6e0454066e51d61210ee05b5","pubkey":"6786e18a864893a900bd9858e650f67ccc3513f248fed374b591e2ff6922fbb7","artifact_sha256_in_event":true,"how_to_verify":"POST /verify-proof with this Nostr event, or run NIP-01; the artifact_hash binds it to the exact artifact reviewed."},"outcome_status":"pending — settles when the action resolves","ts":1792098739},"posted_at":1792098739,"relays":["relay.damus.io","nos.lol","relay.primal.net"],"posted":true,"chain":{"prev_head_hash":"787dbd9c01b6e134bb54cd426f58a00d9bd2d34f96fbd85f2714f5602a521828","content_hash":"7f9fdf9b4d4455af6db8cfe78779b9a3cbd16d25be3198c61206cc8c33ee2bce","head_hash":"81fa8a970b0fbc022106baff7f5560f09610d01f4b5e968aef2d3fcf7cec0cfa"},"chain_head_relays":["relay.damus.io","nos.lol","relay.primal.net","offchain.pub","relay.nostr.net","nostr.mom","relay.snort.social"],"ots_anchor":{"mechanism":"opentimestamps-bitcoin-pow","digest":"3373098bd6640d109fd4ad6e56194e24fffd947f6e0454066e51d61210ee05b5","digest_meaning":"the verdict's signed Nostr event_id, stamped as the OTS digest directly","status":"confirmed","precedence":true,"precedence_basis":"stamped pre-outcome — entry unsettled and fresh at stamp time","calendars":["https://a.pool.opentimestamps.org","https://b.pool.opentimestamps.org","https://a.pool.eternitywall.com","https://ots.btc.catallaxy.com"],"stamped_at":"2026-10-15T21:25:37Z","ots_path":"/data/track_record/ots/3373098bd6640d109fd4ad6e56194e24fffd947f6e0454066e51d61210ee05b5.ots","verify":"ots verify -d 3373098bd6640d109fd4ad6e56194e24fffd947f6e0454066e51d61210ee05b5 3373098bd6640d109fd4ad6e56194e24fffd947f6e0454066e51d61210ee05b5.ots  (recomputable against any Bitcoin explorer; no trust in us)","bitcoin_block_height":971630,"confirmed_at":"2026-10-16T00:05:03Z","bitcoin_block_time":1792105482,"bitcoin_block_hash":"00000000000000000001a548b364aab84480e8027461fe2ec950b93f33d13f77","ots_proof_url":"https://api.babyblueviper.com/ledger/274/ots"},"relay_anchor":{"checked_at":1792657245,"relays_holding":["relay.damus.io","relay.primal.net"],"status":"anchored"},"commitment_proof":{"mechanism":"nostr-relay-publication","event_id":"3373098bd6640d109fd4ad6e56194e24fffd947f6e0454066e51d61210ee05b5","signed_at":1792098738,"published_at":1792098739,"relays":["relay.damus.io","nos.lol","relay.primal.net"],"how_to_check":"fetch the event by id from any listed public relay and confirm created_at; relays held the signed verdict from published_at, before the outcome settled","relay_anchor":{"checked_at":1792657245,"relays_holding":["relay.damus.io","relay.primal.net"],"status":"anchored"},"ots_anchor":{"mechanism":"opentimestamps-bitcoin-pow","digest":"3373098bd6640d109fd4ad6e56194e24fffd947f6e0454066e51d61210ee05b5","digest_meaning":"the verdict's signed Nostr event_id, stamped as the OTS digest directly","status":"confirmed","precedence":true,"precedence_basis":"stamped pre-outcome — entry unsettled and fresh at stamp time","calendars":["https://a.pool.opentimestamps.org","https://b.pool.opentimestamps.org","https://a.pool.eternitywall.com","https://ots.btc.catallaxy.com"],"stamped_at":"2026-10-15T21:25:37Z","ots_path":"/data/track_record/ots/3373098bd6640d109fd4ad6e56194e24fffd947f6e0454066e51d61210ee05b5.ots","verify":"ots verify -d 3373098bd6640d109fd4ad6e56194e24fffd947f6e0454066e51d61210ee05b5 3373098bd6640d109fd4ad6e56194e24fffd947f6e0454066e51d61210ee05b5.ots  (recomputable against any Bitcoin explorer; no trust in us)","bitcoin_block_height":971630,"confirmed_at":"2026-10-16T00:05:03Z","bitcoin_block_time":1792105482,"bitcoin_block_hash":"00000000000000000001a548b364aab84480e8027461fe2ec950b93f33d13f77","ots_proof_url":"https://api.babyblueviper.com/ledger/274/ots"},"timing":{"hierarchy":"Bitcoin PoW (OpenTimestamps, trust-maximal) > original relay copy (tightest time) > on-chain committedAt > survivor floor (ERC-8299 Appendix B)","tier":0,"timestamp":1792105482,"claim":"Bitcoin proof-of-work (OpenTimestamps): the verdict event_id provably existed by this block's timestamp, anchored to a clock no chain operator or our key can move or back-date. Trust-maximal; the relay tier gives a tighter time on weaker trust.","available":{"tier0_btc_pow":1792105482,"tier1_relay_attested":1792098738,"tier2_onchain_committed_at":null,"tier3_survivor_floor":null},"btc_pow":{"status":"confirmed","precedence":true,"bitcoin_block_height":971630,"bitcoin_block_time":1792105482,"verify":"ots verify -d 3373098bd6640d109fd4ad6e56194e24fffd947f6e0454066e51d61210ee05b5 3373098bd6640d109fd4ad6e56194e24fffd947f6e0454066e51d61210ee05b5.ots  (recomputable against any Bitcoin explorer; no trust in us)","note":"trust-maximal anchor, un-forgeable Bitcoin proof-of-work — pre-outcome precedence","precedence_cross_check":null},"committed_at":null,"committed_at_reference":"judgment_type=outcome_verifiable (ERC-8274): committed_at MUST predate the realized outcome's settlement. committed_at is the tier-2 on-chain committedAt sourced from the ERC-8263 proofHash leg (see truthanchor_8263) — distinct from the ERC-8281/OCP input anchor, which commits the input, not the verdict."},"judgment_type":"outcome_verifiable"},"judgment_execution":{"spec":"JudgmentExecutionAttestation — ERC-8299 L4 composition (reviewed→executed commitment; origin t/28655 #11)","hash_alg":"sha256","raw_proposal_hash":"345fc633c746bbdf101d3bdd312d385950862125955c1ab0c196f9b8305cf848","verdict_ref":{"binding":"nostr-event","event_id":"3373098bd6640d109fd4ad6e56194e24fffd947f6e0454066e51d61210ee05b5"},"verdict_timestamp":1792098739,"executed_action_hash":null,"status":"entry predates executed-intent commitment wiring; action_taken is disclosed in the record and the outcome settled on-chain, but no separate executed-action hash was committed at the time (not backfilled by design)"},"outcome_evidence":{"question":"was the verdict later right or wrong? (distinct from commitment_proof's 'was it committed before the outcome was known?')","mechanism":"on-chain-settlement","account":"0x3b2A858806Fa4DEb9191Bb7918350fDB774603A4","note":"every governed trade settles on this public Hyperliquid account; the signed trade-outcome digest entries below contain the settled rows published at/after this verdict — wins AND losses","settled_digests":[],"status":"pending"}}