{
  "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": "4eedb0cf-a8b2-46b9-ba4d-b3b11d9c61f1",
      "key": "BLOADSHED",
      "title": "Overload admission and graceful degradation",
      "field": "Site reliability",
      "summary": "Protect essential reads when optional workloads saturate a service.",
      "context": "A fictional ticketing service becomes unresponsive during event releases because optional recommendation calls consume the same resources as reservation checks.",
      "stack": [
        "TypeScript",
        "HTTP",
        "Redis"
      ],
      "prerequisites": [
        "Build a bounded local service and synthetic open-loop workload generator with controllable dependency delays."
      ],
      "developerValue": "Practice overload behavior, admission control, and fair performance experiments.",
      "companyValue": "Create predictable failure and degradation behavior under declared capacity constraints.",
      "delivery": "Deliver local controls and measurements; no live load generation.",
      "phases": [
        {
          "id": "baseline",
          "title": "Characterize overload",
          "goal": "Define essential outcomes and bounded workload assumptions."
        },
        {
          "id": "protect",
          "title": "Protect service capacity",
          "goal": "Limit queues and isolate optional work."
        },
        {
          "id": "validate",
          "title": "Validate recovery",
          "goal": "Compare policies and verify return to normal operation."
        }
      ],
      "tickets": [
        {
          "id": "700db22b-abb4-48dc-872e-e99f913bdcaa",
          "key": "BLOADSHED-101",
          "title": "Classify essential and optional ticketing requests",
          "type": "TASK",
          "priority": "MEDIUM",
          "difficulty": "FOUNDATIONAL",
          "estimateMinutes": 60,
          "phaseId": "baseline",
          "dependsOn": [],
          "scenario": "Recommendation requests compete with reservation checks without any priority policy.",
          "acceptanceCriteria": [
            "List request classes and user impact.",
            "Define allowed degradation per class.",
            "Keep reservation correctness invariant."
          ],
          "implementationNotes": [
            "Do not prioritize users by inferred personal traits."
          ],
          "verification": [
            "Classify a reservation and recommendation request.",
            "Identify a request that must fail explicitly rather than degrade silently."
          ],
          "deliverables": [
            "Request-class policy."
          ],
          "rollout": "Review classification before applying limits.",
          "skills": [
            "Reliability design"
          ],
          "fieldMix": [
            {
              "field": "Site reliability",
              "percentage": 60
            },
            {
              "field": "System design",
              "percentage": 40
            }
          ],
          "patterns": []
        },
        {
          "id": "096593a7-fc9b-4341-8216-f31544e26f7e",
          "key": "BLOADSHED-102",
          "title": "Build a workload that preserves offered arrival rate",
          "type": "TASK",
          "priority": "HIGH",
          "difficulty": "ADVANCED",
          "estimateMinutes": 180,
          "phaseId": "baseline",
          "dependsOn": [
            "BLOADSHED-101"
          ],
          "scenario": "A closed-loop load script hides overload by sending fewer requests as responses slow.",
          "acceptanceCriteria": [
            "Record offered, admitted, completed, and rejected rates.",
            "Use bounded open-loop scheduling.",
            "Report dropped generator work and resource limits."
          ],
          "implementationNotes": [
            "Run only against the local fixture."
          ],
          "verification": [
            "Generate the declared steady arrival rate.",
            "Overload the generator and report its invalid measurement window."
          ],
          "deliverables": [
            "Load harness."
          ],
          "rollout": "Cap duration and concurrency; discard runs with unreported generator saturation.",
          "skills": [
            "Load testing"
          ],
          "fieldMix": [
            {
              "field": "Performance engineering",
              "percentage": 70
            },
            {
              "field": "Quality engineering",
              "percentage": 30
            }
          ],
          "patterns": []
        },
        {
          "id": "e6ccbf58-4c81-4766-8c2d-1e9ecb5403b4",
          "key": "BLOADSHED-103",
          "title": "Bound the waiting queue before worker slots are exhausted",
          "type": "TASK",
          "priority": "HIGH",
          "difficulty": "INTERMEDIATE",
          "estimateMinutes": 150,
          "phaseId": "protect",
          "dependsOn": [
            "BLOADSHED-102"
          ],
          "scenario": "Requests accumulate indefinitely while waiting for a shared dependency.",
          "acceptanceCriteria": [
            "Enforce a finite waiting capacity.",
            "Return a documented overload response when full.",
            "Remove cancelled requests from the queue."
          ],
          "implementationNotes": [
            "Never report rejected requests as successful degradation."
          ],
          "verification": [
            "Admit work below the limit.",
            "Overflow and cancel queued requests without leaked slots."
          ],
          "deliverables": [
            "Bounded admission queue."
          ],
          "rollout": "Start with conservative limits; restore the previous policy if essential outcomes regress.",
          "skills": [
            "Backpressure"
          ],
          "fieldMix": [
            {
              "field": "Site reliability",
              "percentage": 40
            },
            {
              "field": "Platform engineering",
              "percentage": 40
            },
            {
              "field": "Performance engineering",
              "percentage": 20
            }
          ],
          "patterns": []
        },
        {
          "id": "47461420-3a09-4f0a-9499-677fe40ba9f8",
          "key": "BLOADSHED-104",
          "title": "Isolate optional recommendation concurrency",
          "type": "TASK",
          "priority": "HIGH",
          "difficulty": "ADVANCED",
          "estimateMinutes": 180,
          "phaseId": "protect",
          "dependsOn": [
            "BLOADSHED-101",
            "BLOADSHED-103"
          ],
          "scenario": "Slow recommendations consume every outbound connection.",
          "acceptanceCriteria": [
            "Use a separate optional-work concurrency budget.",
            "Reserve declared capacity for essential requests.",
            "Skip optional work when its budget is unavailable."
          ],
          "implementationNotes": [
            "Use a real bounded pool, not an unbounded background task list."
          ],
          "verification": [
            "Serve reservations while recommendations stall.",
            "Exhaust optional slots and verify graceful omission."
          ],
          "deliverables": [
            "Optional-work bulkhead."
          ],
          "rollout": "Enable the bulkhead before increasing overall concurrency.",
          "skills": [
            "Bulkheads",
            "Concurrency"
          ],
          "fieldMix": [
            {
              "field": "Site reliability",
              "percentage": 40
            },
            {
              "field": "Performance engineering",
              "percentage": 30
            },
            {
              "field": "Networking",
              "percentage": 30
            }
          ],
          "patterns": [
            {
              "pattern": "bulkhead",
              "activity": "APPLY",
              "focus": "Bound optional recommendation concurrency separately from essential requests and show that exhausted optional capacity cannot consume the essential reserve."
            }
          ]
        },
        {
          "id": "eb421617-924e-4f34-9ef4-43ab5abd9b87",
          "key": "BLOADSHED-105",
          "title": "Propagate request deadlines to downstream work",
          "type": "BUG",
          "priority": "HIGH",
          "difficulty": "ADVANCED",
          "estimateMinutes": 180,
          "phaseId": "protect",
          "dependsOn": [
            "BLOADSHED-103",
            "BLOADSHED-104"
          ],
          "scenario": "The client has timed out while its dependency request continues holding a slot.",
          "acceptanceCriteria": [
            "Derive child deadlines from remaining request time.",
            "Abort owned work on cancellation.",
            "Release capacity even when a double ignores cancellation."
          ],
          "implementationNotes": [
            "Bound cleanup time and track late completions safely."
          ],
          "verification": [
            "Complete within a shared deadline.",
            "Timeout an uncooperative dependency and reclaim the slot."
          ],
          "deliverables": [
            "Deadline propagation."
          ],
          "rollout": "Default to shorter optional deadlines; retain explicit timeout responses.",
          "skills": [
            "Cancellation",
            "Resource lifecycle"
          ],
          "fieldMix": [
            {
              "field": "Backend",
              "percentage": 40
            },
            {
              "field": "Site reliability",
              "percentage": 30
            },
            {
              "field": "Networking",
              "percentage": 30
            }
          ],
          "patterns": []
        },
        {
          "id": "852edd48-4bd6-45b1-b9da-9b979bcdf246",
          "key": "BLOADSHED-106",
          "title": "Provide retry guidance that does not synchronize every client",
          "type": "TASK",
          "priority": "MEDIUM",
          "difficulty": "INTERMEDIATE",
          "estimateMinutes": 120,
          "phaseId": "protect",
          "dependsOn": [
            "BLOADSHED-103"
          ],
          "scenario": "All rejected clients retry exactly one second later and recreate the spike.",
          "acceptanceCriteria": [
            "Return bounded retry guidance.",
            "Document jitter and attempt ceilings for clients.",
            "Avoid automatic retry of unsafe writes."
          ],
          "implementationNotes": [
            "Use deterministic random input in tests."
          ],
          "verification": [
            "Spread synthetic client retries across the window.",
            "Verify non-idempotent requests are not blindly retried."
          ],
          "deliverables": [
            "Overload response contract."
          ],
          "rollout": "Publish guidance with admission changes; monitor repeated rejection bursts.",
          "skills": [
            "Retry design"
          ],
          "fieldMix": [
            {
              "field": "API design",
              "percentage": 50
            },
            {
              "field": "Site reliability",
              "percentage": 50
            }
          ],
          "patterns": []
        },
        {
          "id": "be97e858-aed6-4d05-b610-799daaa0cdeb",
          "key": "BLOADSHED-107",
          "title": "Preserve fair access across tenant request queues",
          "type": "TASK",
          "priority": "HIGH",
          "difficulty": "ADVANCED",
          "estimateMinutes": 210,
          "phaseId": "protect",
          "dependsOn": [
            "BLOADSHED-103",
            "BLOADSHED-104"
          ],
          "scenario": "One large tenant fills every waiting slot and blocks smaller tenants.",
          "acceptanceCriteria": [
            "Bound per-tenant queued work.",
            "Define a transparent scheduling policy.",
            "Prevent idle tenant allocation from wasting all spare capacity."
          ],
          "implementationNotes": [
            "Use synthetic tenant classes and document fairness assumptions."
          ],
          "verification": [
            "Serve concurrent tenants under sustained load.",
            "Flood one tenant and verify others retain declared progress."
          ],
          "deliverables": [
            "Tenant scheduling policy."
          ],
          "rollout": "Trial with fixed limits; disable new policy if starvation appears.",
          "skills": [
            "Fair scheduling"
          ],
          "fieldMix": [
            {
              "field": "Performance engineering",
              "percentage": 40
            },
            {
              "field": "Platform engineering",
              "percentage": 40
            },
            {
              "field": "Site reliability",
              "percentage": 20
            }
          ],
          "patterns": []
        },
        {
          "id": "76ed83f9-7374-42b7-a7af-3a20f2d974af",
          "key": "BLOADSHED-108",
          "title": "Compare rejection policies under the same offered workload",
          "type": "TASK",
          "priority": "HIGH",
          "difficulty": "EXPERT",
          "estimateMinutes": 300,
          "phaseId": "validate",
          "dependsOn": [
            "BLOADSHED-102",
            "BLOADSHED-105",
            "BLOADSHED-106",
            "BLOADSHED-107"
          ],
          "scenario": "The team must choose between a larger queue and earlier rejection.",
          "acceptanceCriteria": [
            "Compare identical arrival traces and resource budgets.",
            "Measure essential latency, rejection, completion, and recovery separately.",
            "Explain tradeoffs and remaining uncertainty."
          ],
          "implementationNotes": [
            "Do not compare only successful-response latency or hide rejected work."
          ],
          "verification": [
            "Run both policies on the same synthetic burst.",
            "Expose a policy that improves accepted latency by rejecting more work."
          ],
          "deliverables": [
            "Admission policy assessment."
          ],
          "rollout": "Choose a bounded default and retain a tested configuration rollback.",
          "skills": [
            "Performance analysis",
            "Reliability tradeoffs"
          ],
          "fieldMix": [
            {
              "field": "Performance engineering",
              "percentage": 60
            },
            {
              "field": "Site reliability",
              "percentage": 40
            }
          ],
          "patterns": []
        },
        {
          "id": "c4a36bc6-fc26-422a-9956-d47831944dd9",
          "key": "BLOADSHED-109",
          "title": "Prevent capacity oscillation when the burst ends",
          "type": "BUG",
          "priority": "HIGH",
          "difficulty": "ADVANCED",
          "estimateMinutes": 180,
          "phaseId": "validate",
          "dependsOn": [
            "BLOADSHED-108"
          ],
          "scenario": "Degradation switches on and off rapidly near the threshold.",
          "acceptanceCriteria": [
            "Add declared hysteresis or cooldown semantics.",
            "Return to normal after sustained recovery.",
            "Keep manual emergency controls auditable."
          ],
          "implementationNotes": [
            "Avoid permanent degradation after transient overload."
          ],
          "verification": [
            "Recover after a controlled burst.",
            "Oscillate near thresholds and verify bounded mode changes."
          ],
          "deliverables": [
            "Recovery controller tests."
          ],
          "rollout": "Run in observation mode first; allow a safe fixed-policy fallback.",
          "skills": [
            "Control systems"
          ],
          "fieldMix": [
            {
              "field": "Site reliability",
              "percentage": 60
            },
            {
              "field": "Platform engineering",
              "percentage": 40
            }
          ],
          "patterns": []
        },
        {
          "id": "1000c007-b937-4b0b-8386-552d023d17d5",
          "key": "BLOADSHED-110",
          "title": "Document the customer-visible degraded service contract",
          "type": "CHORE",
          "priority": "LOW",
          "difficulty": "FOUNDATIONAL",
          "estimateMinutes": 60,
          "phaseId": "validate",
          "dependsOn": [
            "BLOADSHED-109"
          ],
          "scenario": "Product support cannot explain which features disappear during overload.",
          "acceptanceCriteria": [
            "List omitted features and explicit failures.",
            "Describe recovery indicators without promising exact times.",
            "Include support diagnosis from safe metrics."
          ],
          "implementationNotes": [
            "No false success when essential work was rejected."
          ],
          "verification": [
            "Review a degraded response against the guide.",
            "Verify a failed reservation is never described as completed."
          ],
          "deliverables": [
            "Degradation guide."
          ],
          "rollout": "Ship alongside controls and update it when request classes change.",
          "skills": [
            "Technical writing"
          ],
          "fieldMix": [
            {
              "field": "Site reliability",
              "percentage": 70
            },
            {
              "field": "API design",
              "percentage": 30
            }
          ],
          "patterns": []
        }
      ]
    }
  ]
}
