{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://thehiveryiq.com/.well-known/schemas/tamper-attempt-v1.json","title":"Tamper Attempt Receipt, v1","description":"Canonical schema for the Hive tamper attempt receipt, canonical type tamper.attempt. The instrument records a refused write against one named receipt and binds the observation to equal log roots before and after the refusal. It reports a requester commitment rather than a requester identity. Its outcome is recomputed by the verifier and is established only when the roots are unchanged.","type":"object","required":["receipt_id","payload_sha256","sig_b64u","key_id","algorithm","ts","signed_body"],"additionalProperties":false,"properties":{"receipt_id":{"type":"string","pattern":"^r_tamper[.]attempt_[0-9]{10,}_[0-9a-f]{12}$"},"payload_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"sig_b64u":{"type":"string","pattern":"^[A-Za-z0-9_-]{86}$"},"key_id":{"type":"string","pattern":"^did:(hive|web|key):[A-Za-z0-9._:%-]+$"},"algorithm":{"type":"string","const":"Ed25519"},"ts":{"type":"integer","minimum":1000000000},"signed_body":{"type":"object","required":["receipt_type","schema","target_receipt_id","attempt_class","refusal_reason","observed_at","requester_commitment","prior_log_root","post_log_root","outcome","boundary"],"additionalProperties":false,"properties":{"receipt_type":{"type":"string","const":"tamper.attempt"},"schema":{"type":"string","const":"r1.0.0"},"target_receipt_id":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[A-Za-z0-9._:]+$"},"attempt_class":{"type":"string","enum":["delete","overwrite","reorder","backdate","suppress"]},"refusal_reason":{"type":"string","enum":["append_only","signature_mismatch","key_not_authorized","window_closed"]},"observed_at":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}([.][0-9]{1,9})?Z$"},"requester_commitment":{"type":"string","pattern":"^[0-9a-f]{64}$"},"prior_log_root":{"type":"string","pattern":"^[0-9a-f]{64}$"},"post_log_root":{"type":"string","pattern":"^[0-9a-f]{64}$"},"outcome":{"type":"string","enum":["recorded_refusal","not_established"],"description":"Derived from the two log roots. Equal roots derive recorded_refusal. Any other relation derives not_established and is refused by ROOT_UNCHANGED."},"boundary":{"type":"string","const":"This receipt records that the service refused the described write against the named receipt, as observed at the stated time, and that the prior and post log roots are equal. The requester is represented only by a commitment. This receipt does not identify the requester or determine intent. It does not establish that a write occurred outside the evidence supplied."}}}}}