{
  "schemaVersion": "1.0.0",
  "plan": {
    "id": "plan-checkout-2026-08",
    "title": "Fictional checkout recovery release",
    "version": 3,
    "timezone": "UTC",
    "baselineDate": "2026-08-01",
    "deliveryWindow": {
      "start": "2026-08-03",
      "end": "2026-08-28"
    },
    "ownerId": "owner-delivery",
    "status": "approved_for_delivery"
  },
  "owners": [
    {
      "id": "owner-delivery",
      "name": "Delivery lead",
      "role": "plan and release owner"
    },
    {
      "id": "owner-product",
      "name": "Product lead",
      "role": "scope and acceptance owner"
    },
    {
      "id": "owner-engineering",
      "name": "Engineering lead",
      "role": "implementation owner"
    },
    {
      "id": "owner-quality",
      "name": "Quality lead",
      "role": "test evidence owner"
    },
    {
      "id": "owner-operations",
      "name": "Operations lead",
      "role": "deployment and recovery owner"
    }
  ],
  "workItems": [
    {
      "id": "work-discovery",
      "parentId": null,
      "sequence": 10,
      "workstream": "definition",
      "title": "Freeze accepted recovery behavior",
      "description": "Link the approved requirement and acceptance records without rewriting them.",
      "ownerId": "owner-product",
      "status": "done",
      "plannedStart": "2026-08-03",
      "plannedEnd": "2026-08-05",
      "milestoneId": "milestone-scope",
      "acceptanceIds": ["accept-scope"],
      "riskIds": ["risk-scope-drift"],
      "releaseId": "release-checkout-v3"
    },
    {
      "id": "work-api",
      "parentId": null,
      "sequence": 20,
      "workstream": "implementation",
      "title": "Implement retry-safe recovery endpoint",
      "description": "Add version checks, idempotent retries, audit events, and bounded failure responses.",
      "ownerId": "owner-engineering",
      "status": "done",
      "plannedStart": "2026-08-06",
      "plannedEnd": "2026-08-12",
      "milestoneId": "milestone-build",
      "acceptanceIds": ["accept-api-retry", "accept-audit"],
      "riskIds": ["risk-duplicate-side-effect"],
      "releaseId": "release-checkout-v3"
    },
    {
      "id": "work-ui",
      "parentId": null,
      "sequence": 30,
      "workstream": "implementation",
      "title": "Add recovery status and operator controls",
      "description": "Show current state, retry boundaries, and human escalation without claiming automatic success.",
      "ownerId": "owner-engineering",
      "status": "done",
      "plannedStart": "2026-08-06",
      "plannedEnd": "2026-08-13",
      "milestoneId": "milestone-build",
      "acceptanceIds": ["accept-ui-state"],
      "riskIds": ["risk-stale-status"],
      "releaseId": "release-checkout-v3"
    },
    {
      "id": "work-test",
      "parentId": null,
      "sequence": 40,
      "workstream": "verification",
      "title": "Run integration and recovery tests",
      "description": "Exercise happy, invalid, duplicate, out-of-order, partial-failure, smoke, and rollback paths.",
      "ownerId": "owner-quality",
      "status": "done",
      "plannedStart": "2026-08-14",
      "plannedEnd": "2026-08-19",
      "milestoneId": "milestone-verified",
      "acceptanceIds": ["accept-integration", "accept-recovery"],
      "riskIds": ["risk-test-environment"],
      "releaseId": "release-checkout-v3"
    },
    {
      "id": "work-release",
      "parentId": null,
      "sequence": 50,
      "workstream": "release",
      "title": "Authorize and execute bounded release",
      "description": "Confirm evidence, owner decisions, monitoring, rollback trigger, and the exact release artifact.",
      "ownerId": "owner-operations",
      "status": "ready",
      "plannedStart": "2026-08-20",
      "plannedEnd": "2026-08-21",
      "milestoneId": "milestone-release-ready",
      "acceptanceIds": ["accept-release-gates"],
      "riskIds": ["risk-rollback-fails"],
      "releaseId": "release-checkout-v3"
    }
  ],
  "dependencies": [
    {
      "id": "dependency-scope-api",
      "predecessorId": "work-discovery",
      "successorId": "work-api",
      "type": "finish_to_start",
      "lagDays": 0,
      "rationale": "Implementation follows the accepted behavior baseline."
    },
    {
      "id": "dependency-scope-ui",
      "predecessorId": "work-discovery",
      "successorId": "work-ui",
      "type": "finish_to_start",
      "lagDays": 0,
      "rationale": "Visible state must follow the same accepted behavior baseline."
    },
    {
      "id": "dependency-api-test",
      "predecessorId": "work-api",
      "successorId": "work-test",
      "type": "finish_to_start",
      "lagDays": 1,
      "rationale": "Integration tests require the recovery endpoint."
    },
    {
      "id": "dependency-ui-test",
      "predecessorId": "work-ui",
      "successorId": "work-test",
      "type": "finish_to_start",
      "lagDays": 0,
      "rationale": "Recovery state tests require operator controls."
    },
    {
      "id": "dependency-test-release",
      "predecessorId": "work-test",
      "successorId": "work-release",
      "type": "finish_to_start",
      "lagDays": 1,
      "rationale": "Release authorization requires reviewed test evidence."
    }
  ],
  "milestones": [
    {
      "id": "milestone-scope",
      "name": "Scope baseline accepted",
      "ownerId": "owner-product",
      "targetDate": "2026-08-05",
      "workItemIds": ["work-discovery"],
      "acceptanceIds": ["accept-scope"],
      "exitDecision": "Product lead confirms the accepted requirement and exclusion links."
    },
    {
      "id": "milestone-build",
      "name": "Recovery path implemented",
      "ownerId": "owner-engineering",
      "targetDate": "2026-08-13",
      "workItemIds": ["work-api", "work-ui"],
      "acceptanceIds": ["accept-api-retry", "accept-audit", "accept-ui-state"],
      "exitDecision": "Engineering lead confirms implementation review and reproducible checks."
    },
    {
      "id": "milestone-verified",
      "name": "Recovery evidence reviewed",
      "ownerId": "owner-quality",
      "targetDate": "2026-08-19",
      "workItemIds": ["work-test"],
      "acceptanceIds": ["accept-integration", "accept-recovery"],
      "exitDecision": "Quality lead records the environment, artifact, results, and known limits."
    },
    {
      "id": "milestone-release-ready",
      "name": "Release decision ready",
      "ownerId": "owner-delivery",
      "targetDate": "2026-08-21",
      "workItemIds": ["work-release"],
      "acceptanceIds": ["accept-release-gates"],
      "exitDecision": "Delivery lead records the explicit release decision and exact rollback trigger."
    }
  ],
  "acceptanceCriteria": [
    {
      "id": "accept-scope",
      "workItemId": "work-discovery",
      "statement": "Accepted behavior and exclusions link to versioned requirement records.",
      "evidenceOwnerId": "owner-product",
      "evidenceRef": "https://evidence.example.test/requirements/recovery-v3",
      "status": "accepted"
    },
    {
      "id": "accept-api-retry",
      "workItemId": "work-api",
      "statement": "Duplicate recovery requests reuse the original result or return a version conflict.",
      "evidenceOwnerId": "owner-quality",
      "evidenceRef": "https://evidence.example.test/tests/api-retry-v3",
      "status": "accepted"
    },
    {
      "id": "accept-audit",
      "workItemId": "work-api",
      "statement": "Every state change records actor, target version, outcome, and correlation ID.",
      "evidenceOwnerId": "owner-quality",
      "evidenceRef": "https://evidence.example.test/tests/audit-v3",
      "status": "accepted"
    },
    {
      "id": "accept-ui-state",
      "workItemId": "work-ui",
      "statement": "The operator sees pending, completed, failed, and manual-review states without false success.",
      "evidenceOwnerId": "owner-quality",
      "evidenceRef": "https://evidence.example.test/tests/ui-state-v3",
      "status": "accepted"
    },
    {
      "id": "accept-integration",
      "workItemId": "work-test",
      "statement": "Happy, invalid, duplicate, out-of-order, and partial-failure paths pass in the named environment.",
      "evidenceOwnerId": "owner-quality",
      "evidenceRef": "https://evidence.example.test/runs/integration-v3",
      "status": "accepted"
    },
    {
      "id": "accept-recovery",
      "workItemId": "work-test",
      "statement": "Rollback rehearsal restores the known fixture and the verification query reconciles it.",
      "evidenceOwnerId": "owner-operations",
      "evidenceRef": "https://evidence.example.test/runs/rollback-v3",
      "status": "accepted"
    },
    {
      "id": "accept-release-gates",
      "workItemId": "work-release",
      "statement": "Every required gate has current evidence, a named owner, and ready status.",
      "evidenceOwnerId": "owner-delivery",
      "evidenceRef": "https://evidence.example.test/releases/checkout-v3",
      "status": "accepted"
    }
  ],
  "risks": [
    {
      "id": "risk-scope-drift",
      "description": "A late behavior change invalidates accepted evidence.",
      "ownerId": "owner-product",
      "probability": "medium",
      "impact": "high",
      "response": "mitigate",
      "trigger": "Requirement version differs from the delivery baseline.",
      "mitigation": "Stop the release and rebaseline affected work and acceptance links.",
      "contingency": "Move the change to a later plan version.",
      "status": "open",
      "reviewDate": "2026-08-18"
    },
    {
      "id": "risk-duplicate-side-effect",
      "description": "A retry applies the recovery action more than once.",
      "ownerId": "owner-engineering",
      "probability": "low",
      "impact": "high",
      "response": "mitigate",
      "trigger": "The same request fingerprint produces multiple state transitions.",
      "mitigation": "Persist one idempotency result per version and fingerprint.",
      "contingency": "Stop writes and reconcile from the audit event trail.",
      "status": "open",
      "reviewDate": "2026-08-18"
    },
    {
      "id": "risk-stale-status",
      "description": "The interface shows an older recovery state.",
      "ownerId": "owner-engineering",
      "probability": "medium",
      "impact": "medium",
      "response": "mitigate",
      "trigger": "Displayed version differs from the latest server event.",
      "mitigation": "Render server version and refresh after every transition.",
      "contingency": "Disable operator actions and require a manual refresh.",
      "status": "open",
      "reviewDate": "2026-08-18"
    },
    {
      "id": "risk-test-environment",
      "description": "The test environment does not match the release artifact.",
      "ownerId": "owner-quality",
      "probability": "low",
      "impact": "high",
      "response": "avoid",
      "trigger": "Artifact digest or configuration differs from the evidence record.",
      "mitigation": "Fail the run before tests and record the exact digest and environment.",
      "contingency": "Recreate the environment from the release candidate.",
      "status": "open",
      "reviewDate": "2026-08-19"
    },
    {
      "id": "risk-rollback-fails",
      "description": "The bounded rollback does not restore the known fixture.",
      "ownerId": "owner-operations",
      "probability": "low",
      "impact": "critical",
      "response": "mitigate",
      "trigger": "Post-rollback verification differs from the recorded fixture.",
      "mitigation": "Rehearse the exact rollback plan before authorization.",
      "contingency": "Keep traffic held and escalate to the named incident owner.",
      "status": "open",
      "reviewDate": "2026-08-20"
    }
  ],
  "releaseGates": [
    {
      "id": "gate-acceptance",
      "type": "acceptance",
      "name": "Acceptance evidence reviewed",
      "ownerId": "owner-product",
      "evidenceRef": "https://evidence.example.test/releases/checkout-v3/acceptance",
      "required": true,
      "status": "ready"
    },
    {
      "id": "gate-security",
      "type": "security",
      "name": "Security and privacy boundary reviewed",
      "ownerId": "owner-engineering",
      "evidenceRef": "https://evidence.example.test/releases/checkout-v3/security",
      "required": true,
      "status": "ready"
    },
    {
      "id": "gate-deployment",
      "type": "deployment",
      "name": "Exact artifact and deployment plan recorded",
      "ownerId": "owner-operations",
      "evidenceRef": "https://evidence.example.test/releases/checkout-v3/deployment",
      "required": true,
      "status": "ready"
    },
    {
      "id": "gate-rollback",
      "type": "rollback",
      "name": "Rollback rehearsal and trigger reviewed",
      "ownerId": "owner-operations",
      "evidenceRef": "https://evidence.example.test/releases/checkout-v3/rollback",
      "required": true,
      "status": "ready"
    }
  ],
  "rollbackPlans": [
    {
      "id": "rollback-checkout-v3",
      "releaseId": "release-checkout-v3",
      "ownerId": "owner-operations",
      "trigger": "Error rate exceeds the reviewed threshold or reconciliation fails.",
      "steps": [
        "Hold new recovery requests and record the decision time.",
        "Restore the prior application artifact and compatible configuration.",
        "Run the recorded verification query against the known fixture.",
        "Keep traffic held if verification differs and escalate to the incident owner."
      ],
      "verification": "The application digest, record count, and known fixture match the pre-release evidence.",
      "maximumRecoveryWindowMinutes": 30
    }
  ],
  "releases": [
    {
      "id": "release-checkout-v3",
      "name": "Checkout recovery v3",
      "ownerId": "owner-delivery",
      "plannedDate": "2026-08-21",
      "workItemIds": ["work-discovery", "work-api", "work-ui", "work-test", "work-release"],
      "milestoneId": "milestone-release-ready",
      "gateIds": ["gate-acceptance", "gate-security", "gate-deployment", "gate-rollback"],
      "rollbackPlanId": "rollback-checkout-v3",
      "status": "ready"
    }
  ]
}
