{
  "_demo": {
    "attack_class": "Modified Policy",
    "scenario": "After the substrate denied a $1.8M transaction against a $500K authority limit, the operator (or a malicious insider) altered the policy envelope to claim the threshold was $2M all along — making the original denial look like an error.",
    "expected_rejection": "ScopeEnvelopeHashMismatch",
    "live_check_in_browser": "Recompute SHA-384 of the canonical JCS encoding of body.scope_envelope. Compare against body.committed_scope_hash. They do not match — the envelope has been mutated post-issuance.",
    "production_check": "qsign-baae's BindingsCommittedScopeHashAgrees and BindingsScopeViolationHashAgrees verifier hooks recompute SHA3-384(canonical_jcs(scope_envelope)) and assert it equals the signed committed_scope_hash. Mismatch is a hard reject — the scope binding chain breaks; the signature does not cover the tampered content.",
    "browser_hash_alg": "SHA-384 (SHA-2 family; native WebCrypto)",
    "production_hash_alg": "SHA3-384 (production canonical hash). Both are 384-bit; structural detection is identical."
  },
  "schema": "urn:h33:qsign:nap:v0.1",
  "artifact_binding_hash": "7f9b1d3e5071a3b5c7d9e1f3a5b7c9d2e4f6a8b0c1d3e5f7091a3b5c7d9e1f3a5b7c9d2e4f6a8b0c1d3e5f7091a3b5c7",
  "body": {
    "issuer_principal_id": "urn:h33:fed:acme-bank:key:nap-issuer-2026-q3",
    "subject_principal_id": "urn:h33:agent:acme-claims-agent-001",
    "request_hash": "8e0f2a4c6e8b0d2f4a6c8e0b2d4f60819a3c5e7f9b1d3e5071a3b5c7d9e1f3a5b7c9d2e4f6a8b0c1d3e5f7091a3b5c7d9",
    "committed_scope_hash": "1c08aa5fbdf3e2b4d6f8a0c2e4f6081a3b5c7d9e1f3a5b7c9d2e4f6a8b0c1d3e5f7091a3b5c7d9e1f3a5b7c9d2e4f6a8b",
    "scope_envelope": {
      "axis": "DecisionAmount",
      "threshold_amount_usd": "2000000.00",
      "comparator": "less_than_or_equal",
      "_tampered_note": "this scope envelope was edited post-issuance from threshold_amount_usd 500000.00 to 2000000.00. The committed_scope_hash above was signed against the ORIGINAL 500000.00 envelope."
    },
    "scope_check": "Denied",
    "denial_axis": "DecisionAmount",
    "denial_threshold_amount": "500000.00",
    "attempted_amount": "1800000.00",
    "issued_at_unix_ms": 1780000060000,
    "issuer_software": "qsign-nap/0.2"
  },
  "signatures": {
    "ml_dsa_87":    "9b1d3e5f7091a3b5c7d9e1f3a5b7c9d2e4f6a8b0c1d3e5f7091a3b5c7d9e1f3a5b7c9d2e4f6a8b0c1d3e5f7091a3b5c7d9e1f3a5b7c9d2e4f6a8b0c1d3e5f7091a3",
    "slh_dsa_256s": "8a0c2e4f6081a3b5c7d9e1f3a5b7c9d2e4f6a8b0c1d3e5f7091a3b5c7d9e1f3a5b7c9d2e4f6a8b0c1d3e5f7091a3b5c7d9e1f3a5b7c9d2e4f6a8b0c1d3e5f7091a3b",
    "falcon":       "7c9d2e4f6a8b0c1d3e5f7091a3b5c7d9e1f3a5b7c9d2e4f6a8b0c1d3e5f7091a3b5c7d9e1f3a5b7c9d2e4f6a8b0c1d3e5f7091a3b5c7d9e1f3a5b7c9d2e4f6a8b0c1"
  }
}
