{
  "format": "vercy-model-allocation-fixtures/v1",
  "proposedName": "Responsibility Centre",
  "cases": [
    {
      "id": "code-change",
      "kind": "positive",
      "input": "An ERP cost-centre code changes while finance accountability and posting semantics are unchanged.",
      "expect": "Centre identity and CentreVersion remain; a dated non-identifying AliasBinding changes."
    },
    {
      "id": "accountability-change",
      "kind": "positive",
      "input": "Ledger scope and accountable position change during reorganization.",
      "expect": "A successor CentreVersion becomes effective; historical postings remain pinned to the prior version."
    },
    {
      "id": "organization-move-only",
      "kind": "positive",
      "input": "An associated organizational unit moves while finance accountability is unchanged.",
      "expect": "No centre identity or version is minted merely from the organization move."
    },
    {
      "id": "split-reconciliation",
      "kind": "positive",
      "input": "One centre splits into two successors.",
      "expect": "Lineage records weights or an explicit reconciliation rule and preserves the predecessor for historical resolution."
    },
    {
      "id": "multi-source-revision",
      "kind": "positive",
      "input": "Two sources fund one project, then the organization and budget are revised.",
      "expect": "Postings retain the effective CentreVersion; V1, V2, forecast, commitments and actuals stay distinct; source authority is counted once."
    },
    {
      "id": "double-funding",
      "kind": "negative",
      "input": "Allocations from one source exceed its authorized released amount for the period.",
      "expect": "The Budget Responsibility profile rejects the allocation set."
    },
    {
      "id": "successor-double-availability",
      "kind": "negative",
      "input": "Budget V2 treats V1 source authorization as newly available without an amended source authorization.",
      "expect": "The profile rejects the successor revision as duplicate availability."
    },
    {
      "id": "unknown-as-zero",
      "kind": "negative",
      "input": "A source amount or remainder rule is unknown and the implementation treats it as zero or unrestricted.",
      "expect": "Validation fails closed."
    },
    {
      "id": "historical-rewrite",
      "kind": "negative",
      "input": "A reorganization rewrites prior journal attribution from CentreVersion v1 to v2.",
      "expect": "Validation rejects the rewrite and preserves the original pin."
    },
    {
      "id": "interval-overlap",
      "kind": "negative",
      "input": "Two active CentreVersions overlap for one centre.",
      "expect": "Validation rejects ambiguous as-of resolution."
    },
    {
      "id": "alias-collision",
      "kind": "negative",
      "input": "One ERP code resolves to two centres in the same code system and instant.",
      "expect": "Validation rejects the collision."
    },
    {
      "id": "hierarchy-cycle",
      "kind": "negative",
      "input": "Dated memberships create A→B→A in one hierarchy.",
      "expect": "Validation rejects the cycle without minting descendant versions."
    },
    {
      "id": "carry-in-inflation",
      "kind": "negative",
      "input": "Carry-in exceeds the prior period's reconciled carryable residual for the same source.",
      "expect": "Validation rejects the unbounded availability inlet."
    },
    {
      "id": "closed-centre-posting",
      "kind": "negative",
      "input": "A journal line references a closed centre or lacks an effective permit.",
      "expect": "Posting fails closed; prior postings remain resolvable."
    },
    {
      "id": "cross-budget-double-draw",
      "kind": "negative",
      "input": "Two budgets claim the same source draw while no authoritative draw register is allocated.",
      "expect": "Cross-budget validation fails closed."
    },
    {
      "id": "reversal-repost",
      "kind": "positive",
      "input": "An accounting correction reverses an old posting and posts a replacement after a centre change.",
      "expect": "The original keeps its old CentreVersion; linked reversal and replacement are appended with their own effective pins."
    }
  ],
  "candidateRevision": 3
}
