{
  "policy": {
    "version": 5,
    "patterns": {
      "version": 1,
      "method": "CURATED_PRACTICE_TOPIC",
      "notice": "Pattern topics identify design choices to practice. Read the ticket's acceptance criteria and justify the simplest suitable approach. Tags are not capability or ownership evidence; an untagged ticket has no curated pattern topic assigned."
    },
    "fieldMix": {
      "version": 1,
      "method": "CURATED_ESTIMATE",
      "notice": "Field percentages are editorial estimates of the ticket's engineering focus. They total 100%; they are not measured time, proficiency scores, or ownership evidence."
    },
    "contentStatus": "PRACTICE_BRIEF",
    "assessmentStatus": "NOT_QUALIFIED",
    "evidenceUse": "NONE",
    "aiPolicy": "AI tools are welcome during implementation. Record assumptions, review the result, and verify its behavior.",
    "notice": "Fictional engineering practice briefs. Starter repositories, fixtures, automated grading, and verified ownership are not included.",
    "outcomeEvidence": "Tests, patches, and runbooks are requested deliverables. They become Outcome Evidence only through a qualified Mission and immutable Evidence IDs.",
    "ownershipEvidence": "Independent adaptation must be observed under a declared verification policy and cite immutable Evidence IDs. Completing a planning ticket establishes no Ownership Evidence."
  },
  "patternTopics": [
    {
      "id": "factory-method",
      "label": "Factory Method",
      "group": "Creational"
    },
    {
      "id": "abstract-factory",
      "label": "Abstract Factory",
      "group": "Creational"
    },
    {
      "id": "builder",
      "label": "Builder",
      "group": "Creational"
    },
    {
      "id": "prototype",
      "label": "Prototype",
      "group": "Creational"
    },
    {
      "id": "singleton",
      "label": "Singleton",
      "group": "Creational"
    },
    {
      "id": "adapter",
      "label": "Adapter",
      "group": "Structural"
    },
    {
      "id": "bridge",
      "label": "Bridge",
      "group": "Structural"
    },
    {
      "id": "composite",
      "label": "Composite",
      "group": "Structural"
    },
    {
      "id": "decorator",
      "label": "Decorator",
      "group": "Structural"
    },
    {
      "id": "facade",
      "label": "Facade",
      "group": "Structural"
    },
    {
      "id": "flyweight",
      "label": "Flyweight",
      "group": "Structural"
    },
    {
      "id": "proxy",
      "label": "Proxy",
      "group": "Structural"
    },
    {
      "id": "chain-of-responsibility",
      "label": "Chain of Responsibility",
      "group": "Behavioral"
    },
    {
      "id": "command",
      "label": "Command",
      "group": "Behavioral"
    },
    {
      "id": "interpreter",
      "label": "Interpreter",
      "group": "Behavioral"
    },
    {
      "id": "iterator",
      "label": "Iterator",
      "group": "Behavioral"
    },
    {
      "id": "mediator",
      "label": "Mediator",
      "group": "Behavioral"
    },
    {
      "id": "memento",
      "label": "Memento",
      "group": "Behavioral"
    },
    {
      "id": "observer",
      "label": "Observer",
      "group": "Behavioral"
    },
    {
      "id": "state",
      "label": "State",
      "group": "Behavioral"
    },
    {
      "id": "strategy",
      "label": "Strategy",
      "group": "Behavioral"
    },
    {
      "id": "template-method",
      "label": "Template Method",
      "group": "Behavioral"
    },
    {
      "id": "visitor",
      "label": "Visitor",
      "group": "Behavioral"
    },
    {
      "id": "ports-and-adapters",
      "label": "Ports and Adapters",
      "group": "Architectural"
    },
    {
      "id": "cqrs",
      "label": "CQRS",
      "group": "Architectural"
    },
    {
      "id": "strangler-fig",
      "label": "Strangler Fig",
      "group": "Architectural"
    },
    {
      "id": "saga",
      "label": "Saga",
      "group": "Distributed and reliability"
    },
    {
      "id": "transactional-outbox",
      "label": "Transactional Outbox",
      "group": "Distributed and reliability"
    },
    {
      "id": "circuit-breaker",
      "label": "Circuit Breaker",
      "group": "Distributed and reliability"
    },
    {
      "id": "bulkhead",
      "label": "Bulkhead",
      "group": "Distributed and reliability"
    }
  ],
  "projects": [
    {
      "id": "e19da797-4e34-424a-8bea-e1bd111f2f21",
      "key": "BSLO",
      "title": "Checkout service-level objectives",
      "field": "Site reliability",
      "summary": "Define customer-facing reliability indicators and actionable budget policies.",
      "context": "A fictional checkout service reports process uptime while customers experience failed orders and slow confirmations.",
      "stack": [
        "TypeScript",
        "Prometheus",
        "HTTP"
      ],
      "prerequisites": [
        "Create synthetic request and order-event traces plus a local query or metrics fixture; no production telemetry required."
      ],
      "developerValue": "Practice SLI semantics, alert evaluation, and reliability tradeoffs.",
      "companyValue": "Align reliability discussions with customer outcomes and explicit measurement limits.",
      "delivery": "Deliver executable indicator queries, alert fixtures, and an SLO decision record.",
      "phases": [
        {
          "id": "define",
          "title": "Define indicators",
          "goal": "Specify measurable user outcomes and valid denominators."
        },
        {
          "id": "measure",
          "title": "Compute and alert",
          "goal": "Handle missing data and evaluate budget burn."
        },
        {
          "id": "operate",
          "title": "Use the objective",
          "goal": "Connect reliability policy to reviewable operational decisions."
        }
      ],
      "tickets": [
        {
          "id": "82ab987d-c26d-404b-b5f2-9b94ef2e1ddc",
          "key": "BSLO-101",
          "title": "Define eligible checkout attempts and successful completion",
          "type": "TASK",
          "priority": "MEDIUM",
          "difficulty": "FOUNDATIONAL",
          "estimateMinutes": 60,
          "phaseId": "define",
          "dependsOn": [],
          "scenario": "Availability reports count health checks as customer success.",
          "acceptanceCriteria": [
            "Define eligible attempts and completion deadlines.",
            "Exclude synthetic probes from customer denominators.",
            "Document validation failures and abandoned checkouts separately."
          ],
          "implementationNotes": [
            "Do not exclude service failures to improve the ratio."
          ],
          "verification": [
            "Classify representative success and failure traces.",
            "Reject a denominator that includes only completed orders."
          ],
          "deliverables": [
            "SLI event contract."
          ],
          "rollout": "Review event semantics before publishing an objective.",
          "skills": [
            "SLI design"
          ],
          "fieldMix": [
            {
              "field": "Site reliability",
              "percentage": 100
            }
          ],
          "patterns": []
        },
        {
          "id": "1dee3a71-bf26-4dfd-b903-57721a6a48e7",
          "key": "BSLO-102",
          "title": "Deduplicate retried checkout attempts in indicator calculations",
          "type": "BUG",
          "priority": "HIGH",
          "difficulty": "INTERMEDIATE",
          "estimateMinutes": 150,
          "phaseId": "define",
          "dependsOn": [
            "BSLO-101"
          ],
          "scenario": "Client retries inflate both request volume and apparent success.",
          "acceptanceCriteria": [
            "Count one logical attempt under the declared identity.",
            "Preserve retry observations separately.",
            "Flag missing identities without guessing deduplication."
          ],
          "implementationNotes": [
            "Avoid user-identifying metric labels."
          ],
          "verification": [
            "Count a retried successful attempt once.",
            "Expose ambiguous records with missing attempt IDs."
          ],
          "deliverables": [
            "Deduplicated indicator query."
          ],
          "rollout": "Compare old and new counts before switching dashboards.",
          "skills": [
            "Metrics",
            "Idempotency"
          ],
          "fieldMix": [
            {
              "field": "Site reliability",
              "percentage": 60
            },
            {
              "field": "Data engineering",
              "percentage": 40
            }
          ],
          "patterns": []
        },
        {
          "id": "ca7a1b21-ade8-49fd-b32f-7cc555e18db0",
          "key": "BSLO-103",
          "title": "Compute completion latency from consistent event pairs",
          "type": "TASK",
          "priority": "HIGH",
          "difficulty": "ADVANCED",
          "estimateMinutes": 180,
          "phaseId": "measure",
          "dependsOn": [
            "BSLO-102"
          ],
          "scenario": "Latency is measured from different start events across client versions.",
          "acceptanceCriteria": [
            "Specify start and completion event semantics.",
            "Reject negative or unmatched durations.",
            "Track excluded samples and instrumentation version."
          ],
          "implementationNotes": [
            "State clock assumptions explicitly."
          ],
          "verification": [
            "Compute known synthetic durations.",
            "Detect clock skew and unmatched completion events."
          ],
          "deliverables": [
            "Latency indicator implementation."
          ],
          "rollout": "Run both definitions during comparison; retain the prior dashboard for diagnosis.",
          "skills": [
            "Observability",
            "Time handling"
          ],
          "fieldMix": [
            {
              "field": "Site reliability",
              "percentage": 60
            },
            {
              "field": "Data engineering",
              "percentage": 40
            }
          ],
          "patterns": []
        },
        {
          "id": "69dbe211-67a5-4f1e-92e7-166559ead4bc",
          "key": "BSLO-104",
          "title": "Keep missing telemetry distinct from successful service",
          "type": "BUG",
          "priority": "HIGH",
          "difficulty": "INTERMEDIATE",
          "estimateMinutes": 120,
          "phaseId": "measure",
          "dependsOn": [
            "BSLO-103"
          ],
          "scenario": "A metrics outage produces an empty query that the dashboard renders as healthy.",
          "acceptanceCriteria": [
            "Represent no data separately from zero failures.",
            "Display data freshness and coverage.",
            "Alert on measurement failure independently."
          ],
          "implementationNotes": [
            "Unknown reliability cannot consume zero budget by default."
          ],
          "verification": [
            "Show healthy complete telemetry.",
            "Drop a source stream and display unknown coverage."
          ],
          "deliverables": [
            "Missing-data handling."
          ],
          "rollout": "Enable measurement alerts before relying on budget policy.",
          "skills": [
            "Monitoring"
          ],
          "fieldMix": [
            {
              "field": "Site reliability",
              "percentage": 80
            },
            {
              "field": "Frontend",
              "percentage": 20
            }
          ],
          "patterns": []
        },
        {
          "id": "8337d4a2-93ee-44fb-94f9-8d4bee7fe1ab",
          "key": "BSLO-105",
          "title": "Implement multi-window error-budget burn calculations",
          "type": "TASK",
          "priority": "HIGH",
          "difficulty": "ADVANCED",
          "estimateMinutes": 210,
          "phaseId": "measure",
          "dependsOn": [
            "BSLO-102",
            "BSLO-104"
          ],
          "scenario": "A brief spike pages the team while a slower sustained incident passes unnoticed.",
          "acceptanceCriteria": [
            "Calculate burn against the declared objective.",
            "Require aligned short and long windows for the chosen alert.",
            "Handle window edges and low sample counts explicitly."
          ],
          "implementationNotes": [
            "Thresholds are scenario assumptions, not universal defaults."
          ],
          "verification": [
            "Trigger on sustained synthetic burn.",
            "Avoid paging for an isolated low-volume failure under the documented policy."
          ],
          "deliverables": [
            "Burn-rate queries and fixtures."
          ],
          "rollout": "Run alerts without notifications locally before operational adoption.",
          "skills": [
            "Alerting",
            "Time-series analysis"
          ],
          "fieldMix": [
            {
              "field": "Site reliability",
              "percentage": 70
            },
            {
              "field": "Data engineering",
              "percentage": 30
            }
          ],
          "patterns": []
        },
        {
          "id": "dddd7323-f403-4b5c-bd9b-f847880985f6",
          "key": "BSLO-106",
          "title": "Separate dependency failure from the customer-facing objective",
          "type": "TASK",
          "priority": "MEDIUM",
          "difficulty": "ADVANCED",
          "estimateMinutes": 180,
          "phaseId": "measure",
          "dependsOn": [
            "BSLO-105"
          ],
          "scenario": "The team wants to exclude payment-provider outages from checkout reliability.",
          "acceptanceCriteria": [
            "Keep customer outcome accounting intact.",
            "Add dependency attribution as a separate diagnostic dimension.",
            "Expose uncertain attribution without changing the denominator."
          ],
          "implementationNotes": [
            "Do not transfer responsibility by redefining failed outcomes away."
          ],
          "verification": [
            "Count a dependency-caused customer failure.",
            "Show attribution missing while retaining the failure."
          ],
          "deliverables": [
            "Attribution dashboard contract."
          ],
          "rollout": "Add diagnostics alongside the objective; preserve historical customer outcomes.",
          "skills": [
            "Reliability analysis"
          ],
          "fieldMix": [
            {
              "field": "Site reliability",
              "percentage": 80
            },
            {
              "field": "System design",
              "percentage": 20
            }
          ],
          "patterns": []
        },
        {
          "id": "d52c9403-e3c7-49e8-b57a-eff445ab21a6",
          "key": "BSLO-107",
          "title": "Define release actions for exhausted error budget",
          "type": "TASK",
          "priority": "HIGH",
          "difficulty": "EXPERT",
          "estimateMinutes": 300,
          "phaseId": "operate",
          "dependsOn": [
            "BSLO-105",
            "BSLO-106"
          ],
          "scenario": "An exhausted budget triggers a blanket release freeze, including urgent reliability fixes.",
          "acceptanceCriteria": [
            "Distinguish feature, risk-reduction, and emergency changes.",
            "Define reviewed exception authority and expiry.",
            "Compare business urgency against measured reliability risk."
          ],
          "implementationNotes": [
            "Policy provides decision support, not automatic business authority."
          ],
          "verification": [
            "Apply policy to a normal feature release.",
            "Document an emergency exception with unresolved risks."
          ],
          "deliverables": [
            "Error-budget policy decision record."
          ],
          "rollout": "Trial the policy in a tabletop; preserve human release accountability.",
          "skills": [
            "Operational policy",
            "Tradeoff analysis"
          ],
          "fieldMix": [
            {
              "field": "Site reliability",
              "percentage": 80
            },
            {
              "field": "System design",
              "percentage": 20
            }
          ],
          "patterns": []
        },
        {
          "id": "78da471b-f9d4-4c81-8565-9502f011614a",
          "key": "BSLO-108",
          "title": "Build an SLO dashboard with bounded diagnostic dimensions",
          "type": "STORY",
          "priority": "MEDIUM",
          "difficulty": "INTERMEDIATE",
          "estimateMinutes": 150,
          "phaseId": "operate",
          "dependsOn": [
            "BSLO-106"
          ],
          "scenario": "Engineers cannot relate budget burn to endpoint versions without exposing user data.",
          "acceptanceCriteria": [
            "Show objective, burn, eligible volume, and coverage.",
            "Allow only bounded endpoint/version dimensions.",
            "Keep customer identifiers out of labels and URLs."
          ],
          "implementationNotes": [
            "Dashboard totals must reconcile with source fixtures."
          ],
          "verification": [
            "Reconcile known synthetic totals.",
            "Reject an unbounded user-ID dimension."
          ],
          "deliverables": [
            "SLO dashboard definition."
          ],
          "rollout": "Publish read-only views first; restore prior queries if totals diverge.",
          "skills": [
            "Observability",
            "Privacy"
          ],
          "fieldMix": [
            {
              "field": "Site reliability",
              "percentage": 50
            },
            {
              "field": "Frontend",
              "percentage": 30
            },
            {
              "field": "Privacy engineering",
              "percentage": 20
            }
          ],
          "patterns": []
        },
        {
          "id": "6cfabedd-ea85-49d0-9696-9b9648f35c62",
          "key": "BSLO-109",
          "title": "Rehearse an objective change without rewriting historical results",
          "type": "TASK",
          "priority": "HIGH",
          "difficulty": "ADVANCED",
          "estimateMinutes": 180,
          "phaseId": "operate",
          "dependsOn": [
            "BSLO-107",
            "BSLO-108"
          ],
          "scenario": "A new completion deadline would make last month's results look better if applied retrospectively.",
          "acceptanceCriteria": [
            "Version objective and indicator definitions.",
            "Compute new results from an explicit effective time.",
            "Preserve historical values under their original definition."
          ],
          "implementationNotes": [
            "Show comparison overlap without relabeling old performance."
          ],
          "verification": [
            "Run old and new definitions on the same fixture.",
            "Verify historical records remain bound to the old version."
          ],
          "deliverables": [
            "SLO revision rehearsal."
          ],
          "rollout": "Run overlapping views before changing the active objective.",
          "skills": [
            "Versioning",
            "Operational integrity"
          ],
          "fieldMix": [
            {
              "field": "Site reliability",
              "percentage": 70
            },
            {
              "field": "Data engineering",
              "percentage": 30
            }
          ],
          "patterns": []
        },
        {
          "id": "6de914b1-bdbb-48e9-854c-67d5b7451e36",
          "key": "BSLO-110",
          "title": "Write an SLO interpretation guide for low-traffic periods",
          "type": "CHORE",
          "priority": "LOW",
          "difficulty": "FOUNDATIONAL",
          "estimateMinutes": 60,
          "phaseId": "operate",
          "dependsOn": [
            "BSLO-109"
          ],
          "scenario": "A single failure overnight produces a dramatic percentage without explaining the sample size.",
          "acceptanceCriteria": [
            "Display eligible event count with the ratio.",
            "Explain low-volume uncertainty.",
            "Document when to inspect individual synthetic traces."
          ],
          "implementationNotes": [
            "Avoid promises of perfect reliability."
          ],
          "verification": [
            "Interpret one failure in a small sample.",
            "Distinguish zero traffic from a healthy measured window."
          ],
          "deliverables": [
            "SLO interpretation guide."
          ],
          "rollout": "Link guidance from dashboards and alert descriptions.",
          "skills": [
            "Technical writing",
            "Reliability"
          ],
          "fieldMix": [
            {
              "field": "Site reliability",
              "percentage": 100
            }
          ],
          "patterns": []
        }
      ]
    }
  ]
}
