{
  "format": "vercy-model-allocation-candidate/v1",
  "contourId": "EM-FIN-05",
  "proposedName": "Cost Allocation",
  "modelId": null,
  "registryId": null,
  "allocationState": "unassigned",
  "decision": "NEW MODEL CANDIDATE",
  "allocationApproved": false,
  "canonicalPublishable": false,
  "installable": false,
  "identityTest": {
    "stableIdentity": "One Cost Allocation cluster governs reusable rules and immutable executions while preserving separately addressable rule, revision, run and result object identities.",
    "versionIdentity": "Rule revisions and runs are immutable; corrections append backward supersedes references while every predecessor stays resolvable.",
    "independentLifecycle": [
      "candidate",
      "allocated",
      "specified",
      "released",
      "retired"
    ],
    "mastership": "cost-governance and finance-analytics authority"
  },
  "clusterIdentityTest": {
    "perObject": {
      "CostAllocationRule": {
        "identity": [
          "allocationRuleId"
        ],
        "lifecycle": [
          "draft",
          "approved",
          "effective",
          "superseded",
          "retired"
        ]
      },
      "CostAllocationRuleRevision": {
        "identity": [
          "allocationRuleId",
          "revision"
        ],
        "lifecycle": [
          "draft",
          "approved",
          "effective",
          "superseded",
          "retired"
        ]
      },
      "CostAllocationRun": {
        "identity": [
          "allocationRunId"
        ],
        "lifecycle": [
          "prepared",
          "executed",
          "superseded",
          "retired"
        ]
      },
      "CostAllocationResult": {
        "identity": [
          "allocationRunId",
          "resultId"
        ],
        "lifecycle": [
          "materialized",
          "superseded",
          "retired"
        ]
      }
    }
  },
  "identifierPlanes": {
    "modelIdentity": "Registry identifier for the cluster; unassigned and never guessed.",
    "objectIdentity": "Stable identifiers are allocated by the owning aggregate independently of registry model allocation.",
    "citationRoot": "CostAllocationRun is the citation root; a result is cited as (allocationRunId, resultId).",
    "digest": "Digests verify content and are never identity."
  },
  "boundary": {
    "owns": [
      "stable allocation-rule identity and immutable effective-dated revisions",
      "immutable allocation runs pinned to one rule revision, one axis, one currency and one source period",
      "addressable run-contained allocation results and explicit residual results",
      "source-amount derivation, base completeness, tolerances, rounding, discount, reserved-capacity and confidence policy",
      "structured run reconciliation and backward successor lineage"
    ],
    "references": [
      {
        "target": "WM-FLW-015",
        "purpose": "source-qualified usage records and allocation bases"
      },
      {
        "target": "WM-ECO-008",
        "purpose": "billed amounts and invoice allowances"
      },
      {
        "target": "WM-ECO-016",
        "purpose": "recognized cost and separately authorized journal postings"
      },
      {
        "target": "WM-ECO-002",
        "purpose": "price or valuation comparator only",
        "assertable": false,
        "heldOn": "canonical base and relation approval"
      },
      {
        "target": "WM-MAT-008",
        "purpose": "measured denominator quantities",
        "assertable": false,
        "heldOn": "canonical base and relation approval"
      },
      {
        "target": "EM-DAT-05 Metric Definition",
        "purpose": "versioned denominator metric definition",
        "assertable": false,
        "heldOn": "identifier allocation"
      }
    ],
    "excludes": [
      "quoted or list price identity",
      "invoice and allowance identity",
      "journal-entry or posting identity",
      "usage-event identity",
      "valuation identity",
      "metric-definition identity",
      "commitment-instrument identity"
    ]
  },
  "objects": {
    "CostAllocationRule": {
      "identity": [
        "allocationRuleId"
      ],
      "required": [
        "axis",
        "authorityRef",
        "sourceScope",
        "baseKind",
        "baseSourceRef"
      ],
      "optional": [
        "retiredAt"
      ],
      "lifecycle": [
        "draft",
        "approved",
        "effective",
        "superseded",
        "retired"
      ],
      "notes": [
        "axis is identity-fixing",
        "current revision is resolved as-of effective time and is not stored"
      ]
    },
    "CostAllocationRuleRevision": {
      "identity": [
        "allocationRuleId",
        "revision"
      ],
      "required": [
        "effectiveFrom",
        "weightComputation",
        "sourceAmountBasis",
        "sourceAmountDerivationPolicy",
        "roundingPolicy",
        "amountTolerance",
        "weightTolerance",
        "residualPolicy",
        "unusedCapacityTreatment",
        "discountTreatment",
        "confidencePolicy",
        "contentDigest"
      ],
      "optional": [
        "effectiveTo",
        "supersedesRevision"
      ],
      "discountTreatmentEnum": [
        "follows-granted-line",
        "reduces-source-before-allocation",
        "spread-on-allocation-base",
        "held-as-discount-residual"
      ],
      "unusedCapacityTreatmentEnum": [
        "shared-pool-result",
        "separate-chained-run",
        "residual-unused-capacity"
      ]
    },
    "CostAllocationRun": {
      "identity": [
        "allocationRunId"
      ],
      "required": [
        "ruleRevisionRef",
        "axis",
        "sourcePeriod",
        "sourceAmount",
        "sourceAmountBasis",
        "sourceAmountDerivation",
        "currency",
        "sourceRecordRefs",
        "sourceDigest",
        "basePopulation",
        "baseCompleteness",
        "amountTolerance",
        "weightTolerance",
        "executedAt",
        "reconciliation"
      ],
      "optional": [
        "usageIntervalRefs",
        "upstreamResultRefs",
        "supersedesRunRef",
        "correctionReason",
        "actorRef"
      ],
      "sourceAmountBasisEnum": [
        "invoice-net",
        "invoice-gross",
        "recognized-cost",
        "commitment-covered-cost",
        "externally-reconciled-cost"
      ],
      "immutability": "append-only after executed",
      "reconciliationRequired": [
        "sourceToAllocation",
        "allocationToInvoice",
        "allocationToLedger"
      ]
    },
    "CostAllocationResult": {
      "identity": [
        "allocationRunId",
        "resultId"
      ],
      "required": [
        "resultKind",
        "amount",
        "confidence",
        "attributionBasis"
      ],
      "optional": [
        "targetRef",
        "weight",
        "baseValue",
        "residualKind",
        "residualShare",
        "allowanceRef",
        "sharedPoolRef"
      ],
      "resultKindEnum": [
        "target",
        "residual"
      ],
      "residualKindEnum": [
        "untagged",
        "incomplete-base",
        "rounding-remainder",
        "unused-capacity",
        "unassigned",
        "waste",
        "policy-held"
      ],
      "immutability": "run-contained, addressable and immutable"
    },
    "CostRecord": {
      "identity": [
        "costRecordId"
      ],
      "required": [
        "costFactKind",
        "sourceRef",
        "amount",
        "currency",
        "period"
      ],
      "costFactKindEnum": [
        "quoted-price",
        "invoice-amount",
        "recognized-cost",
        "allocated-cost",
        "valuation"
      ],
      "mastership": "typed reference to the external fact owner"
    },
    "TranslatedResult": {
      "identity": [
        "allocationRunId",
        "resultId",
        "translationId"
      ],
      "required": [
        "sourceResultRef",
        "translatedAmount",
        "translatedCurrency",
        "rateValue",
        "rateSourceRef",
        "rateObservedAt"
      ],
      "derived": true,
      "excludedFrom": [
        "allocation conservation",
        "unit-cost numerator"
      ]
    }
  },
  "invariantRules": [
    {
      "id": "I-01",
      "statement": "Every cost assertion declares basis, period and currency."
    },
    {
      "id": "I-02",
      "statement": "Quoted price, invoice amount, recognized cost, usage, allocated cost and valuation are separately typed and never substituted."
    },
    {
      "id": "I-03",
      "statement": "A model identifier is never substituted for an object identifier, and object-level citation does not depend on registry allocation."
    },
    {
      "id": "I-04",
      "statement": "Every allocation run pins exactly one immutable rule revision."
    },
    {
      "id": "I-05",
      "statement": "A run has exactly one allocation axis and exactly one currency."
    },
    {
      "id": "I-06",
      "statement": "Effective intervals of revisions of one rule are pairwise non-overlapping."
    },
    {
      "id": "I-07",
      "statement": "Allocation axis is identity-fixing for a rule; an axis change creates a new rule identity."
    },
    {
      "id": "I-08",
      "statement": "Within one run, the sum of target amounts and residual amounts equals sourceAmount within amountTolerance."
    },
    {
      "id": "I-09",
      "statement": "Target weights sum to one within weightTolerance over the allocable base; residual share is represented separately."
    },
    {
      "id": "I-10",
      "statement": "Every residual carries a closed residualKind and every rounding remainder is materialized."
    },
    {
      "id": "I-11",
      "statement": "sourceAmountBasis is declared and ordered sourceAmountDerivation entries sum to sourceAmount."
    },
    {
      "id": "I-12",
      "statement": "Allocation base kind, source and completeness are explicit; partial completeness implies a non-zero residual."
    },
    {
      "id": "I-13",
      "statement": "Untagged usage remains residual and no implicit default target is permitted."
    },
    {
      "id": "I-14",
      "statement": "Parallel axes over intersecting source records are non-additive."
    },
    {
      "id": "I-15",
      "statement": "The allocation-run chain is acyclic and a chained run conserves to its cited upstream results, each of which has at most one downstream consumer."
    },
    {
      "id": "I-16",
      "statement": "Unused reserved capacity uses exactly one closed treatment: shared-pool-result, separate-chained-run or residual-unused-capacity."
    },
    {
      "id": "I-17",
      "statement": "Discount treatment is pinned on the rule revision, allowance identity is retained, and gross and net views are reproducible."
    },
    {
      "id": "I-18",
      "statement": "Allocation occurs in source currency; translated results carry rate metadata and never enter conservation or unit-cost calculations."
    },
    {
      "id": "I-19",
      "statement": "Allocated cost is never a ledger posting without a separately authorized journal entry."
    },
    {
      "id": "I-20",
      "statement": "An allocation result never mutates an invoice or journal master."
    },
    {
      "id": "I-21",
      "statement": "Runs and results are immutable; corrections append backward-linked successors with a reason and predecessors remain resolvable."
    },
    {
      "id": "I-22",
      "statement": "Confidence remains decomposed into measurement uncertainty, representativeness, commitment-coverage certainty and residual share."
    },
    {
      "id": "I-23",
      "statement": "Unit cost pins numerator basis, allocation run, denominator quantity source, metric-definition version, denominator completeness and residual treatment."
    },
    {
      "id": "I-24",
      "statement": "Retired rule, run and result identifiers remain resolvable and are never recycled."
    }
  ],
  "holds": [
    "Registry namespace and identifier allocation are pending; no identifier has been guessed.",
    "Metric Definition remains the unassigned EM-DAT-05 candidate.",
    "WM-ECO-002 and WM-MAT-008 bindings remain non-assertable until canonical base and relation approval.",
    "Commitment instrument mastership is unbound and no local candidate is introduced.",
    "All referenced bases remain non-canonical reviewable drafts.",
    "The exact Grok review is delivered and reconciled; the single frozen audit is spent and must not be rerun."
  ]
}
