No tools used; this is the single frozen no-tools audit. Evidence admitted: the initial Claude study, the local synthesis, the exact visible Grok response (text only — all hidden browsing, hidden reasoning and any source it implies are excluded and may not be used as a pin), and the eight appended candidate artifacts. --- # 1. Verdict on decision and artifacts **Decision: ACCEPT, unchanged.** All three admitted lines of evidence converge, and the convergence survives independent reconstruction: - **WM-ECO-034 reused for Sustainability Disclosure only** — accepted. A disclosure revision is a publication surface; it does not choose a consolidation approach, hold activity, version factors, or own an execution. WM-ECO-034's scope statement does contradict its own out-of-scope list (study hold, synthesis hold); that is a defect **in WM-ECO-034**, not a reason to re-master here, and the narrowing constraint in the profile candidate is the correct deterministic fix. - **Activity Data profiled over WM-FLW-015 and WM-MAT-008; no Activity Data root** — accepted. WM-FLW-015 already self-declares consumption as "an activity datum for external factor, footprint or LCA calculations," which defeats a separate root on identity grounds, not merely on parsimony grounds. - **Three independent identifier-unassigned roots** — accepted. Each passes the independent-lifecycle test on a distinct clock: boundary on consolidation change, factor set on publisher release, run on execution. Grok's reconstruction of this split is corroborating but adds nothing the study did not already establish from the bases. - **Results run-contained; factor versions set-contained** — accepted in principle, **not representable in the artifacts as written** (defects D1, D5, D9). - **Distinctions held** — organizational/operational/value-chain, location-based/market-based non-additivity, the five quality classes, cost-is-never-impact, no cross-counterparty netting: all accepted as settled semantics. **D2, D3, D5, D6, D7, D8, D14 show that several of these are asserted in prose and invariant lists but cannot be expressed, enforced, or falsified by the object schemas and fixtures supplied.** - **No runtime or model identifier allocated** — accepted and verified: `modelId`, `registryId` are null and `allocationState` is `unassigned` in all three candidates; `newRuntimeId` is false in the profile. No identifier is allocated by this audit. **Artifacts: REJECT as frozen-ready; ACCEPT as the correct basis.** The three allocation candidates, the profile candidate, the three fixture sets and the three validation policies are structurally sound and semantically aligned with the settled boundary, but they are not a sufficient artifact set. Fourteen material defects are listed below. Nine (D1, D2, D3, D4, D5, D6, D7, D9, D14) are schema defects that make a settled invariant unrepresentable or silently satisfiable; the remainder are declaration, contradiction or test-harness defects. The three validation policies are byte-identical and all three are passed by the current artifacts, which means the policies do not discriminate and cannot detect any of D1–D14. No publication readiness, canonical completeness, installability, or relation approval is claimed or implied. --- # 2. Material defects and exact deterministic remediation ### D1 — Factor sets do not exist; set containment is unrepresentable The settled boundary requires "factor versions are contained by governed factor sets," and the study specifies FactorSet → Factor → FactorVersion. The Emission Factor Registry candidate has only `EmissionFactorRegistry` and `FactorVersion`. `FactorVersion.identity` is `["factorRegistryId","factorId","version"]` — registry-contained, not set-contained. `EmissionFactorRegistry.required.currentReleaseRef` points at an object type that is never defined. **Remediation.** In the Emission Factor Registry candidate, add to `objects`: `"FactorSet": {"identity":["factorRegistryId","factorSetId","setVersion"],"required":["releaseLabel","publisherRef","publishedAt","contentDigest","immutable"],"optional":["supersedesSetVersion","licenceRef","withdrawnAt"],"lifecycle":["draft","published","effective","superseded","withdrawn"]}`. Change `FactorVersion.identity` to `["factorRegistryId","factorSetId","setVersion","factorId"]`. Define `currentReleaseRef` as a reference to one `FactorSet` identity triple. Add invariants: `"A factor version exists only inside one published factor set version."`, `"A published factor set version never gains, loses or alters a factor version."`, `"A calculation run pins factor set versions, never bare factor names."` Remove `version` as a standalone FactorVersion identity component so that factor history is carried by set version. ### D2 — The three boundary facets are collapsed into one revision, destroying independent versioning The study requires "three separately versioned boundaries"; the settled boundary requires they "remain distinct." `BoundaryRevision` carries `consolidationApproach`, `operationalScopes` and `valueChainCoverage` as sibling fields under one `revision`, one `effectiveFrom` and one `contentDigest`. A value-chain coverage change therefore mints a new organizational and operational boundary identity. The invariant `"Organizational, operational and value-chain boundaries remain separate facets."` is unfalsifiable against this schema, and fixture `scope-collapse` passes trivially because nothing in the schema is a single undifferentiated scope field. **Remediation.** In the Inventory Boundary candidate, replace the three fields with three contained facet objects, each independently versioned: `"OrganizationalFacetRevision": {"identity":["inventoryBoundaryId","organizationalFacetRevision"],"required":["consolidationApproach","includedEntityRefs","effectiveFrom","contentDigest"],"optional":["effectiveTo","supersedesRevision"]}`, `"OperationalFacetRevision": {"identity":["inventoryBoundaryId","operationalFacetRevision"],"required":["includedSourceRefs","scopeClassification","effectiveFrom","contentDigest"],"optional":["effectiveTo","supersedesRevision"]}`, `"ValueChainFacetRevision": {"identity":["inventoryBoundaryId","valueChainFacetRevision"],"required":["categoryInclusion","coveragePercent","exclusions","effectiveFrom","contentDigest"],"optional":["effectiveTo","supersedesRevision"]}`. `BoundaryRevision.required` becomes `["organizationalFacetRevisionRef","operationalFacetRevisionRef","valueChainFacetRevisionRef","recalculationPolicyRef","effectiveFrom","contentDigest"]`. Add invariant: `"A composite boundary revision pins exactly one revision of each facet, and a facet revision changes only when that facet changes."` Restrict `consolidationApproach` to the closed set `["equityShare","financialControl","operationalControl"]`. ### D3 — The activity quality-class enumeration differs in all four places it appears and is not closed Four mutually inconsistent lists are in evidence: study — measured, metered, derived, allocated, estimated, modelled, spend-proxy (7); synthesis — measured, derived, allocated, estimated, modelled, spend-proxy (6); profile candidate constraint — the same 6; settled boundary — measured, estimated, modelled, allocated, spend-proxy (5); visible Grok — measured, estimated, spend-proxy (3, exclusive). No artifact declares the enumeration closed, and no artifact declares it exclusive. The settled boundary governs; Grok's three-term list is a strict subset and is subsumed, not authoritative. **Remediation.** In the profile candidate, replace the quality-class constraint with: `"Every activity datum carries exactly one qualityClass from the closed set [\"measured\",\"estimated\",\"modelled\",\"allocated\",\"spendProxy\"]."` Add a second, non-exclusive, optional field `acquisitionMethod` with closed set `["metered","sensor","invoice","manual","derived"]`, and the constraint `"acquisitionMethod refines qualityClass and never substitutes for it; \"derived\" and \"metered\" are acquisition facts, not quality classes."` Propagate the identical five-term closed set, verbatim, into Inventory Boundary invariants, Environmental Impact Calculation Run invariant 3 (currently "Measured, derived, allocated, estimated and proxy inputs remain distinct"), and the three fixture sets. Add constraint: `"A new Activity Data root is forbidden; the profile allocates no identifier."` ### D4 — `characterizationSetRef` and `methodEditionRef` are required but have no declared target `ImpactCalculationRun.required` includes both. The characterization set is explicitly excluded by the Emission Factor Registry and by the Inventory Boundary, is listed as an open hold in all three candidates, and has no allocated home — so a required field points at nothing. `methodEditionRef` is unexplained: the study names WM-ACT-009 for the method edition and WM-ACT-053 for generic execution, but neither appears in the run candidate's `references`. The settled boundary forbids allocating a new identifier, so the gap must be declared, not filled. **Remediation.** In the Environmental Impact Calculation Run candidate add `"unallocatedDependencies":[{"localName":"GWPCharacterizationSet","requiredBy":["ImpactCalculationRun.characterizationSetRef"],"allocationState":"unassigned","outOfContour":true,"blocksRun":true},{"localName":"MarketInstrumentRetirement","requiredBy":["ImpactResult.marketInstrumentRetirementRef"],"allocationState":"unassigned","outOfContour":true,"blocksRun":true},{"localName":"AssuranceEngagement","requiredBy":[],"allocationState":"unassigned","outOfContour":true,"blocksRun":false}]`. Add to `boundary.references`: `{"target":"WM-ACT-009","purpose":"Pinned calculation method edition"}` and `{"target":"WM-ACT-053","purpose":"Generic execution semantics"}`, and `{"target":"WM-KNW-012","purpose":"Allocation rule and recalculation policy statements"}`. Add to the Inventory Boundary `references`: `{"target":"WM-KNW-012","purpose":"Recalculation policy statement"}` and `{"target":"WM-KNW-013","purpose":"Significance threshold"}`, since `recalculationPolicyRef` is required with no referenced master. Add invariant: `"A required reference whose master is unallocated is declared in unallocatedDependencies and blocks the run; no identifier is invented to satisfy it."` ### D5 — Non-additivity, non-comparability and the reconciliation bridge are asserted everywhere and representable nowhere The invariant `"Location- and market-based results are non-additive."` appears in the run candidate; `"Boundary bridge distinguishes boundary, method, factor and activity effects."` and `"Original and recalculated results remain resolvable."` appear in the Inventory Boundary. The acceptance scenario in all three documents turns on the bridge. No object has a non-additivity marker, a comparability flag, a baseline reference, or a bridge. Nothing stops a consumer summing R1 and R2. **Remediation.** Add to `ImpactCalculationRun.required` the field `comparability`, an object with required `additiveWithin` (closed set `["none","sameRunSameMethod"]`), required `nonAdditiveWithRunRefs` (array, may be empty), required `comparableWithRunRefs` (array, may be empty). Add a contained object: `"ComparabilityBridge": {"identity":["calculationRunId","bridgeId"],"required":["baselineRunRef","effects","residualUnexplained"],"optional":["notes"]}` where `effects` is an array of `{"effectKind","quantity","unit"}` and `effectKind` is the closed set `["boundary","method","factor","activity"]`. Add invariants: `"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."` ### D6 — Market-based method has no required evidence binding Run invariant `"Market claims cite unique retirement evidence."` has no corresponding field. `ImpactResult.required.method` is a bare value; there is no retirement reference, no residual-mix fallback reference, and no uniqueness scope for a claim. **Remediation.** Restrict `ImpactResult.method` to the closed set `["locationBased","marketBased","processLca","spendProxy","supplierSpecific"]`. Add the conditional requirement: when `method == "marketBased"`, exactly one of `marketInstrumentRetirementRef` or `residualMixFactorVersionRef` is required and the other is forbidden; when `residualMixFactorVersionRef` is used, `limitationDisclosed` is required and true. Add invariant: `"One retirement or cancellation reference supports at most one market-based result across all runs and all organizations."` Declare `MarketInstrumentRetirement` in `unallocatedDependencies` per D4; do not allocate a root for it. ### D7 — The cost/impact separation has no schema enforcement `"Financial cost never substitutes for impact quantity."` is invariant 12 of the synthesis, invariant 7 of the visible Grok response, and invariant 12 of the Emission Factor Registry — but it is absent from the run candidate's invariant list, and `ImpactResult.required` is `quantity` + `unit` with no quantity-kind restriction. A monetary amount in `quantity` with a currency in `unit` validates. Symmetrically, the spend-proxy basis (currency, currency year, deflator, EEIO factor) has no home on the activity profile. **Remediation.** Add `quantityKind` to `ImpactResult.required`, restricted to the closed set `["massCo2e","massGas","energy","volume","mass","area","count"]`, and add the prohibition `"ImpactResult admits no monetary field; monetaryAmount, currency and cost are forbidden keys on ImpactResult."` In the profile candidate, require that a `spendProxy` activity datum carries a separate `proxyBasis` substructure with required `monetaryAmount`, `currency`, `currencyYear`, `deflatorRef`, `eeioFactorVersionRef`, and the constraint `"proxyBasis is never read as a physical quantity and never as an impact quantity."` Add the cost-separation invariant verbatim to the run candidate's invariant list. ### D8 — A counterparty's claimed share has no container, so netting is forbidden only in prose The study is explicit that "a counterparty's claimed share is stored as an assertion, never as truth," and the settled boundary forbids netting supplier Scope 1 against buyer Scope 3. The only artifact mechanism is the invariant text plus fixture `cross-boundary-netting`. There is no field distinguishing an own-boundary fact from a counterparty assertion, so the shared-asset share-sum invariant (`≤ 1` within one consolidation approach) cannot be evaluated against anything. **Remediation.** Add to `BoundaryRevision.optional` a `counterpartyAssertions` array with required `assertedByOrgRef`, `assertedShare`, `consolidationApproach`, `assertionStatus` from the closed set `["unverified","corroborated","disputed"]`, and `evidenceRef`. Add invariants: `"A counterparty assertion is never an input to a result quantity."`, `"Shared-asset shares held under one consolidation approach sum to at most 1.0, and any shortfall is exposed as a declared residual."`, `"Inventories held by different counterparties are never netted, eliminated or deduplicated against each other."` Add the last of these to the Inventory Boundary invariant list, where it is currently absent. ### D9 — Run lifecycle permits results outside `completed` and permits an unresolvable `retired` run `ImpactCalculationRun.lifecycle` is `["planned","running","completed","failed","superseded","retired"]`, while `ImpactResult` is contained with no status predicate. Results may therefore exist on a `planned` or `running` run, which contradicts `"Runs are immutable and corrected by successors."` No transition set is declared. `retired` is undefined and, read plainly, would strand any disclosure that cites the run — contradicting `"Original and recalculated results remain resolvable."` and the Emission Factor Registry's analogous `"Withdrawn factors remain resolvable for historical runs."` **Remediation.** Declare the exact transition set `planned→running`, `running→completed`, `running→failed`, `completed→superseded`, `superseded→retired`, `failed→retired`; all other transitions forbidden; no transition out of `retired`. Add invariants: `"ImpactResult 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."` ### D10 — `baseYear` is optional but the base-year invariant is unconditional `BoundaryRevision.optional` contains `baseYear`, while the Inventory Boundary invariant set asserts `"Base year is boundary-scoped and cites a recalculation policy."` and `"Structural change triggers recalculation and comparability review."` An effective boundary with no base year satisfies the schema and breaches the invariant. **Remediation.** Move `baseYear` to required on `BoundaryRevision` and permit the explicit sentinel value `"notEstablished"`, allowed only while `InventoryBoundary.status` is `draft`. Add invariant: `"A boundary revision whose status is approved or effective carries an established base year and a recalculation policy reference; \"notEstablished\" is a draft-only sentinel and never reaches a calculation run."` ### D11 — Assurance mastership is unallocated and the "assurance cannot mutate a closed run" invariant is missing from every candidate The study places assurance engagement identity outside the contour with no allocated home; Grok's visible invariant 14 is `"Assurance and filing cannot mutate a closed run."` That invariant appears in none of the three candidates. The profile candidate's constraint `"Approval, assurance, filing, publication and compliance remain separate states."` risks reading as if WM-ECO-034 owns assurance *engagement* identity, which it does not. **Remediation.** In the profile candidate, amend the constraint to `"WM-ECO-034 owns only the disclosure-side approval, assurance, filing, publication and compliance states; assurance engagement identity, scope, level and conclusion are externally mastered, unallocated, and out of contour."` Add to the Environmental Impact Calculation Run invariants: `"Assurance and filing never mutate, re-open or re-state a closed run; they reference pinned run and result identities."` Declare `AssuranceEngagement` in `unallocatedDependencies` per D4. Allocate no root for it. ### D12 — WM-ORG-012 is referenced as if it carried approved consolidation semantics The Inventory Boundary references `{"target":"WM-ORG-012","purpose":"Group and consolidation context"}` with no edge-state qualifier, while the study's own hold records WM-ORG-012 as Codex-only with proposed edges only, and Grok's blocker list names `"consolidation approach exists only as org hierarchy"` as a failure mode. As written, an implementer may resolve the consolidation approach by traversing WM-ORG-012. **Remediation.** Qualify every reference entry with `edgeState`, valued `"unapproved"` for WM-ORG-012 and for any other target lacking an approved relation edge — which, per both the study and the synthesis, is currently all of them. Add invariant: `"consolidationApproach is a dated decision carried on the organizational facet revision and is never derived by traversing an organization or group master."` Add a hold: `"No approved relation edge exists for any reference in this candidate; all reference edges are declared unapproved."` ### D13 — Fixture format lacks four required keys and the three validation policies are identical and non-discriminating The three fixture sets use `vercy-enterprise-allocation-fixtures/v1`, whose cases carry only `id`, `kind`, `input`, `expect`. All 21 lack `target`, `violates`, `closesDefect`; all 12 negatives lack `expectedCode`, so no negative is deterministically checkable — any rejection for any reason passes. The three validation policies are byte-identical, set `minimumFixtures: 3` against 7 actual, `minimumInvariants: 8` against 14 actual, and are all satisfied by the current artifacts, which is why none of D1–D14 is caught. **Remediation.** Bump the fixture format to `vercy-enterprise-allocation-fixtures/v2` requiring exactly the key set `["id","target","kind","input","expect","violates","closesDefect"]` plus `expectedCode` on every `kind == "negative"`. Backfill all 21 prior cases with `target` set to the owning candidate name, `violates` set to the invariant text under test, `closesDefect` set to `null` (pre-existing coverage, not defect-closing), and an `expectedCode` on each of the 12 negatives drawn from the code vocabulary used in §3. The 21 prior ids are already globally distinct and are retained verbatim. Amend all three validation policies to add `"requiresNegativeExpectedCode": true`, `"requiresDefectLinkage": true`, `"forbidsRootsOutsideSettledSet": ["Inventory Boundary","Emission Factor Registry","Environmental Impact Calculation Run"]`, `"forbidsActivityDataRoot": true`, `"requiresClosedEnumerations": true`, `"requiresUnallocatedDependencyDeclaration": true`, `"requiresReferenceEdgeState": true`, `"minimumInvariants": 14`, and set `minimumFixtures` to the per-candidate post-remediation count rather than 3. ### D14 — Overloaded and open-valued enumerations survive inside the contour the rename was meant to disambiguate The study's hold on the overloading of "impact" was resolved at the root level by the names *Inventory Boundary* and *Environmental Impact Calculation Run*, but the contained objects are still `ImpactCalculationRun` and `ImpactResult`, and `ImpactResult.required` includes the single conflated field `gasOrImpactKind`. A gas and an impact category are different axes: CH₄ characterized under AR6 GWP100 is one gas and one category, and the conflated field cannot express both or either unambiguously. Separately, `FactorVersion.methodClass`, `BoundaryRevision.consolidationApproach`, `ImpactResult.scope` and `ImpactResult.category` are all open-valued. **Remediation.** Rename the contained objects to `EnvironmentalImpactCalculationRun` and `EnvironmentalImpactResult`, matching the settled root names. Replace `gasOrImpactKind` with required `impactCategory` from the closed set `["ghgEmissions","waterConsumption","wasteGenerated","landUse","acidification","eutrophication"]`, optional `gas` from the closed set `["co2","ch4","n2o","sf6","nf3","hfc","pfc","mixed"]`, and required `characterizationBasis` which is `"none"` when `gas` is absent and otherwise the pinned characterization set reference. Close the remaining enumerations: `FactorVersion.methodClass` to `["supplierSpecific","gridAverage","residualMix","eeioSpend","processLca","proxy"]`; `ImpactResult.scope` to `["scope1","scope2","scope3"]`; `ImpactResult.category` to the fifteen declared value-chain categories plus `"notApplicable"`. Add invariant: `"Every enumerated field is a closed set; an unrecognised value blocks the run rather than passing through."` --- # 3. Additional fixtures Convention, declared so the array is unambiguous: `violates` names the single invariant under test — the statement a negative case breaches and a positive case must uphold. `closesDefect` names the defect from §2 that the fixture closes. `target` names the owning candidate. `expectedCode` is present on every negative and absent on every positive. ```json [ {"id":"factor-set-release-pin","target":"Emission Factor Registry","kind":"positive","input":"A run cites factor registry R, factor set S, set version 2024.1, factor grid-regional-NL.","expect":"The factor resolves only through the pinned set version, and the set version is immutable after publication.","violates":"A factor version exists only inside one published factor set version.","closesDefect":"D1"}, {"id":"factor-version-without-set","target":"Emission Factor Registry","kind":"negative","input":"A factor version is identified by registry, factor and version alone, with no factor set version.","expect":"The factor version is rejected because set containment is part of its identity.","violates":"A factor version exists only inside one published factor set version.","closesDefect":"D1","expectedCode":"FACTOR_SET_CONTAINMENT_MISSING"}, {"id":"factor-set-release-mutated","target":"Emission Factor Registry","kind":"negative","input":"A new factor is added to published factor set version 2024.1.","expect":"The mutation is rejected; a successor set version is required.","violates":"A published factor set version never gains, loses or alters a factor version.","closesDefect":"D1","expectedCode":"FACTOR_SET_VERSION_IMMUTABLE_VIOLATION"}, {"id":"facet-independent-revision","target":"Inventory Boundary","kind":"positive","input":"Value-chain category 11 coverage rises from 40 to 70 percent with no entity or source change.","expect":"Only the value-chain facet revision increments; organizational and operational facet revision identities are unchanged; a new composite boundary revision pins the new value-chain facet and the unchanged other two.","violates":"A composite boundary revision pins exactly one revision of each facet, and a facet revision changes only when that facet changes.","closesDefect":"D2"}, {"id":"facet-bundled-bump","target":"Inventory Boundary","kind":"negative","input":"A switch from financial control to equity share increments the value-chain and operational facet revision identities although neither facet changed.","expect":"The revision is rejected because facet versions are coupled.","violates":"A composite boundary revision pins exactly one revision of each facet, and a facet revision changes only when that facet changes.","closesDefect":"D2","expectedCode":"BOUNDARY_FACET_VERSION_COUPLED"}, {"id":"consolidation-approach-closed-set","target":"Inventory Boundary","kind":"negative","input":"An organizational facet revision declares consolidationApproach as proportionalConsolidation.","expect":"The revision is rejected because the value is outside the closed set of equity share, financial control and operational control.","violates":"Every enumerated field is a closed set; an unrecognised value blocks the run rather than passing through.","closesDefect":"D2","expectedCode":"CONSOLIDATION_APPROACH_NOT_IN_CLOSED_SET"}, {"id":"quality-class-with-acquisition","target":"Enterprise Sustainability Activity and Disclosure Binding","kind":"positive","input":"A half-hourly electricity reading from a revenue-grade meter is recorded as an activity datum.","expect":"qualityClass is measured and acquisitionMethod is metered; the two fields are stored separately and the meter observation is cited as evidence on WM-MAT-008.","violates":"Every activity datum carries exactly one qualityClass from the closed set measured, estimated, modelled, allocated, spendProxy.","closesDefect":"D3"}, {"id":"quality-class-open-enum","target":"Enterprise Sustainability Activity and Disclosure Binding","kind":"negative","input":"An activity datum records qualityClass as derived.","expect":"The datum is rejected; derived is an acquisitionMethod refinement, not a quality class.","violates":"Every activity datum carries exactly one qualityClass from the closed set measured, estimated, modelled, allocated, spendProxy.","closesDefect":"D3","expectedCode":"ACTIVITY_QUALITY_CLASS_NOT_IN_CLOSED_SET"}, {"id":"quality-class-not-exclusive","target":"Enterprise Sustainability Activity and Disclosure Binding","kind":"negative","input":"One activity datum asserts both measured and spendProxy quality classes for the same quantity.","expect":"The datum is rejected because exactly one quality class is permitted.","violates":"Every activity datum carries exactly one qualityClass from the closed set measured, estimated, modelled, allocated, spendProxy.","closesDefect":"D3","expectedCode":"ACTIVITY_QUALITY_CLASS_NOT_EXCLUSIVE"}, {"id":"activity-data-root-attempted","target":"Enterprise Sustainability Activity and Disclosure Binding","kind":"negative","input":"An Activity Data root with its own identity and lifecycle is proposed alongside the profile.","expect":"The proposal is rejected; activity data is profiled over WM-FLW-015 and WM-MAT-008 and receives no root and no identifier.","violates":"A new Activity Data root is forbidden; the profile allocates no identifier.","closesDefect":"D3","expectedCode":"ACTIVITY_DATA_ROOT_FORBIDDEN"}, {"id":"activity-carrier-disjoint","target":"Enterprise Sustainability Activity and Disclosure Binding","kind":"negative","input":"A metered electricity consumption quantity is carried as a WM-MAT-008 observation and simultaneously as a WM-FLW-015 consumption fact for the same source, interval and quantity kind.","expect":"The second carrier is rejected; consumption quantities are carried on WM-FLW-015 and cite WM-MAT-008 observations as evidence only.","violates":"Exactly one activity-datum carrier exists per source, interval and quantity kind.","closesDefect":"D3","expectedCode":"ACTIVITY_CARRIER_DUPLICATED"}, {"id":"unallocated-dependency-declared","target":"Environmental Impact Calculation Run","kind":"positive","input":"A run requires a GWP characterization set but no characterization-set master is allocated.","expect":"The run declares GWPCharacterizationSet in unallocatedDependencies with allocationState unassigned and blocksRun true, invents no identifier, and does not execute.","violates":"A required reference whose master is unallocated is declared in unallocatedDependencies and blocks the run; no identifier is invented to satisfy it.","closesDefect":"D4"}, {"id":"characterization-ref-invented","target":"Environmental Impact Calculation Run","kind":"negative","input":"characterizationSetRef is populated with a plausible but unallocated registry-style identifier.","expect":"The run is rejected because the identifier was not allocated.","violates":"A required reference whose master is unallocated is declared in unallocatedDependencies and blocks the run; no identifier is invented to satisfy it.","closesDefect":"D4","expectedCode":"IDENTIFIER_NOT_ALLOCATED"}, {"id":"method-edition-unpinned","target":"Environmental Impact Calculation Run","kind":"negative","input":"A run executes with activity revisions and factor set versions pinned but methodEditionRef absent.","expect":"The run is blocked because the method edition is not pinned.","violates":"Every result pins boundary, method, factor and characterization versions.","closesDefect":"D4","expectedCode":"METHOD_EDITION_UNPINNED"}, {"id":"bridge-decomposition","target":"Environmental Impact Calculation Run","kind":"positive","input":"Run R3 on equity-share boundary B2 with a 2025 factor set is compared to baseline run R1 on operational-control boundary B1 with a 2024 factor set.","expect":"R3 carries one ComparabilityBridge citing R1 with boundary, method, factor and activity effects plus residualUnexplained reconciling the difference exactly, and R1 and R3 are marked non-comparable.","violates":"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.","closesDefect":"D5"}, {"id":"non-additive-sum","target":"Environmental Impact Calculation Run","kind":"negative","input":"A consumer sums the location-based result of R1 and the market-based result of R2 into one Scope 2 total.","expect":"The aggregation is rejected because the two results are declared non-additive.","violates":"Results whose runs differ in method, boundary revision or factor set version are never summed or averaged.","closesDefect":"D5","expectedCode":"NON_ADDITIVE_AGGREGATION"}, {"id":"bridge-residual-undeclared","target":"Environmental Impact Calculation Run","kind":"negative","input":"A bridge lists boundary, method, factor and activity effects that do not sum to the observed difference, and omits residualUnexplained.","expect":"The bridge is rejected because the unexplained remainder must be declared.","violates":"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.","closesDefect":"D5","expectedCode":"BRIDGE_RESIDUAL_UNDECLARED"}, {"id":"market-based-with-retirement","target":"Environmental Impact Calculation Run","kind":"positive","input":"A market-based Scope 2 result cites a specific retired energy attribute certificate.","expect":"The result carries marketInstrumentRetirementRef, omits residualMixFactorVersionRef, and the retirement reference supports no other result in any run.","violates":"One retirement or cancellation reference supports at most one market-based result across all runs and all organizations.","closesDefect":"D6"}, {"id":"market-based-residual-fallback","target":"Environmental Impact Calculation Run","kind":"positive","input":"A market-based Scope 2 result exists for a site with no contractual instrument.","expect":"The result carries residualMixFactorVersionRef, omits marketInstrumentRetirementRef, and sets limitationDisclosed true.","violates":"A market-based result without a uniquely retired instrument uses a pinned residual mix and discloses the limitation.","closesDefect":"D6"}, {"id":"market-claim-no-evidence","target":"Environmental Impact Calculation Run","kind":"negative","input":"A market-based result carries neither a retirement reference nor a residual-mix factor version.","expect":"The run is blocked because the market-based method lacks required evidence.","violates":"A market-based result carries exactly one of a retirement reference or a pinned residual-mix factor version.","closesDefect":"D6","expectedCode":"MARKET_CLAIM_EVIDENCE_MISSING"}, {"id":"instrument-claimed-twice","target":"Environmental Impact Calculation Run","kind":"negative","input":"One retired certificate is cited by market-based results in two different organizations' runs.","expect":"The second claim is rejected because the retirement reference is already consumed.","violates":"One retirement or cancellation reference supports at most one market-based result across all runs and all organizations.","closesDefect":"D6","expectedCode":"MARKET_INSTRUMENT_CLAIM_NOT_UNIQUE"}, {"id":"spend-proxy-basis-separated","target":"Enterprise Sustainability Activity and Disclosure Binding","kind":"positive","input":"Annual cloud spend of 1.2 million in a stated currency and currency year supports an EEIO-based estimate.","expect":"qualityClass is spendProxy; monetaryAmount, currency, currencyYear, deflatorRef and eeioFactorVersionRef sit in proxyBasis; the physical quantity field remains unknown; the resulting impact quantity carries wide uncertainty and low representativeness.","violates":"proxyBasis is never read as a physical quantity and never as an impact quantity.","closesDefect":"D7"}, {"id":"cost-as-result-quantity","target":"Environmental Impact Calculation Run","kind":"negative","input":"An impact result records quantity 1200000 with unit USD and quantityKind massCo2e.","expect":"The result is rejected because a monetary amount is never an impact quantity and no monetary field is admitted on a result.","violates":"Financial cost never substitutes for impact quantity.","closesDefect":"D7","expectedCode":"MONETARY_AMOUNT_AS_IMPACT_QUANTITY"}, {"id":"counterparty-share-as-assertion","target":"Inventory Boundary","kind":"positive","input":"A joint-venture partner states it reports 45 percent of a shared boiler.","expect":"The statement is stored as a counterparty assertion with assertedByOrgRef, assertedShare, consolidationApproach, assertionStatus unverified and evidenceRef, and is not used as an input to any result quantity.","violates":"A counterparty assertion is never an input to a result quantity.","closesDefect":"D8"}, {"id":"counterparty-assertion-as-fact","target":"Inventory Boundary","kind":"negative","input":"A partner's asserted 45 percent share is used directly as the apportionment driver in a run.","expect":"The run is rejected because an unverified counterparty assertion was consumed as fact.","violates":"A counterparty assertion is never an input to a result quantity.","closesDefect":"D8","expectedCode":"COUNTERPARTY_ASSERTION_USED_AS_FACT"}, {"id":"shared-share-sum-exceeded","target":"Inventory Boundary","kind":"negative","input":"Three participants under operational control declare shares of 0.5, 0.45 and 0.2 on one shared asset.","expect":"The apportionment is rejected because shares under one consolidation approach total 1.15.","violates":"Shared-asset shares held under one consolidation approach sum to at most 1.0, and any shortfall is exposed as a declared residual.","closesDefect":"D8","expectedCode":"SHARED_ASSET_SHARE_SUM_EXCEEDED"}, {"id":"results-only-on-completed","target":"Environmental Impact Calculation Run","kind":"positive","input":"A run transitions planned to running to completed and then is superseded by a corrected successor.","expect":"Results appear only at completed, remain readable through superseded, and the transition set permits no return to running.","violates":"Environmental impact result instances exist only on a run whose status is completed, superseded or retired.","closesDefect":"D9"}, {"id":"results-on-running-run","target":"Environmental Impact Calculation Run","kind":"negative","input":"Partial results are written to a run whose status is running.","expect":"The write is rejected because results exist only on a completed, superseded or retired run.","violates":"Environmental impact result instances exist only on a run whose status is completed, superseded or retired.","closesDefect":"D9","expectedCode":"RESULT_OUTSIDE_COMPLETED_RUN"}, {"id":"retired-run-unresolvable","target":"Environmental Impact Calculation Run","kind":"negative","input":"A run retired after supersession is made unresolvable while a published disclosure revision still cites it.","expect":"The retirement is rejected because a cited run remains permanently resolvable.","violates":"retired closes a run to new citation and never makes it unresolvable; a run cited by any disclosure revision remains resolvable permanently.","closesDefect":"D9","expectedCode":"CITED_RUN_NOT_RESOLVABLE"}, {"id":"effective-boundary-no-base-year","target":"Inventory Boundary","kind":"negative","input":"A boundary revision reaches effective status with baseYear set to notEstablished.","expect":"The transition is rejected because notEstablished is a draft-only sentinel.","violates":"A boundary revision whose status is approved or effective carries an established base year and a recalculation policy reference.","closesDefect":"D10","expectedCode":"BASE_YEAR_MISSING_ON_EFFECTIVE_BOUNDARY"}, {"id":"assurance-external-pin","target":"Environmental Impact Calculation Run","kind":"positive","input":"A limited-assurance engagement reaches a conclusion on specified Scope 1 and 2 results of run R1.","expect":"The engagement is externally mastered and unallocated, pins the run and result identities, and changes nothing inside R1.","violates":"Assurance and filing never mutate, re-open or re-state a closed run; they reference pinned run and result identities.","closesDefect":"D11"}, {"id":"assurance-mutates-run","target":"Environmental Impact Calculation Run","kind":"negative","input":"An assurance adjustment rewrites a Scope 1 result inside completed run R1.","expect":"The mutation is rejected; a successor run is required.","violates":"Assurance and filing never mutate, re-open or re-state a closed run; they reference pinned run and result identities.","closesDefect":"D11","expectedCode":"CLOSED_RUN_MUTATED_BY_ASSURANCE"}, {"id":"reference-edge-state-declared","target":"Inventory Boundary","kind":"positive","input":"The candidate references WM-ORG-012 for group context while no approved relation edge exists.","expect":"The reference carries edgeState unapproved, a matching hold is recorded, and nothing depends on traversing it.","violates":"No approved relation edge exists for any reference in this candidate; all reference edges are declared unapproved.","closesDefect":"D12"}, {"id":"consolidation-from-org-graph","target":"Inventory Boundary","kind":"negative","input":"The consolidation approach is resolved by traversing the group hierarchy in WM-ORG-012 rather than read from the organizational facet revision.","expect":"The resolution is rejected because consolidation approach is a dated boundary-scoped decision.","violates":"consolidationApproach is a dated decision carried on the organizational facet revision and is never derived by traversing an organization or group master.","closesDefect":"D12","expectedCode":"CONSOLIDATION_APPROACH_NOT_BOUNDARY_SCOPED"}, {"id":"fixture-shape-v2","target":"Emission Factor Registry","kind":"positive","input":"Prior case gwp-embedded is migrated to fixture format v2.","expect":"The case carries id, target, kind, input, expect, violates, closesDefect null and an expectedCode, and its id is unchanged.","violates":"Every fixture carries id, target, kind, input, expect, violates and closesDefect, and every negative also carries expectedCode.","closesDefect":"D13"}, {"id":"negative-without-code","target":"Emission Factor Registry","kind":"negative","input":"A negative fixture asserts only that the artifact is rejected, with no expectedCode.","expect":"The fixture is rejected because a negative without a deterministic code cannot discriminate the cause of rejection.","violates":"Every fixture carries id, target, kind, input, expect, violates and closesDefect, and every negative also carries expectedCode.","closesDefect":"D13","expectedCode":"FIXTURE_EXPECTED_CODE_MISSING"}, {"id":"gas-conflated-with-category","target":"Environmental Impact Calculation Run","kind":"negative","input":"A result carries the single field gasOrImpactKind with value CH4.","expect":"The result is rejected because impactCategory, gas and characterizationBasis are separate required and optional fields.","violates":"Impact category, gas and characterization basis are distinct fields and are never conflated.","closesDefect":"D14","expectedCode":"IMPACT_CATEGORY_GAS_CONFLATED"}, {"id":"method-class-open-value","target":"Emission Factor Registry","kind":"negative","input":"A factor version declares methodClass as other.","expect":"The factor version is rejected because methodClass is a closed set.","violates":"Every enumerated field is a closed set; an unrecognised value blocks the run rather than passing through.","closesDefect":"D14","expectedCode":"METHOD_CLASS_NOT_IN_CLOSED_SET"} ] ``` --- # 4. Exact final fixture counts | Set | Positive | Negative | Total | |---|---|---|---| | Prior | 9 | 12 | 21 | | Additional | 13 | 23 | 36 | | **Total** | **22** | **35** | **57** | Prior, by candidate: Inventory Boundary 7 (3 positive, 4 negative); Emission Factor Registry 7 (3 positive, 4 negative); Environmental Impact Calculation Run 7 (3 positive, 4 negative). Enterprise Sustainability Activity and Disclosure Binding: 0. Additional, by target: Inventory Boundary 7 (2 positive, 5 negative); Emission Factor Registry 6 (2 positive, 4 negative); Environmental Impact Calculation Run 18 (6 positive, 12 negative); Enterprise Sustainability Activity and Disclosure Binding 5 (2 positive, 3 negative). Total, by target: Inventory Boundary 14; Emission Factor Registry 13; Environmental Impact Calculation Run 25; Enterprise Sustainability Activity and Disclosure Binding 5. Sum 57. All 57 ids are globally distinct. Every one of the 36 additional negatives and positives links to exactly one defect D1–D14; every defect D1–D14 is closed by at least one fixture. --- # 5. Freeze decision **The semantic boundary is FROZEN.** All eleven settled clauses stand exactly as stated, including the reuse of WM-ECO-034 for Sustainability Disclosure only, the Activity Data profile with no root, the three identifier-unassigned roots, run-contained results, set-contained factor versions, the three distinct boundary facets, non-additive dual Scope 2 methods, the five distinguishable quality classes with cost never becoming an impact quantity, the prohibition on cross-counterparty netting, and the allocation of no runtime or model identifier. No clause is reopened, narrowed or widened by this audit. **The artifact set is FROZEN AS REMEDIATION-PENDING.** The only admitted deltas are the fourteen remediations in §2 and the thirty-six fixtures in §3, each of which is stated as an exact deterministic edit rather than a direction of travel. Applying them requires no new judgment, no new evidence and no new identifier. Any change outside that enumerated delta set reopens the contour and is outside this freeze. Evidence hygiene is recorded as part of the freeze: Grok browsed contrary to the prompt, so its hidden reasoning and all sources it may have consulted are excluded. Its visible response was admitted as text only and functioned solely as independent corroboration of distinctions the initial study had already derived from the admitted bases. No factual claim, figure, standard reference or source pin anywhere in this audit rests on it. Standing holds carried forward unresolved, and not grounds for reopening: no GWP characterization-set master is allocated; no assurance-engagement master is allocated; no market-instrument-retirement master is allocated; WM-ECO-034's scope statement contradicts its own out-of-scope list; WM-MAT-008's uncertainty and traceability layer is unreachable through its function set; WM-ORG-012 is Codex-only with proposed edges only; no relation edge in any of the four candidates is approved; no source pins exist; all bases remain reviewable non-canonical drafts, four under single-provider waivers. This is a research adjudication. No canonical completeness, installability, publication readiness, or registry allocation is claimed. **No rerun, no further study, and no additional audit is requested or required.**