{
  "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": "31722a2e-299d-4a44-963b-b65b13ee8f6f",
      "key": "AREGION",
      "title": "Design regional reads without promising impossible failover",
      "field": "System design",
      "summary": "Specify consistency, routing and recovery for a regional customer read experience.",
      "context": "A fictional logistics dashboard serves distant customers from one primary region. Stakeholders want faster reads and outage recovery but have not agreed which data may be stale.",
      "stack": [
        "TypeScript",
        "PostgreSQL",
        "HTTP"
      ],
      "prerequisites": [
        "Create a local primary/replica simulator and synthetic shipment records.",
        "Use local models; no multi-region infrastructure is provisioned."
      ],
      "developerValue": "Practice consistency tradeoffs, failover authority and recovery assumptions.",
      "companyValue": "Review regional availability proposals with explicit data-loss and staleness limits.",
      "delivery": "Ten scoped tickets across three phases. Build a synthetic local service or select a ticket after recreating its prerequisites; estimates exclude setup.",
      "phases": [
        {
          "id": "requirements",
          "title": "Classify regional behavior",
          "goal": "Define which reads and writes need freshness."
        },
        {
          "id": "protocol",
          "title": "Specify routing authority",
          "goal": "Make routing, failover and retry contracts testable."
        },
        {
          "id": "recovery",
          "title": "Challenge recovery promises",
          "goal": "Model outages and reconcile divergent observations."
        }
      ],
      "tickets": [
        {
          "id": "dbd3755c-2ae6-4cd4-81c4-fe2403206832",
          "key": "AREGION-101",
          "title": "Classify shipment reads by tolerated staleness",
          "type": "TASK",
          "priority": "MEDIUM",
          "difficulty": "FOUNDATIONAL",
          "estimateMinutes": 90,
          "phaseId": "requirements",
          "dependsOn": [],
          "scenario": "The regional-read proposal treats a public tracking estimate and an address-change confirmation as equally cacheable.",
          "acceptanceCriteria": [
            "List read classes with explicit hypothetical freshness limits.",
            "Require fresh authority for security and mutation confirmation.",
            "Document unknown product requirements separately."
          ],
          "implementationNotes": [
            "Use a synthetic status timeline with version numbers."
          ],
          "verification": [
            "Assign a declared budget to public tracking.",
            "Show why address-change confirmation needs its accepted version."
          ],
          "deliverables": [
            "Read-consistency matrix"
          ],
          "rollout": "Review the matrix before routing changes; leave unresolved classes on primary reads.",
          "skills": [
            "Consistency requirements",
            "Product reasoning"
          ],
          "fieldMix": [
            {
              "field": "System design",
              "percentage": 60
            },
            {
              "field": "Distributed systems",
              "percentage": 40
            }
          ],
          "patterns": []
        },
        {
          "id": "3dfbebaf-31e4-4ee6-9406-977261fa098e",
          "key": "AREGION-102",
          "title": "Calculate regional latency contributions with stated assumptions",
          "type": "TASK",
          "priority": "MEDIUM",
          "difficulty": "INTERMEDIATE",
          "estimateMinutes": 150,
          "phaseId": "requirements",
          "dependsOn": [
            "AREGION-101"
          ],
          "scenario": "A proposal promises a faster dashboard without separating network time, database time and sequential request dependencies.",
          "acceptanceCriteria": [
            "Break one page load into serial and parallel operations.",
            "Use named hypothetical network and service-time values.",
            "Show sensitivity to an additional cross-region round trip."
          ],
          "implementationNotes": [
            "Label every unmeasured input as an assumption."
          ],
          "verification": [
            "Calculate two routes with the same service-time assumptions.",
            "Add a required primary check and show its effect on the budget."
          ],
          "deliverables": [
            "Latency worksheet and dependency diagram"
          ],
          "rollout": "Use the calculation to prioritize probes; replace assumptions with observations before choosing deployment.",
          "skills": [
            "Latency modeling",
            "Critical-path analysis"
          ],
          "fieldMix": [
            {
              "field": "Performance engineering",
              "percentage": 50
            },
            {
              "field": "System design",
              "percentage": 30
            },
            {
              "field": "Networking",
              "percentage": 20
            }
          ],
          "patterns": []
        },
        {
          "id": "702d744a-a9b3-4873-b80e-faee1305d2fd",
          "key": "AREGION-103",
          "title": "Record the decision between regional caching and replica reads",
          "type": "TASK",
          "priority": "MEDIUM",
          "difficulty": "FOUNDATIONAL",
          "estimateMinutes": 120,
          "phaseId": "requirements",
          "dependsOn": [
            "AREGION-101",
            "AREGION-102"
          ],
          "scenario": "The team jumps to database replicas when a scoped cache might cover the tolerated-staleness tracking view.",
          "acceptanceCriteria": [
            "Compare invalidation, freshness, failure and operational costs.",
            "Keep sensitive and read-after-write paths explicit.",
            "Name a workload or consistency change that revisits the choice."
          ],
          "implementationNotes": [
            "Do not assume an additional region is free or already configured."
          ],
          "verification": [
            "Evaluate both options against one tracking read.",
            "Evaluate an authorization change and reject an option that cannot enforce it."
          ],
          "deliverables": [
            "Regional-read architecture decision"
          ],
          "rollout": "Review using the consistency matrix; implement only the smallest local prototype selected.",
          "skills": [
            "Architecture decisions",
            "Caching tradeoffs"
          ],
          "fieldMix": [
            {
              "field": "System design",
              "percentage": 50
            },
            {
              "field": "Database engineering",
              "percentage": 30
            },
            {
              "field": "Distributed systems",
              "percentage": 20
            }
          ],
          "patterns": []
        },
        {
          "id": "8b0acb5f-cb7c-46bd-ac47-65fca3efa811",
          "key": "AREGION-104",
          "title": "Define a read-after-write token for shipment changes",
          "type": "STORY",
          "priority": "MEDIUM",
          "difficulty": "ADVANCED",
          "estimateMinutes": 210,
          "phaseId": "protocol",
          "dependsOn": [
            "AREGION-101",
            "AREGION-103"
          ],
          "scenario": "A user changes a delivery note, then a regional read immediately shows the previous text.",
          "acceptanceCriteria": [
            "Mutation returns an accepted version token.",
            "A subsequent read must meet that version or use a fresh source.",
            "Tokens are bound to tenant and resource."
          ],
          "implementationNotes": [
            "Implement a small local routing model, not a new replication engine."
          ],
          "verification": [
            "Write version 4 while the replica has version 3 and route correctly.",
            "Reuse another tenant's token and reject it without exposing state."
          ],
          "deliverables": [
            "Read-version contract and routing tests"
          ],
          "rollout": "Canary the routing model in a local client; fall back to primary reads when freshness cannot be established.",
          "skills": [
            "Read-your-writes",
            "Routing"
          ],
          "fieldMix": [
            {
              "field": "Distributed systems",
              "percentage": 60
            },
            {
              "field": "System design",
              "percentage": 40
            }
          ],
          "patterns": []
        },
        {
          "id": "5832f9ff-4d05-49a3-ba75-6cfe8656cad9",
          "key": "AREGION-105",
          "title": "Fence regional write authority before promoting a standby",
          "type": "TASK",
          "priority": "HIGH",
          "difficulty": "EXPERT",
          "estimateMinutes": 360,
          "phaseId": "protocol",
          "dependsOn": [
            "AREGION-104"
          ],
          "scenario": "An outage runbook says promote the standby but never explains how the unreachable former primary loses authority.",
          "acceptanceCriteria": [
            "Define one durable authority epoch and promotion preconditions.",
            "Reject commands using an old epoch.",
            "Describe the availability tradeoff when fencing cannot be confirmed."
          ],
          "implementationNotes": [
            "Use a local two-writer model; do not claim split-brain prevention without enforced fencing."
          ],
          "verification": [
            "Promote a new epoch and accept only the new writer.",
            "Let the old writer recover and reject its stale-epoch command."
          ],
          "deliverables": [
            "Failover authority protocol and fencing probe"
          ],
          "rollout": "Require the probe before any real failover procedure; refuse promotion when authority is ambiguous.",
          "skills": [
            "Fencing",
            "Consistency"
          ],
          "fieldMix": [
            {
              "field": "Distributed systems",
              "percentage": 60
            },
            {
              "field": "System design",
              "percentage": 40
            }
          ],
          "patterns": []
        },
        {
          "id": "444112ca-52b5-42d3-b42d-161f463da926",
          "key": "AREGION-106",
          "title": "Preserve command identity across a regional routing retry",
          "type": "TASK",
          "priority": "MEDIUM",
          "difficulty": "ADVANCED",
          "estimateMinutes": 240,
          "phaseId": "protocol",
          "dependsOn": [
            "AREGION-104",
            "AREGION-105"
          ],
          "scenario": "A gateway retries an update in another region after losing the response, potentially applying the shipment change twice.",
          "acceptanceCriteria": [
            "Use a stable command key across routing attempts.",
            "Bind the key to target, actor and canonical input.",
            "Return unknown until committed status can be resolved safely."
          ],
          "implementationNotes": [
            "Do not infer an absent commit from a connection timeout."
          ],
          "verification": [
            "Lose the response after commit and resolve one logical change.",
            "Change input under the same key and return conflict."
          ],
          "deliverables": [
            "Cross-route command contract and timeout probe"
          ],
          "rollout": "Use the contract in the local gateway prototype; suspend retries if deduplication authority is unavailable.",
          "skills": [
            "Idempotency",
            "Distributed failure"
          ],
          "fieldMix": [
            {
              "field": "Distributed systems",
              "percentage": 50
            },
            {
              "field": "System design",
              "percentage": 30
            },
            {
              "field": "Backend",
              "percentage": 20
            }
          ],
          "patterns": []
        },
        {
          "id": "2a57afe0-45ef-4146-911d-5f44deb93e62",
          "key": "AREGION-107",
          "title": "Define regional fallback for unavailable authorization freshness",
          "type": "TASK",
          "priority": "MEDIUM",
          "difficulty": "ADVANCED",
          "estimateMinutes": 210,
          "phaseId": "protocol",
          "dependsOn": [
            "AREGION-101",
            "AREGION-105",
            "AREGION-106"
          ],
          "scenario": "A regional endpoint can read cached shipment data but cannot confirm whether the requesting account's access was revoked.",
          "acceptanceCriteria": [
            "Separate data freshness from authorization freshness.",
            "Deny protected reads when required authority is unavailable.",
            "Keep public tracking behavior separately bounded by its policy."
          ],
          "implementationNotes": [
            "Model access revocation with synthetic identities."
          ],
          "verification": [
            "Serve a permitted public tracking response during primary loss.",
            "Revoke a protected reader and verify the regional route does not use stale permission."
          ],
          "deliverables": [
            "Authorization fallback matrix and denial probe"
          ],
          "rollout": "Keep protected reads on fresh authority until the regional adapter meets the contract.",
          "skills": [
            "Authorization consistency",
            "Fail-closed design"
          ],
          "fieldMix": [
            {
              "field": "Security",
              "percentage": 50
            },
            {
              "field": "System design",
              "percentage": 30
            },
            {
              "field": "Distributed systems",
              "percentage": 20
            }
          ],
          "patterns": []
        },
        {
          "id": "d4c6f7dc-1631-404d-8f68-24651633012a",
          "key": "AREGION-108",
          "title": "Model recovery-point and recovery-time limits for a regional outage",
          "type": "TASK",
          "priority": "MEDIUM",
          "difficulty": "EXPERT",
          "estimateMinutes": 300,
          "phaseId": "recovery",
          "dependsOn": [
            "AREGION-102",
            "AREGION-105",
            "AREGION-106"
          ],
          "scenario": "A stakeholder asks for zero data loss and immediate recovery even when replication is asynchronous and the primary is unreachable.",
          "acceptanceCriteria": [
            "Define what RPO and RTO mean for the chosen workload.",
            "Calculate loss and recovery bounds from explicit lag and detection assumptions.",
            "Identify guarantees the design cannot currently provide."
          ],
          "implementationNotes": [
            "Use hypothetical numbers and separate targets from measured results."
          ],
          "verification": [
            "Calculate the declared outage scenario with bounded lag.",
            "Remove the lag bound and show that a finite loss guarantee is unsupported."
          ],
          "deliverables": [
            "Recovery objectives worksheet"
          ],
          "rollout": "Review targets before infrastructure approval; revise guarantees when provider constraints differ.",
          "skills": [
            "Recovery objectives",
            "Risk analysis"
          ],
          "fieldMix": [
            {
              "field": "Site reliability",
              "percentage": 50
            },
            {
              "field": "System design",
              "percentage": 30
            },
            {
              "field": "Distributed systems",
              "percentage": 20
            }
          ],
          "patterns": []
        },
        {
          "id": "144d5435-f3a9-48b6-af03-0aa04138dc13",
          "key": "AREGION-109",
          "title": "Reconcile divergent regional observations after connectivity returns",
          "type": "TASK",
          "priority": "MEDIUM",
          "difficulty": "INTERMEDIATE",
          "estimateMinutes": 180,
          "phaseId": "recovery",
          "dependsOn": [
            "AREGION-104",
            "AREGION-105",
            "AREGION-108"
          ],
          "scenario": "Support receives screenshots with different shipment states after an outage and needs to explain which accepted version is authoritative.",
          "acceptanceCriteria": [
            "Compare accepted command versions and authority epochs.",
            "Preserve stale observations as observations, not new writes.",
            "Flag missing authoritative history as unresolved."
          ],
          "implementationNotes": [
            "Build a read-only synthetic reconciliation report."
          ],
          "verification": [
            "Reconcile two observed versions against the accepted command log.",
            "Remove an authority segment and report an explicit gap."
          ],
          "deliverables": [
            "Regional reconciliation script"
          ],
          "rollout": "Run read-only after the local outage drill; avoid repair writes until authority is resolved.",
          "skills": [
            "Reconciliation",
            "Provenance"
          ],
          "fieldMix": [
            {
              "field": "Distributed systems",
              "percentage": 50
            },
            {
              "field": "System design",
              "percentage": 30
            },
            {
              "field": "Data engineering",
              "percentage": 20
            }
          ],
          "patterns": []
        },
        {
          "id": "77ac7a28-0862-42e5-b269-53d2cf9d8829",
          "key": "AREGION-110",
          "title": "Write the staged regional-read adoption and rollback plan",
          "type": "CHORE",
          "priority": "MEDIUM",
          "difficulty": "FOUNDATIONAL",
          "estimateMinutes": 120,
          "phaseId": "recovery",
          "dependsOn": [
            "AREGION-103",
            "AREGION-107",
            "AREGION-109"
          ],
          "scenario": "The architecture review approves a limited regional tracking view, but the rollout ticket still says switch all traffic.",
          "acceptanceCriteria": [
            "Start with the approved read class and synthetic cohort.",
            "Define freshness and denial checks before wider routing.",
            "Rollback by restoring primary routing without rewriting accepted data."
          ],
          "implementationNotes": [
            "Include unresolved dependencies as explicit blockers."
          ],
          "verification": [
            "Walk a permitted tracking request through the proposed rollout.",
            "Trigger stale authorization and verify protected traffic stays on the declared safe path."
          ],
          "deliverables": [
            "Regional adoption plan and decision checklist"
          ],
          "rollout": "Review the plan with the local simulator; retain a primary-routing override for recovery.",
          "skills": [
            "Rollout design",
            "Architecture communication"
          ],
          "fieldMix": [
            {
              "field": "System design",
              "percentage": 60
            },
            {
              "field": "Platform engineering",
              "percentage": 40
            }
          ],
          "patterns": []
        }
      ]
    }
  ]
}
