{
  "format": "vercy-enterprise-profile-fixtures/v1",
  "profileName": "Enterprise Program and Benefit Coordination",
  "cases": [
    {
      "id": "two-project-transition",
      "kind": "positive",
      "input": "A program holds ProgramComponent membership assertions referencing two externally mastered projects and one transition to an externally mastered operation, against one joint benefit.",
      "expect": "Membership, project mastership, transition acceptance and benefit observation remain distinct."
    },
    {
      "id": "project-closes-first",
      "kind": "positive",
      "input": "One project closes while the other continues and the joint benefit is measurement-pending.",
      "expect": "Project closure is recorded on the project master only; it emits no membership-end event, no outcome assertion and no realization assertion, and the joint benefit stays forecast with absent-reason measurement-pending."
    },
    {
      "id": "post-program-benefit",
      "kind": "positive",
      "input": "The program closes after handover while operational benefit observations continue.",
      "expect": "Program closure records handover, benefit owner and residual obligations; realization observations continue against the external benefit master, referenced with absent-identifier reason identifier-unassigned, and no realization claim is made inside this contour."
    },
    {
      "id": "arbitrary-folder",
      "kind": "negative",
      "input": "An unrelated folder of projects is labelled a program without mandate, joint hypothesis or dependency graph.",
      "expect": "Both the Program and the Portfolio profiles are rejected and the container is routed out of WM-ACT-029."
    },
    {
      "id": "membership-transfers-mastership",
      "kind": "negative",
      "input": "Adding a project lets program governance overwrite its baseline and actuals.",
      "expect": "The mutation is rejected."
    },
    {
      "id": "tranche-gate-closes-project-phase",
      "kind": "negative",
      "input": "A program tranche decision automatically advances a project phase.",
      "expect": "The cascade is rejected."
    },
    {
      "id": "double-count-benefit",
      "kind": "negative",
      "input": "The same realized benefit is counted in both project and program totals.",
      "expect": "The duplicate attribution is rejected; only WM-ACT-034-adjudicated shares are summed, per benefit identifier and observation period, to at most 1.0."
    },
    {
      "id": "containment-edge-asserted",
      "kind": "negative",
      "input": "The registry asserts WM-ACT-029 contains WM-ACT-005 as child identity while the profile claims external component mastership.",
      "expect": "The containment edge is rejected; only a ProgramComponent membership assertion referencing an external master is lawful, and the profile does not cancel the inherited edge."
    },
    {
      "id": "discriminator-absent",
      "kind": "negative",
      "input": "A WM-ACT-029 instance is created with no profile discriminator.",
      "expect": "Validation fails; the discriminator is non-null and mandatory."
    },
    {
      "id": "discriminator-ambiguous",
      "kind": "negative",
      "input": "A WM-ACT-029 instance carries both the Program and the Portfolio discriminator.",
      "expect": "Validation fails; exactly one discriminator is permitted and the profiles are disjoint."
    },
    {
      "id": "discriminator-flipped-in-place",
      "kind": "negative",
      "input": "An existing Program instance is updated to the Portfolio discriminator, retaining its identity.",
      "expect": "The in-place conversion is rejected; a profile change is supersession with new identity."
    },
    {
      "id": "assertion-allocated-root-id",
      "kind": "negative",
      "input": "BenefitDependency is given its own WM-* root code so that it can be addressed.",
      "expect": "The allocation is rejected; addressability is satisfied by the composite assertion identity and no new root is minted."
    },
    {
      "id": "assertion-composite-identity",
      "kind": "positive",
      "input": "A ProgramComponent, a Tranche and a BenefitDependency are addressed within one program aggregate.",
      "expect": "Each resolves as {program-id}--{artifact-kind}--{assertion-id}, is valid only inside that aggregate, and carries no independent root identity."
    },
    {
      "id": "non-project-component",
      "kind": "positive",
      "input": "An externally mastered operation is admitted as a program component alongside two projects.",
      "expect": "Membership is recorded by reference to the external master; no WM-ACT-005 baseline, phase, gate or authorization semantics are inferred for the operation."
    },
    {
      "id": "membership-end-inferred-from-closure",
      "kind": "negative",
      "input": "Closing a component project automatically terminates its ProgramComponent assertion.",
      "expect": "The inferred termination is rejected; membership ends only by an explicit, effective-dated, program-authored event."
    },
    {
      "id": "membership-row-deleted-on-closure",
      "kind": "negative",
      "input": "Program closure deletes the historical ProgramComponent, Tranche and BenefitDependency rows.",
      "expect": "The deletion is rejected; historical assertions are retained through member closure and program closure."
    },
    {
      "id": "program-closure-cascades-component-closure",
      "kind": "negative",
      "input": "Closing the program sets the remaining components to closed.",
      "expect": "The cascade is rejected; program closure neither closes, cancels nor deletes any member."
    },
    {
      "id": "component-closure-asserts-realization",
      "kind": "negative",
      "input": "Project closure emits a realized state for the joint benefit it contributes to.",
      "expect": "The realization assertion is rejected; closure proves neither outcome nor benefit and the benefit remains forecast with absent-reason measurement-pending."
    },
    {
      "id": "joint-benefit-without-hypothesis",
      "kind": "negative",
      "input": "A joint benefit is declared with owner, baseline, target and indicator but no falsifiable hypothesis.",
      "expect": "The benefit is rejected; an explicit falsifiable results-chain hypothesis is required."
    },
    {
      "id": "attribution-shares-exceed-one",
      "kind": "negative",
      "input": "Adjudicated contribution shares for one benefit and one observation period sum to 1.3.",
      "expect": "The adjudication is rejected; adjudicated shares sum to at most 1.0 per benefit identifier and observation period."
    },
    {
      "id": "unadjudicated-shares-reported-as-realized",
      "kind": "negative",
      "input": "Unadjudicated contribution shares are reconciled and reported as realized attribution without a WM-ACT-034 judgment.",
      "expect": "The report is rejected; attribution is adjudicated only by a WM-ACT-034 judgment and is never inferred from reconciliation or membership."
    },
    {
      "id": "dual-membership-implies-attribution",
      "kind": "negative",
      "input": "A project appears as a component of two programs and attribution shares are derived from the dual membership.",
      "expect": "Both memberships are valid; the derived attribution is rejected because membership implies neither mastership nor attribution."
    },
    {
      "id": "portfolio-membership-creates-program-membership",
      "kind": "negative",
      "input": "Adding a project to a Portfolio creates a ProgramComponent assertion on a sibling Program, or the reverse.",
      "expect": "The propagation is rejected; Portfolio membership and Program membership are disjoint assertions."
    },
    {
      "id": "transition-plan-existence-as-acceptance",
      "kind": "negative",
      "input": "A released transition plan is treated as operational acceptance and the capability is reported as handed over.",
      "expect": "The inference is rejected; operational acceptance is a separate authorized WM-ACT-034 decision by the receiving operational owner."
    },
    {
      "id": "transition-plan-duplicated-on-029",
      "kind": "negative",
      "input": "Readiness and handover bindings on WM-ACT-029 carry a second copy of the WM-ACT-008 plan content.",
      "expect": "The duplication is rejected; bindings are references to a pinned plan release."
    },
    {
      "id": "sustainment-closed-with-program",
      "kind": "negative",
      "input": "Program closure terminates the sustainment obligations recorded for the accepted capability.",
      "expect": "The termination is rejected; sustainment obligations survive program closure and remain externally mastered."
    },
    {
      "id": "released-assertion-mutated",
      "kind": "negative",
      "input": "A released membership, allocation, decision or observation is edited in place to correct an error.",
      "expect": "The mutation is rejected; released assertions are immutable and corrected only by an explicit successor."
    },
    {
      "id": "benefit-dependency-endpoint-unallocated",
      "kind": "positive",
      "input": "A BenefitDependency terminates on the external Outcome / Benefit Realization master, which has no allocated identifier.",
      "expect": "The endpoint is recorded with absent-identifier reason identifier-unassigned; no identifier is minted and no realization claim is made."
    },
    {
      "id": "independent-versioning",
      "kind": "positive",
      "input": "A transition plan release is pinned while program membership and results-chain assertions are revised.",
      "expect": "The Program profile, each assertion kind and the transition plan version independently, and the pinned plan release is unaffected."
    }
  ],
  "candidateRevision": 3,
  "oracleMode": "exact-expectation"
}
