{
  "profile": "xcim-consent-01",
  "artifact_status": "local-reference-test-only",
  "can_assert_xcim_pass": false,
  "mapping": [
    {
      "contract": "COMMON: closed JSON, canonical JCS, signature envelope, Ed25519, object commitments",
      "implementation": "reference.py strict_json, jcs, schemas, verify_signed, commitment",
      "tests": ["bad-signature", "noncanonical-signed-payload", "duplicate-json-member", "floating-number", "negative-zero", "unsafe-integer", "invalid-unicode-scalar", "integer-boolean-rejected", "depth-limit", "complete-evidence-size-limit", "padded-base64url", "key-url-injection", "unknown-version", "extra-consent-property"],
      "remaining": "Independent implementation comparison and external cryptographic/parser review"
    },
    {
      "contract": "ADDRESS: ascii-idna15-1, exact local part, salted recipient mapping",
      "implementation": "canonical_address, recipient_commitment; installed IDNA Unicode 15.1.0 tables pinned",
      "tests": ["wrong-recipient", "local-part-case-preserved", "plus-part-preserved", "domain-case-and-outer-space", "unsupported-address-*", "direct UTS46 nontransitional and A-label assertions"],
      "remaining": "Live issuer observation and provider authority evidence are not implemented"
    },
    {
      "contract": "SENDER: signed entity, scope and epoch, exact binding in consent",
      "implementation": "sender schema, issuer/role signature, binding commitment and epoch floor",
      "tests": ["different-company", "different-sender-epoch", "sender-binding-substitution", "sender-epoch-floor", "sender-uri-userinfo", "sender-uri-query"],
      "remaining": "Authenticated entity enrollment, evidence retention, reassignment prevention and administrative epoch issuance"
    },
    {
      "contract": "ATTESTATION: explicit decision for exact type definitions, notice, control policy and chronology",
      "implementation": "consent schema, allowed decision, sorted unique types, admitted control policy, maximum age and signed chronology; authenticated/policy-known immutable type definitions and latched conflicts",
      "tests": ["consent-query-without-email", "transactional-requires-and-has-explicit-consent", "different-type", "different-type-version", "implicit-transaction-relationship", "empty-type-selection", "types-unsorted", "unapproved-control-policy", "control-observation-too-old", "record-authenticated-type-definition", "same-type-version-changed-meaning", "type-definition-conflict-remains-latched", "policy-known-type-definition-conflict"],
      "remaining": "OIDC code/PKCE/session validation, affirmative action capture, authority-policy assessment, atomic nonce/decision/receipt and idempotent producer. Fixtures attest synthetic observations only. Issuer must prevent semantic reassignment of published type/version definitions."
    },
    {
      "contract": "REVOCATION: authenticated actor/procedure, exact terminal chain and partial type removals",
      "implementation": "revocation schema, issuer signature, admitted per-actor method, scope, sequence, event head, chronological terminal set projection",
      "tests": ["partial-withdrawal", "partial-withdrawal-retains-other-type", "all-types-withdrawn", "revocation-chain-substitution", "revocation-sequence-gap", "revocation-actor-spoof", "revocation-future-effective", "revocation-unknown-type", "revocation-duplicate-removal", "revocation-regrant-forbidden"],
      "remaining": "Real actor authentication, atomic competing request serialization, request nonce and idempotent producer, deployment anchoring delay policy"
    },
    {
      "contract": "CURRENT STATUS: exact projection, freshness, persistent restrictive state and conflict handling",
      "implementation": "status schema, projection/freshness checks, in-memory FloorStore with shared-prefix verification and latched history conflicts",
      "tests": ["status-active-set-fabricated", "status-sequence-gap", "status-validity-too-long", "stale-status", "future-status", "snapshot-renewal-does-not-change-grant", "old-active-snapshot-cannot-restore", "old-sequence-for-unremoved-type", "signed-history-fork", "history-conflict-remains-latched", "invalid-signature-cannot-change-floors", "invalid-active-anchor-cannot-change-floors"],
      "remaining": "Durable authenticated storage, crash recovery, administrator-authorized conflict resolution and independent publishers"
    },
    {
      "contract": "ANCHOR BATCH and EVIDENCE: complete bounded commitment list, issuer/log and exact batch binding",
      "implementation": "anchor batch/wrapper schemas, verify_anchor, maximum 4096 leaves and 512 KiB signed batch envelope",
      "tests": ["anchor-digest-substitution", "anchor-nonmember", "anchor-predates-grant", "batch-reset-with-previous-hash", "batch-over-4096-leaves", "batch-large-envelope-valid", "unadmitted-log", "wrong-network", "wrong-genesis", "wrong-anchor-authority", "proof-names-are-profile-specific", "proof-must-be-object", "anchor-identifiers-ascii-only", "anchor-identifier-length-bound"],
      "remaining": "The supplied anchor adapter is an equality stub. A real, admitted blockchain proof encoding and consensus/finality verifier are mandatory for any actual positive result. No live Amoy or production chain evidence exists in this suite."
    },
    {
      "contract": "QUERY AND RESULTS: tuple only, repeated queries do not consume grant, fail closed",
      "implementation": "verify accepts only local consent tuple plus evidence, policy and adapter; fixture result always can_assert_xcim_pass=false",
      "tests": ["no-message-input-accepted", "same-query-first", "same-query-repeat-not-consumed", "grant-anchor-unavailable", "unknown-anchor-profile", "issuer-finalized-flag-not-proof", "missing-required-anchor-field", "expired-grant", "expiration-exclusive-with-clock-uncertainty", "uncertainty-upper-bound", "clock-uncertainty-too-large", "policy-expired"],
      "remaining": "Authenticated local query access, HTTP retrieval, resource fetch controls/SSRF, independently mapped sender identity and communication type are deployment responsibilities. No email classification is asserted."
    },
    {
      "contract": "TRUST: third-party admission, role keys, historical issuance windows and current status key authority",
      "implementation": "policy is a local argument, never discovered from evidence; keys selected by kid and required role, current policy can revoke historical acceptance",
      "tests": ["third-party-not-admitted", "signer-spoofed-issuer", "role-confusion", "revoked-attestation-key", "signature-outside-key-window", "routine-retired-historical-key", "status-key-retired"],
      "remaining": "Production key custody, policy authentication/distribution, compromise recovery and administrator workflow"
    }
  ]
}
