{
  "format": "vercy-enterprise-allocation-fixtures/v1",
  "candidateName": "Architecture Exception",
  "cases": [
    {
      "id": "bounded-grant",
      "kind": "positive",
      "input": "A rule derogation is granted for one application and environment until a fixed date.",
      "expect": "Subject, rule, scope, owner, authority and expiry are retained.",
      "target": "Architecture Exception",
      "violates": "Validity is bounded.",
      "closesDefect": "D1"
    },
    {
      "id": "renewal",
      "kind": "positive",
      "input": "A valid grant is renewed with new conditions.",
      "expect": "A new linked grant is created.",
      "target": "Architecture Exception",
      "violates": "Renewal creates a new grant.",
      "closesDefect": "D1"
    },
    {
      "id": "expiry",
      "kind": "positive",
      "input": "The grant expires.",
      "expect": "Operational exception state ends while history remains.",
      "target": "Architecture Exception",
      "violates": "Expiry never deletes history.",
      "closesDefect": "D1"
    },
    {
      "id": "assessment-rewrite",
      "kind": "negative",
      "input": "The grant changes violated to satisfied.",
      "expect": "The rewrite is rejected.",
      "target": "Architecture Exception",
      "violates": "An exception never rewrites assessment outcome.",
      "closesDefect": "D1",
      "expectedCode": "EMTEC09.EXC.OUTCOME_REWRITE"
    },
    {
      "id": "unbounded",
      "kind": "negative",
      "input": "A grant has no expiry or accountable owner.",
      "expect": "The grant is rejected.",
      "target": "Architecture Exception",
      "violates": "Validity is bounded.",
      "closesDefect": "D1",
      "expectedCode": "EMTEC09.EXC.UNBOUNDED_GRANT"
    },
    {
      "id": "risk-collapse",
      "kind": "negative",
      "input": "The grant is treated as residual-risk acceptance.",
      "expect": "The conflation is rejected.",
      "target": "Architecture Exception",
      "violates": "Residual-risk acceptance requires a separate decision.",
      "closesDefect": "D1",
      "expectedCode": "EMTEC09.EXC.RISK_ACCEPTANCE_COLLAPSE"
    },
    {
      "id": "exc-single-expression",
      "target": "Architecture Exception",
      "kind": "positive",
      "input": "A grant pins one standard expression and enumerates three rules, all of which resolve under that expression.",
      "expect": "The grant is accepted with every derogated rule resolving under the single pinned expression.",
      "violates": "Each exception pins one exact standard expression.",
      "closesDefect": "D4"
    },
    {
      "id": "exc-cross-standard-rules",
      "target": "Architecture Exception",
      "kind": "negative",
      "input": "One grant enumerates rules belonging to two different standard expressions.",
      "expect": "The grant is rejected; separate grants are required per standard expression.",
      "violates": "Each exception pins one exact standard expression.",
      "closesDefect": "D4",
      "expectedCode": "EMTEC09.EXC.EXPRESSION_FANOUT"
    },
    {
      "id": "exc-sibling-grants",
      "target": "Architecture Exception",
      "kind": "positive",
      "input": "A derogation spanning two standards is recorded as two grants sharing subject and scope and linked as co-grants.",
      "expect": "Both grants are accepted, each independently expirable and revocable.",
      "violates": "(added:) A derogation spanning two standard expressions is recorded as co-grants, not as one grant.",
      "closesDefect": "D4"
    },
    {
      "id": "exc-renewal-new-identity",
      "target": "Architecture Exception",
      "kind": "positive",
      "input": "An expiring grant is renewed with tightened conditions.",
      "expect": "A new grant identity is created with renewalOfRef, and the predecessor closes as expired.",
      "violates": "Renewal creates a new grant.",
      "closesDefect": "D7"
    },
    {
      "id": "exc-renewed-state",
      "target": "Architecture Exception",
      "kind": "negative",
      "input": "The predecessor grant is set to a renewed state and its validUntil is moved forward.",
      "expect": "The edit is rejected; renewal is never an extension of one identity.",
      "violates": "(added:) No grant enters a renewed state and no effective grant's validUntil is edited.",
      "closesDefect": "D7",
      "expectedCode": "EMTEC09.EXC.RENEWAL_AS_EXTENSION"
    },
    {
      "id": "exc-renewal-backdated",
      "target": "Architecture Exception",
      "kind": "negative",
      "input": "A renewal's validFrom is dated before its predecessor's effective end, over the same subject, scope and rule.",
      "expect": "The renewal is rejected; concurrent effective grants over the same rule are not permitted.",
      "violates": "(added:) A renewal's validFrom is not earlier than its predecessor's effective end.",
      "closesDefect": "D8",
      "expectedCode": "EMTEC09.EXC.GRANT_OVERLAP"
    },
    {
      "id": "exc-three-party",
      "target": "Architecture Exception",
      "kind": "positive",
      "input": "A grant names a granting authority, an assessing party and a subject owner that are three different parties.",
      "expect": "The grant is accepted with three-party distinctness recorded.",
      "violates": "(added:) Granting authority, assessing party and subject owner are three distinct parties.",
      "closesDefect": "D10"
    },
    {
      "id": "exc-assessor-grants",
      "target": "Architecture Exception",
      "kind": "negative",
      "input": "The party that performed the conformance assessment also grants the exception.",
      "expect": "The grant is rejected for role collapse.",
      "violates": "(added:) No party holds two of these roles on one grant.",
      "closesDefect": "D10",
      "expectedCode": "EMTEC09.EXC.PARTY_COLLAPSE"
    },
    {
      "id": "exc-precedes-assessment",
      "target": "Architecture Exception",
      "kind": "positive",
      "input": "A grant is issued before any assessment cites it, and a later retest fails the derogated rule.",
      "expect": "The grant remains effective until expiry or revocation, unaffected by the failed retest.",
      "violates": "(added:) A grant's validity is independent of any assessment.",
      "closesDefect": "D9"
    },
    {
      "id": "exc-assessment-dependency",
      "target": "Architecture Exception",
      "kind": "negative",
      "input": "A grant is voided on the grounds that no assessment cites it.",
      "expect": "The voiding is rejected; grant validity does not depend on a citing assessment.",
      "violates": "(added:) A grant's validity is independent of any assessment.",
      "closesDefect": "D9",
      "expectedCode": "EMTEC09.EXC.ASSESSMENT_DEPENDENCY"
    },
    {
      "id": "exc-residual-risk-separate",
      "target": "Architecture Exception",
      "kind": "positive",
      "input": "Residual risk for a derogation is accepted through a separate decision under the rationale, occurrence and issued-record triad.",
      "expect": "The acceptance is referenced by the grant and stored outside it.",
      "violates": "Residual-risk acceptance requires a separate decision.",
      "closesDefect": "D2"
    }
  ]
}
