{
  "format": "vercy-model-allocation-candidate/v1",
  "contourId": "EM-FAC-02",
  "proposedName": "Environmental Impact Calculation Run",
  "modelId": null,
  "registryId": null,
  "allocationState": "unassigned",
  "decision": "NEW MODEL",
  "canonicalPublishable": false,
  "identityTest": {
    "stableIdentity": "Each calculation execution has immutable identity independent of its disclosure and source facts.",
    "versionIdentity": "Corrections or changed inputs create successor runs rather than editing a completed execution.",
    "independentLifecycle": [
      "planned",
      "running",
      "completed",
      "failed",
      "superseded",
      "retired"
    ],
    "mastership": "environmental inventory calculation authority"
  },
  "boundary": {
    "owns": [
      "immutable calculation execution identity",
      "pinned boundary, method, activity, factor and characterization inputs",
      "executor and execution time",
      "contained scoped results, coverage, uncertainty and residuals",
      "reconciliation and successor lineage"
    ],
    "references": [
      {
        "target": "WM-ECO-034",
        "purpose": "Disclosure revisions selecting calculation results",
        "edgeState": "unapproved"
      },
      {
        "target": "WM-FLW-015",
        "purpose": "Consumption activity inputs",
        "edgeState": "unapproved"
      },
      {
        "target": "WM-MAT-008",
        "purpose": "Other measured activity inputs",
        "edgeState": "unapproved"
      },
      {
        "target": "WM-DAT-001",
        "purpose": "Pinned source datasets",
        "edgeState": "unapproved"
      },
      {
        "target": "WM-OBJ-001",
        "purpose": "Source assets",
        "edgeState": "unapproved"
      },
      {
        "target": "WM-ACT-009",
        "purpose": "Pinned calculation method edition",
        "edgeState": "unapproved"
      },
      {
        "target": "WM-ACT-053",
        "purpose": "Generic execution semantics",
        "edgeState": "unapproved"
      },
      {
        "target": "WM-KNW-012",
        "purpose": "Allocation rule and recalculation policy statements",
        "edgeState": "unapproved"
      }
    ],
    "excludes": [
      "source activity identity",
      "factor-registry identity",
      "inventory-boundary identity",
      "disclosure lifecycle",
      "financial posting",
      "assurance engagement"
    ]
  },
  "objects": {
    "EnvironmentalImpactCalculationRun": {
      "identity": [
        "calculationRunId"
      ],
      "required": [
        "boundaryRevisionRef",
        "methodEditionRef",
        "activityRevisionRefs",
        "factorVersionRefs",
        "characterizationSetRef",
        "executorRef",
        "executedAt",
        "status",
        "comparability"
      ],
      "optional": [
        "allocationRuleRef",
        "conversionTableRef",
        "successorRunRef"
      ],
      "lifecycle": [
        "planned",
        "running",
        "completed",
        "failed",
        "superseded",
        "retired"
      ],
      "lifecycleTransitions": [
        "planned->running",
        "running->completed",
        "running->failed",
        "completed->superseded",
        "superseded->retired",
        "failed->retired"
      ],
      "comparability": {
        "required": [
          "additiveWithin",
          "nonAdditiveWithRunRefs",
          "comparableWithRunRefs"
        ],
        "closedSets": {
          "additiveWithin": [
            "none",
            "sameRunSameMethod"
          ]
        }
      }
    },
    "EnvironmentalImpactResult": {
      "identity": [
        "calculationRunId",
        "resultId"
      ],
      "required": [
        "scope",
        "category",
        "impactCategory",
        "quantityKind",
        "quantity",
        "unit",
        "method",
        "coverage",
        "uncertainty",
        "characterizationBasis"
      ],
      "optional": [
        "gas",
        "excludedResidual",
        "sourceRefs",
        "marketInstrumentRetirementRef",
        "residualMixFactorVersionRef",
        "limitationDisclosed"
      ],
      "forbidden": [
        "monetaryAmount",
        "currency",
        "cost",
        "gasOrImpactKind"
      ],
      "closedSets": {
        "method": [
          "locationBased",
          "marketBased",
          "processLca",
          "spendProxy",
          "supplierSpecific"
        ],
        "quantityKind": [
          "massCo2e",
          "massGas",
          "energy",
          "volume",
          "mass",
          "area",
          "count"
        ],
        "impactCategory": [
          "ghgEmissions",
          "waterConsumption",
          "wasteGenerated",
          "landUse",
          "acidification",
          "eutrophication"
        ],
        "gas": [
          "co2",
          "ch4",
          "n2o",
          "sf6",
          "nf3",
          "hfc",
          "pfc",
          "mixed"
        ],
        "scope": [
          "scope1",
          "scope2",
          "scope3"
        ],
        "category": [
          "category1",
          "category2",
          "category3",
          "category4",
          "category5",
          "category6",
          "category7",
          "category8",
          "category9",
          "category10",
          "category11",
          "category12",
          "category13",
          "category14",
          "category15",
          "notApplicable"
        ]
      },
      "conditionalRequirements": [
        "marketBased requires exactly one of marketInstrumentRetirementRef or residualMixFactorVersionRef",
        "residualMixFactorVersionRef requires limitationDisclosed true",
        "characterizationBasis is none when gas is absent and otherwise pins the characterization set"
      ]
    },
    "ComparabilityBridge": {
      "identity": [
        "calculationRunId",
        "bridgeId"
      ],
      "required": [
        "baselineRunRef",
        "effects",
        "residualUnexplained"
      ],
      "optional": [
        "notes"
      ],
      "effectKindClosedSet": [
        "boundary",
        "method",
        "factor",
        "activity"
      ]
    }
  },
  "invariants": [
    "Every result pins boundary, method, factor and characterization versions.",
    "Units are compatible and conversions cite authority.",
    "Measured, derived, allocated, estimated and proxy inputs remain distinct.",
    "Missing data is never zero.",
    "Location- and market-based results are non-additive.",
    "One source interval maps once per boundary and axis.",
    "Market claims cite unique retirement evidence.",
    "Counterparty inventories are not netted across boundaries.",
    "Runs are immutable and corrected by successors.",
    "A run is neither a disclosure nor a financial posting.",
    "Coverage and exclusions accompany aggregates.",
    "Activity, factor, representativeness and coverage uncertainty stay separate.",
    "Disclosure cites selected result revisions without copying their history.",
    "Run and contained-result identifiers are never recycled.",
    "A required reference whose master is unallocated is declared in unallocatedDependencies and blocks the run; no identifier is invented to satisfy it.",
    "Results whose runs differ in method, boundary revision or factor set version are never summed or averaged.",
    "A run that changes boundary revision, method or factor set version relative to a cited baseline carries one ComparabilityBridge whose effects plus residualUnexplained reconcile the difference exactly.",
    "A market-based result carries exactly one of a retirement reference or a pinned residual-mix factor version.",
    "A market-based result without a uniquely retired instrument uses a pinned residual mix and discloses the limitation.",
    "One retirement or cancellation reference supports at most one market-based result across all runs and all organizations.",
    "Financial cost never substitutes for impact quantity.",
    "Environmental impact result instances exist only on a run whose status is completed, superseded or retired.",
    "A completed run is append-only: inputs, results and contained objects never change.",
    "retired closes a run to new citation and never makes it unresolvable; a run cited by any disclosure revision remains resolvable permanently.",
    "A failed run contains no results.",
    "Assurance and filing never mutate, re-open or re-state a closed run; they reference pinned run and result identities.",
    "Impact category, gas and characterization basis are distinct fields and are never conflated.",
    "Every enumerated field is a closed set; an unrecognised value blocks the run rather than passing through."
  ],
  "holds": [
    "Registry allocation is pending and no identifier may be guessed.",
    "Independent Grok review is pending.",
    "Boundary, factor-registry and characterization-set allocations are unresolved.",
    "Assurance identity, frozen audit, relations and fixtures remain pending.",
    "No approved relation edge exists for any reference in this candidate; all reference edges are declared unapproved."
  ],
  "unallocatedDependencies": [
    {
      "localName": "GWPCharacterizationSet",
      "requiredBy": [
        "EnvironmentalImpactCalculationRun.characterizationSetRef"
      ],
      "allocationState": "unassigned",
      "outOfContour": true,
      "blocksRun": true
    },
    {
      "localName": "MarketInstrumentRetirement",
      "requiredBy": [
        "EnvironmentalImpactResult.marketInstrumentRetirementRef"
      ],
      "allocationState": "unassigned",
      "outOfContour": true,
      "blocksRun": true
    },
    {
      "localName": "AssuranceEngagement",
      "requiredBy": [],
      "allocationState": "unassigned",
      "outOfContour": true,
      "blocksRun": false
    }
  ]
}
