# Frozen semantic audit — EM-WRK-04 ## Verdict **Conditionally frozen. Decision preserved; artifact set defective.** The supplied evidence does not disprove the intended disposition, so it stands as issued: profile **Portfolio** on WM-ACT-029 under the mandatory discriminator; PortfolioComponent, Prioritization, InvestmentAllocation and PortfolioScenario remain portfolio-owned addressable releases; one independently identified, identifier-unassigned **Selection Criteria Set** candidate is retained; no catalogue, model or runtime identifier is allocated. The prose reviews are substantially reconciled. The **machine artifacts are not**: the allocation candidate contradicts its own boundary, the profile candidate under-carries the invariants and holds it depends on, and the fixture set is non-deterministic and mis-scoped. Fourteen material defects follow. All are remediable from the supplied text alone; none require another provider run, and none disturbs the boundary decision. No installability, publication-readiness or standards-conformance claim is made or supported. ## Material defects 1. **Allocation candidate `boundary.references` contradicts `boundary.excludes` and inverts dependency direction.** The block references WM-ACT-029 ("Portfolio profile and prioritization release"), WM-ACT-005 ("Project candidate identity") and WM-ACT-030 ("Initiative candidate identity") while `excludes` forbids "portfolio, component, project, program or initiative identity". A criteria-set root that references portfolios and candidates cannot "remain resolvable after portfolio closure" — the stated reason for independent identity. It also names **WM-ACT-034** ("Assessment or evaluation boundary"), which appears in no supplied review, in no `bases` list and in no hold. *Remediation:* delete the WM-ACT-029, WM-ACT-005, WM-ACT-030 and WM-ACT-034 entries from `boundary.references`. Retain only WM-ECO-012 and WM-KNW-011 as outbound references. Add to `boundary.excludes`: `"outbound reference to any portfolio, candidate or assessment model; citation direction is inbound only"`. If an assessment referent is genuinely required, record it in `holds` as `"Assessment/evaluation referent named but unallocated; no identifier may be asserted."` 2. **Weighting is modelled two incompatible ways.** `CriteriaSetVersion.optional` contains `weights` and `normalizationRule`, yet allocation invariant 1 requires every prioritization to pin "one exact criteria-set version **and weighting version**", the acceptance narrative pins `W-v1` as a distinct artefact, and synthesis invariant 6 requires criteria and weighting releases to "remain distinct". As issued, `W-v1` is unresolvable and invariant 6 is violated by the artifact that asserts it. *Remediation:* remove `weights` and `normalizationRule` from `CriteriaSetVersion.optional`. Add object `WeightingScheme` with `identity: ["selectionCriteriaSetId","weightingSchemeId","version"]`, `required: ["weights","normalizationRule","validFrom","contentDigest","status"]`, `optional: ["validTo","supersedesVersion"]`, `lifecycle: ["draft","approved","effective","superseded","withdrawn"]`. Restate allocation invariant 1 as: *"Every prioritization release pins exactly one criteria-set version and exactly one weighting-scheme version, both resolvable independently of any portfolio."* 3. **No `SelectionCriterion` object exists.** Both reviews place SelectionCriterion in the model set, and four allocation invariants impose per-criterion obligations (measure reference, scale, unit, preference direction, mandatory-versus-compensatory status). No declared object carries those fields; `criteria` is an untyped required value on `CriteriaSetVersion`. The invariants are unenforceable. *Remediation:* add object `SelectionCriterion` with `identity: ["selectionCriteriaSetId","version","criterionId"]`, `required: ["measureRef","scale","unit","preferenceDirection","criterionClass"]`, `optional: ["definitionText","applicability"]`, where `criterionClass` is enumerated `["mandatory","compensatory"]`. Retype `CriteriaSetVersion.criteria` as a non-empty array of `SelectionCriterion`. State that `measureRef` targets the unallocated Metric Definition referent and is hold-dependent. 4. **Criteria-set mastership is disjunctive and leaks into the Portfolio aggregate.** `identityTest.mastership` reads "portfolio governance or investment-methodology authority". A set reused by PF-1 and PF-2 and resolvable after closure cannot be mastered by one portfolio's governance, and the comparison records that stewardship sits outside any one portfolio. As issued, the artifact permits exactly the mastership leak invariant 3 forbids. *Remediation:* set `identityTest.mastership` to the single value `"investment-methodology authority external to any portfolio"`. Add invariant: *"Adoption, pinning or citation of a criteria set by a portfolio confers no mastership, editing right or lifecycle authority over the set or any of its versions."* 5. **Double effectivity and unqualified time axes.** `SelectionCriteriaSet.lifecycle` carries `effective`, `suspended`, `superseded` and `retired` while `CriteriaSetVersion` independently carries `validFrom`/`validTo` and `effective`/`superseded`. Which layer governs effectivity is undetermined, no transition or consistency rule is given, and `validFrom`, `validTo` and `retiredAt` are not bound to any of the seven declared time axes. Neither object records ingestion or knowledge time, so the acceptance requirement that SC-3, D-7 and REC-7 "remain reproducible" as-of cannot be evaluated. *Remediation:* restrict `SelectionCriteriaSet.lifecycle` to a registration lifecycle `["draft","active","closed"]` and delete `successorRef` and `retiredAt` from the set object. Locate all effectivity on versions; annotate `validFrom`/`validTo` as effective time. Add to `CriteriaSetVersion.required`: `recordedAt` (ingestion time) and `assertedFrom` (knowledge time). Add invariant: *"A set in `closed` state may hold no version in `effective` state; superseded and withdrawn versions remain resolvable at every prior knowledge time."* 6. **The approved-baseline release class is asserted in synthesis but declared nowhere, and a live provider divergence is unrecorded.** The synthesis and the Claude study both make the composition-and-allocation baseline "a distinct immutable release"; the Grok response holds that baseline is "a governance designation of a scenario, not a second type in this package". Profile constraint 2 enumerates only four portfolio-owned release classes. The synthesis therefore depends on a fifth class that the enforceable artifact does not admit, and the divergence appears in no hold. *Remediation:* keep the reconciled choice. Extend profile constraint 2 to: `"PortfolioComponent, Prioritization, InvestmentAllocation, PortfolioScenario and ApprovedCompositionAndAllocationBaseline are addressable effective-dated portfolio-owned releases; the baseline is a distinct release, never a mutable designation on a scenario."` Add hold: `"Provider divergence unresolved: baseline-as-distinct-release (Claude, local synthesis) versus baseline-as-scenario-designation (Grok). Reconciled in favour of a distinct release; not verified against WM-ACT-029."` 7. **No constraint disables inherited Program semantics.** Profile constraint 1 asserts only that Portfolio "remains distinct from Program, catalogue, Project and Initiative". Distinctness of the profiles does not disable delivery coordination, exclusive child-set, component relatedness, rollup or single-owner funding if WM-ACT-029 binds them at aggregate level — the condition on which the Grok verdict rests. Synthesis invariant 15 constrains membership, not inheritance. *Remediation:* insert profile constraint: `"The Portfolio profile disables, and may never assert, Program-derived delivery coordination, joint-outcome or benefit-hypothesis semantics, exclusive child-set or exclusive-owner ownership, component-to-portfolio rollup of plan, cost, actuals or benefit, mandatory component relatedness, and single-owner funding. Any WM-ACT-029 clause binding these at aggregate level blocks the profile until an explicit profile-level negation is recorded in the base."` 8. **Synthesis invariant 1 is unenforceable and the supporting hold was dropped.** The Claude study records that WM-ACT-029's "programme/portfolio token is inconsistent across name, naming rule and identity strategies". Invariant 1 ("Exactly one WM-ACT-029 profile discriminator is present") cannot be evaluated deterministically against an inconsistent token, and the synthesis holds omit this finding along with the study's access-scope, checklist-contradiction, empty-frozen-contract, abstract-only-support and unsourced-retention findings. *Remediation:* restate invariant 1 as: *"Exactly one discriminator value is present, drawn from the enumerated set {Program, Portfolio}; enforcement is suspended pending token normalization in WM-ACT-029."* Add the five dropped findings verbatim to the synthesis holds, each marked `unresolved`. 9. **No base version or digest pins.** The profile candidate lists five bases as bare identifiers. The only version evidence in the supplied text is a truncated `sha256 3ce9e40…` in one provider study. The profile is therefore not reproducible: a later WM-ACT-029 revision would silently re-scope it. *Remediation:* add `basePins` to the profile candidate as an array of `{modelId, version, digestAlgorithm, contentDigest, pinState}`, one entry per base, with `digestAlgorithm: "sha256"`, full digests, and `pinState: "unverified"` wherever no full digest is supplied. Add invariant: *"A profile whose base pins are `unverified` supports no conformance, installability or publication claim."* 10. **Profile bases omit the decision triad the profile depends on, and the decision attachment point is unspecified.** Constraint 5 requires "a separate authorized decision and issued record"; the triad (WM-KNW-010 rationale, WM-ACT-024 occurrence, WM-REC-010 issued record) appears only in the Claude study and is absent from `bases`. Whether the decision attaches to the scenario, the cycle or the portfolio is undetermined, so D-7/REC-7 have no declared anchor. *Remediation:* add `WM-KNW-010`, `WM-ACT-024` and `WM-REC-010` to profile `bases` with pins per defect 9. Add constraint: `"An approval decision attaches to exactly one PortfolioScenario release; the rationale, decision occurrence and issued record are external and referenced by the resulting baseline release, never absorbed into it."` 11. **Allocation share semantics invite the exhaustiveness inference the comparison forbids.** Share basis is declared nowhere in the synthesis, profile candidate or fixtures, and every worked example uses 0.6 + 0.4 = 1.0. The comparison records that shares need not sum to 1.0, that basis may be capital, cost, capacity or headcount, and that it must not default to a fraction of initiative budget — none of which is carried into an invariant. No invariant forbids deriving actuals, capacity, outcomes or benefits from shares; synthesis invariant 9 only asserts distinctness. *Remediation:* add to profile constraints: `"Every InvestmentAllocation declares shareBasis, enumerated {capital, cost, capacity, headcount}, with no default."` Add synthesis invariants: *"Declared shares for one component across portfolios need not sum to 1.0; no completeness, exclusivity or total-cost coverage may be inferred from the declared shares."* and *"Accounting actuals, capacity consumption, outcomes and benefit realization are never derived, apportioned or summed from allocation shares."* Replace every 0.6/0.4 illustration in synthesis, acceptance and fixtures with 0.6/0.25 plus a declared `shareBasis`. 12. **Synthesis invariant 10 depends on an unallocated referent and contradicts the reconciled treatment.** "Released source amounts are not exceeded and residuals reconcile" presupposes an in-model Funding Source, which both holds lists record as unallocated; the Grok response treats oversubscription as an externally flagged scenario condition rather than a hard prohibition, and no WM-ECO-012 hook exists. The invariant is currently unevaluable and its status is unstated. *Remediation:* restate invariant 10 as: *"Source-side non-exceedance and residual reconciliation are external reconciliation obligations against the unallocated Funding Source referent; enforcement is suspended pending its allocation, and oversubscription is surfaced as a flagged scenario condition, never as an implicit transfer of authority, cash or ownership."* Add hold: `"Funding Source referent unallocated; invariant 10 is non-enforceable and no funding-integrity claim is supported."` 13. **Observation authority and candidate population are unpinned, and alignment-claim ownership is undeclared.** Two portfolios may pin the same criteria-set version, apply locally sourced observations, and produce ranks that are compared as if commensurable; no invariant pins observation authority or candidate population. Separately, the strategic-alignment contribution claim is asserted in prose but assigned to no object, leaving it writable onto the criteria set, the component master or WM-KNW-011. *Remediation:* add to the prioritization release required pins: `observationAuthorityRef`, `observationPeriod`, `candidatePopulationRef`. Add invariants: *"Rankings are comparable only when criteria-set version, weighting-scheme version, observation authority, observation period, candidate population, horizon, price base and metric revisions are identical; conflicting ranks for one component across portfolios are permitted and are not reconciled here."* and *"A strategic-alignment contribution claim is owned by the prioritization release, references WM-KNW-011, and is never written onto a criteria set, a scenario or a component master; it asserts no causal or realized benefit."* 14. **Component lifecycle disruption is unspecified, and the profile candidate carries no publishability hold.** Nothing states what happens to memberships, allocations and released scenarios when a component is cancelled, split, merged or re-mastered upstream; the synthesis addresses only the downward direction ("ending membership never closes the component"). This gap is in no hold. Independently, the allocation candidate carries `canonicalPublishable: false` and a `holds` array, while the profile candidate carries neither — so the profile artifact is publishable by default, against the synthesis position. *Remediation:* add to profile constraints: `"Upstream cancellation, split, merge or re-mastership of a component ends affected memberships prospectively at the recorded effective instant, terminates forward allocation intent, and mutates no released Prioritization, InvestmentAllocation, PortfolioScenario or baseline; a split or re-mastership requires new membership assertions for each successor master and no automatic share inheritance."* Add to the profile candidate: `"canonicalPublishable": false`, `"installable": false`, and a `holds` array reproducing the synthesis holds plus the holds introduced by defects 6, 8, 9 and 12. ## Exact additional fixtures ```json [ {"id": "criteria-set-resolvable-after-portfolio-closure", "artifact": "allocation-candidate", "kind": "positive", "input": "Set S, version v2, status effective, cited by prioritization release PR-1 of portfolio PF-1; PF-1 is subsequently closed.", "expect": "S/v2 remains resolvable at every knowledge time and its lifecycle state is unchanged by PF-1 closure.", "invariant": "criteria-set-independent-identity"}, {"id": "criteria-set-master-is-not-a-portfolio", "artifact": "allocation-candidate", "kind": "negative", "input": "Set S records mastership as the governance body of portfolio PF-1.", "expect": "Rejected; mastership must be an investment-methodology authority external to any portfolio.", "invariant": "adoption-confers-no-mastership"}, {"id": "weighting-pinned-independently", "artifact": "allocation-candidate", "kind": "positive", "input": "Prioritization release PR-1 pins set S version v2 and weighting scheme W version v1, each resolved independently.", "expect": "PR-1 is accepted and both pins resolve without traversing any portfolio.", "invariant": "prioritization-pins-set-and-weighting"}, {"id": "weighting-embedded-in-set-version", "artifact": "allocation-candidate", "kind": "negative", "input": "Weights and a normalization rule are written as fields of set version S/v2.", "expect": "Rejected; weighting is a separately identified and separately versioned scheme.", "invariant": "criteria-weighting-observation-rank-distinct"}, {"id": "criterion-missing-preference-direction", "artifact": "allocation-candidate", "kind": "negative", "input": "Criterion C-1 in S/v2 declares measureRef, scale and unit but no preferenceDirection.", "expect": "Rejected at set-version approval; the version cannot reach approved state.", "invariant": "criterion-required-fields"}, {"id": "criterion-missing-mandatory-class", "artifact": "allocation-candidate", "kind": "negative", "input": "Criterion C-2 in S/v2 declares no criterionClass value from {mandatory, compensatory}.", "expect": "Rejected at set-version approval.", "invariant": "criterion-required-fields"}, {"id": "set-effectivity-without-effective-version", "artifact": "allocation-candidate", "kind": "negative", "input": "Set S is asserted effective while all of its versions are draft or superseded.", "expect": "Rejected; effectivity is carried only by versions and a closed or version-less set holds none.", "invariant": "single-locus-effectivity"}, {"id": "as-of-replay-after-supersession", "artifact": "allocation-candidate", "kind": "positive", "input": "S/v2 is superseded by S/v3; PR-1, decision D-7 and record REC-7 are replayed at the knowledge time preceding supersession.", "expect": "PR-1, D-7 and REC-7 reproduce byte-identically against S/v2 with recordedAt and assertedFrom unchanged.", "invariant": "as-of-reproducibility"}, {"id": "incommensurable-observation-authority", "artifact": "profile-candidate", "kind": "negative", "input": "PF-1 and PF-2 both pin S/v2 and W/v1 but cite different observationAuthorityRef values; their ranks for component INI-1 are compared on one scale.", "expect": "Rejected; the comparability pin set is not identical.", "invariant": "rank-comparability-pins"}, {"id": "conflicting-cross-portfolio-ranks-permitted", "artifact": "profile-candidate", "kind": "positive", "input": "PF-1 ranks INI-1 first and PF-2 ranks INI-1 seventh, each in its own prioritization release.", "expect": "Both releases stand; no reconciliation, precedence or merge is performed and no rank is written to the INI-1 master.", "invariant": "rank-is-release-scoped"}, {"id": "two-discriminator-values", "artifact": "profile-candidate", "kind": "negative", "input": "One WM-ACT-029 instance asserts discriminator values Program and Portfolio simultaneously.", "expect": "Rejected; exactly one enumerated value is permitted and a profile change is supersession with new identity.", "invariant": "single-discriminator"}, {"id": "program-semantics-not-inherited", "artifact": "profile-candidate", "kind": "negative", "input": "A Portfolio instance asserts an exclusive child set, rolls component actuals to portfolio level, and requires component relatedness.", "expect": "Rejected on all three assertions by the profile disabling constraint.", "invariant": "program-semantics-disabled"}, {"id": "shares-not-summing-to-one", "artifact": "profile-candidate", "kind": "positive", "input": "PF-1 allocates share 0.6 and PF-2 share 0.25 to component INI-1, both with shareBasis capital, from distinct released sources.", "expect": "Both allocations are accepted; no completeness, exclusivity or residual third share is inferred.", "invariant": "shares-need-not-sum-to-one"}, {"id": "share-basis-undeclared", "artifact": "profile-candidate", "kind": "negative", "input": "An InvestmentAllocation declares share 0.4 with no shareBasis value.", "expect": "Rejected; no default basis is applied and the allocation cannot be released.", "invariant": "share-basis-required"}, {"id": "actual-derived-from-share", "artifact": "profile-candidate", "kind": "negative", "input": "Consolidated reporting computes PF-1's accounting actual for INI-1 as 0.6 of the component actual, and sums expected benefit across PF-1 and PF-2 shares.", "expect": "Rejected; actuals, capacity, outcomes and benefits are never derived or apportioned from allocation shares.", "invariant": "no-derivation-from-shares"}, {"id": "allocation-exceeds-released-source", "artifact": "profile-candidate", "kind": "blocked", "input": "Allocations drawn on one released funding source and period exceed its released amount.", "expect": "Not executable: the Funding Source referent is unallocated, so the case fails closed and asserts no funding-integrity outcome.", "invariant": "source-non-exceedance-suspended"}, {"id": "portfolio-closure-does-not-cascade", "artifact": "profile-candidate", "kind": "negative", "input": "PF-1 transitions to closed and the transition attempts to close component INI-1 and void its baseline and actuals.", "expect": "Rejected; memberships end prospectively and the component master, lifecycle, baseline, actuals and evidence are untouched.", "invariant": "no-lifecycle-cascade"}, {"id": "component-cancelled-upstream", "artifact": "profile-candidate", "kind": "positive", "input": "INI-1 is cancelled on its own master after scenario SC-3 was selected and baselined.", "expect": "Affected memberships end prospectively at the recorded effective instant, forward allocation intent terminates, and SC-3, D-7, REC-7 and the baseline release are unmutated.", "invariant": "upstream-disruption-prospective-only"}, {"id": "component-split-no-share-inheritance", "artifact": "profile-candidate", "kind": "negative", "input": "INI-1 splits into INI-1a and INI-1b and the existing 0.6 share is automatically carried to both successors.", "expect": "Rejected; each successor master requires a new membership assertion and a newly declared share.", "invariant": "no-automatic-share-inheritance"}, {"id": "component-re-mastered", "artifact": "profile-candidate", "kind": "positive", "input": "INI-1 is re-mastered from WM-ACT-030 to WM-ACT-005 following authorization.", "expect": "Prior memberships end prospectively, a new membership is asserted against the new master, and no released prioritization, allocation, scenario or baseline is rewritten.", "invariant": "upstream-disruption-prospective-only"}, {"id": "baseline-release-distinct-from-scenario", "artifact": "profile-candidate", "kind": "positive", "input": "Decision D-7 approves scenario SC-3 and issues REC-7.", "expect": "A distinct immutable composition-and-allocation baseline release is created referencing SC-3, D-7 and REC-7; SC-3 remains an unmodified hypothesis release and absorbs no decision body.", "invariant": "baseline-is-distinct-release"}, {"id": "alignment-claim-misowned", "artifact": "profile-candidate", "kind": "negative", "input": "A strategic-alignment contribution claim is written onto set version S/v2 and onto the INI-1 master.", "expect": "Rejected on both writes; the claim is owned by the prioritization release and references WM-KNW-011 without asserting causal or realized benefit.", "invariant": "alignment-claim-ownership"}, {"id": "unrelated-components-form-no-program", "artifact": "profile-candidate", "kind": "positive", "input": "PF-1 holds three mutually unrelated components with no dependency, shared outcome or benefit hypothesis.", "expect": "PF-1 remains a Portfolio profile; no Program is formed, inferred or required.", "invariant": "membership-implies-no-program"}, {"id": "rebalance-preserves-prior-releases", "artifact": "profile-candidate", "kind": "positive", "input": "An authorized rebalance follows a funding change after SC-3 was baselined.", "expect": "Successor prioritization, allocation, scenario and baseline releases are issued; SC-3, D-7, REC-7 and the prior baseline remain immutable and resolvable.", "invariant": "rebalance-creates-successors"}, {"id": "unverified-base-pin-blocks-conformance", "artifact": "profile-candidate", "kind": "blocked", "input": "The profile is asserted conformant, installable or publication-ready while one or more entries in basePins carry pinState unverified.", "expect": "Rejected; unverified base pins support no conformance, installability or publication claim.", "invariant": "unverified-pins-block-claims"} ] ``` ## Freeze decision **Freeze the boundary decision; do not freeze the artifact set.** The disposition is recorded as final for this contour and requires no further provider review. The allocation candidate, profile candidate and fixture file are returned as **defect-blocked drafts**: defects 1–5 and 14 must be applied to the allocation and profile candidates verbatim before either artifact is consumed downstream; defects 6–13 must be applied to the synthesis invariants, profile constraints and holds. All previously recorded holds stand, extended by the baseline-divergence, discriminator-token, base-pin and Funding Source holds above. Both candidates remain `canonicalPublishable: false`, no identifier is allocated or reserved, and every blocked item stays blocked. Nothing in this audit supports an installability, conformance or publication claim.