{
  "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": "a33baed1-8262-4f90-a081-caa0818640ce",
      "key": "CFRAME",
      "title": "An emulated device-link framing library",
      "field": "Embedded and edge",
      "summary": "Decode bounded byte streams and recover serial-link framing errors in software.",
      "context": "Fictional environmental-display devices send synthetic noncritical readings to a local gateway. Implement a byte-stream emulator; no physical device, radio, credentials or safety-critical control is involved.",
      "stack": [
        "TypeScript",
        "Byte-stream emulator",
        "Vitest"
      ],
      "prerequisites": [
        "Specify a small frame format with length sequence payload and checksum.",
        "Generate local byte streams with fragmentation corruption and reconnects."
      ],
      "developerValue": "Practice incremental parsing, fixed resource limits and protocol recovery.",
      "companyValue": "Inspect whether a device adapter survives malformed input without corrupting accepted readings.",
      "delivery": "All execution uses software fixtures; hardware timing and production readiness are unqualified.",
      "phases": [
        {
          "id": "format",
          "title": "Define frame boundaries",
          "goal": "Validate bytes before interpreting payloads."
        },
        {
          "id": "stream",
          "title": "Handle partial transport",
          "goal": "Recover fragmented and damaged streams."
        },
        {
          "id": "operation",
          "title": "Bound receiver behavior",
          "goal": "Limit work and explain rejected data."
        }
      ],
      "tickets": [
        {
          "id": "0d475c31-e9f7-47d4-9d51-6d04beb09883",
          "key": "CFRAME-101",
          "title": "Decode emulated device frame integers with explicit byte order",
          "type": "TASK",
          "priority": "MEDIUM",
          "difficulty": "FOUNDATIONAL",
          "estimateMinutes": 75,
          "phaseId": "format",
          "dependsOn": [],
          "scenario": "A synthetic device length reads as 512 instead of 2 because endpoints disagree on byte order. Specify and implement the format.",
          "acceptanceCriteria": [
            "Length and sequence use documented order",
            "Valid boundary values round-trip",
            "Truncated integer fields fail explicitly"
          ],
          "implementationNotes": [
            "Use byte fixtures rather than host-native integer casts."
          ],
          "verification": [
            "Decode known two-byte values",
            "Provide truncated header"
          ],
          "deliverables": [
            "Integer codec and format examples"
          ],
          "rollout": "Reject frames from unknown format versions.",
          "skills": [
            "Binary protocols",
            "Encoding"
          ],
          "fieldMix": [
            {
              "field": "Embedded and edge",
              "percentage": 60
            },
            {
              "field": "Networking",
              "percentage": 40
            }
          ],
          "patterns": []
        },
        {
          "id": "3948ecd1-6416-4492-bfd2-b018fe826261",
          "key": "CFRAME-102",
          "title": "Reject emulated device frames above the receiver limit",
          "type": "BUG",
          "priority": "HIGH",
          "difficulty": "FOUNDATIONAL",
          "estimateMinutes": 75,
          "phaseId": "format",
          "dependsOn": [
            "CFRAME-101"
          ],
          "scenario": "An untrusted length prefix causes a large allocation. Validate declared size before reserving payload storage.",
          "acceptanceCriteria": [
            "Supported sizes pass",
            "Oversized lengths fail before allocation",
            "Zero-length policy is explicit"
          ],
          "implementationNotes": [
            "Keep receiver limits independent from sender claims."
          ],
          "verification": [
            "Decode small fixture",
            "Declare maximum integer length"
          ],
          "deliverables": [
            "Frame admission guard and allocation checks"
          ],
          "rollout": "Stop reception if bounded allocation cannot be guaranteed.",
          "skills": [
            "Resource limits",
            "Input validation"
          ],
          "fieldMix": [
            {
              "field": "Embedded and edge",
              "percentage": 50
            },
            {
              "field": "Security",
              "percentage": 30
            },
            {
              "field": "Networking",
              "percentage": 20
            }
          ],
          "patterns": []
        },
        {
          "id": "81f6c912-1c42-43e4-9fcf-ccd3745e48c9",
          "key": "CFRAME-103",
          "title": "Verify emulated device frame checksums before dispatch",
          "type": "TASK",
          "priority": "HIGH",
          "difficulty": "INTERMEDIATE",
          "estimateMinutes": 120,
          "phaseId": "format",
          "dependsOn": [
            "CFRAME-101",
            "CFRAME-102"
          ],
          "scenario": "Corrupted readings reach the dashboard because checksum failures are warnings only. Gate payload dispatch on verification.",
          "acceptanceCriteria": [
            "Valid frame dispatches once",
            "Bad checksum dispatches nothing",
            "Failure records a bounded category"
          ],
          "implementationNotes": [
            "Checksum detects corruption and does not authenticate senders."
          ],
          "verification": [
            "Accept valid frame",
            "Flip payload byte without updating checksum"
          ],
          "deliverables": [
            "Checksum gate and corruption cases"
          ],
          "rollout": "Disable payload dispatch if verification is unavailable.",
          "skills": [
            "Integrity",
            "Protocol design"
          ],
          "fieldMix": [
            {
              "field": "Embedded and edge",
              "percentage": 60
            },
            {
              "field": "Networking",
              "percentage": 40
            }
          ],
          "patterns": []
        },
        {
          "id": "acaf701b-d7eb-418c-a71a-a0ac9d7fe153",
          "key": "CFRAME-104",
          "title": "Assemble fragmented emulated frames across arbitrary read boundaries",
          "type": "BUG",
          "priority": "HIGH",
          "difficulty": "ADVANCED",
          "estimateMinutes": 180,
          "phaseId": "stream",
          "dependsOn": [
            "CFRAME-102",
            "CFRAME-103"
          ],
          "scenario": "A single frame split across reads is discarded as malformed. Maintain incremental parser state.",
          "acceptanceCriteria": [
            "Every legal split yields same frame",
            "Multiple frames in one read decode",
            "Incomplete suffix remains bounded"
          ],
          "implementationNotes": [
            "Transport read boundaries are not message boundaries."
          ],
          "verification": [
            "Test every split of small frame",
            "Feed partial header then disconnect"
          ],
          "deliverables": [
            "Streaming decoder and split cases"
          ],
          "rollout": "Buffer only up to the declared frame limit.",
          "skills": [
            "Streaming",
            "State machines"
          ],
          "fieldMix": [
            {
              "field": "Embedded and edge",
              "percentage": 50
            },
            {
              "field": "Networking",
              "percentage": 50
            }
          ],
          "patterns": []
        },
        {
          "id": "e2e2ebe1-be3f-478f-b33c-67563411344f",
          "key": "CFRAME-105",
          "title": "Resynchronize emulated device framing after a corrupt header",
          "type": "STORY",
          "priority": "MEDIUM",
          "difficulty": "ADVANCED",
          "estimateMinutes": 180,
          "phaseId": "stream",
          "dependsOn": [
            "CFRAME-104"
          ],
          "scenario": "One damaged length prevents decoding all later frames. Recover at a documented sync marker without trusting random payload bytes.",
          "acceptanceCriteria": [
            "Valid later frame can recover",
            "Recovery scans within a cap",
            "Rejected bytes never dispatch as readings"
          ],
          "implementationNotes": [
            "Define marker escaping or ambiguity handling explicitly."
          ],
          "verification": [
            "Corrupt header before valid frame",
            "Embed marker-like bytes in payload"
          ],
          "deliverables": [
            "Resynchronization algorithm and ambiguity cases"
          ],
          "rollout": "Close the link when a safe boundary cannot be found.",
          "skills": [
            "Parser recovery",
            "Protocols"
          ],
          "fieldMix": [
            {
              "field": "Embedded and edge",
              "percentage": 50
            },
            {
              "field": "Networking",
              "percentage": 50
            }
          ],
          "patterns": []
        },
        {
          "id": "b389bc08-6085-4697-a5b7-7f35c28290d1",
          "key": "CFRAME-106",
          "title": "Discard incomplete emulated frames after an idle deadline",
          "type": "TASK",
          "priority": "MEDIUM",
          "difficulty": "INTERMEDIATE",
          "estimateMinutes": 120,
          "phaseId": "stream",
          "dependsOn": [
            "CFRAME-104",
            "CFRAME-105"
          ],
          "scenario": "A sender transmits a header and stops, pinning a receive buffer indefinitely. Add an injected idle timer.",
          "acceptanceCriteria": [
            "Active progress refreshes deadline",
            "Expired partial frame releases buffer",
            "New valid frame can start afterward"
          ],
          "implementationNotes": [
            "Use monotonic elapsed time rather than calendar time."
          ],
          "verification": [
            "Complete frame before deadline",
            "Pause midway beyond deadline"
          ],
          "deliverables": [
            "Partial-frame timeout and clock cases"
          ],
          "rollout": "Reset connection on timeout if local recovery is uncertain.",
          "skills": [
            "Timers",
            "Resource management"
          ],
          "fieldMix": [
            {
              "field": "Embedded and edge",
              "percentage": 60
            },
            {
              "field": "Networking",
              "percentage": 40
            }
          ],
          "patterns": []
        },
        {
          "id": "ab4382e3-5fbc-48f0-917b-3fdb50f99d4a",
          "key": "CFRAME-107",
          "title": "Handle emulated device sequence wrap without accepting stale frames",
          "type": "BUG",
          "priority": "HIGH",
          "difficulty": "EXPERT",
          "estimateMinutes": 240,
          "phaseId": "stream",
          "dependsOn": [
            "CFRAME-103",
            "CFRAME-106"
          ],
          "scenario": "Sequence 0 after 65535 is rejected as old, while delayed frames sometimes overwrite current readings. Define a bounded modular-order window.",
          "acceptanceCriteria": [
            "Legitimate wrap is accepted",
            "Duplicates do not dispatch twice",
            "Outside-window frames are rejected or require reset"
          ],
          "implementationNotes": [
            "State the maximum reorder window and session boundary."
          ],
          "verification": [
            "Feed wrap boundary sequence",
            "Replay delayed pre-wrap frame"
          ],
          "deliverables": [
            "Sequence policy and boundary cases"
          ],
          "rollout": "Require a new session when sequence ordering is ambiguous.",
          "skills": [
            "Sequence arithmetic",
            "Ordering"
          ],
          "fieldMix": [
            {
              "field": "Embedded and edge",
              "percentage": 50
            },
            {
              "field": "Networking",
              "percentage": 30
            },
            {
              "field": "Distributed systems",
              "percentage": 20
            }
          ],
          "patterns": []
        },
        {
          "id": "854f60d7-7363-4a5a-b62e-9d2274fc32b9",
          "key": "CFRAME-108",
          "title": "Apply backpressure when emulated device consumers fall behind",
          "type": "TASK",
          "priority": "HIGH",
          "difficulty": "ADVANCED",
          "estimateMinutes": 180,
          "phaseId": "operation",
          "dependsOn": [
            "CFRAME-104",
            "CFRAME-107"
          ],
          "scenario": "Parsing outruns downstream processing and queues grow indefinitely. Bound accepted-frame buffering.",
          "acceptanceCriteria": [
            "Queue capacity is explicit",
            "Overflow follows documented reject or pause policy",
            "Parser state remains valid"
          ],
          "implementationNotes": [
            "Do not claim lossless delivery under an explicit drop policy."
          ],
          "verification": [
            "Consume at normal speed",
            "Stall consumer past capacity"
          ],
          "deliverables": [
            "Bounded queue and overload cases"
          ],
          "rollout": "Pause emulator input if the consumer cannot keep up.",
          "skills": [
            "Backpressure",
            "Resource limits"
          ],
          "fieldMix": [
            {
              "field": "Embedded and edge",
              "percentage": 40
            },
            {
              "field": "Performance engineering",
              "percentage": 40
            },
            {
              "field": "Networking",
              "percentage": 20
            }
          ],
          "patterns": []
        },
        {
          "id": "0501efec-16f0-4b37-aa1d-d7bc81f78ecf",
          "key": "CFRAME-109",
          "title": "Reset emulated receiver state on a new link session",
          "type": "BUG",
          "priority": "MEDIUM",
          "difficulty": "INTERMEDIATE",
          "estimateMinutes": 105,
          "phaseId": "operation",
          "dependsOn": [
            "CFRAME-106",
            "CFRAME-107"
          ],
          "scenario": "Bytes from a previous connection combine with a new header after reconnect. Clear session-owned parsing state.",
          "acceptanceCriteria": [
            "New session discards partial buffer",
            "Sequence window resets by contract",
            "Completed prior frames remain recorded"
          ],
          "implementationNotes": [
            "Connection identity must not come from payload text alone."
          ],
          "verification": [
            "Reconnect after complete frame",
            "Reconnect mid-header"
          ],
          "deliverables": [
            "Session reset and reconnect cases"
          ],
          "rollout": "Recreate the receiver per connection until state isolation is repaired.",
          "skills": [
            "Lifecycle",
            "State isolation"
          ],
          "fieldMix": [
            {
              "field": "Embedded and edge",
              "percentage": 60
            },
            {
              "field": "Networking",
              "percentage": 40
            }
          ],
          "patterns": []
        },
        {
          "id": "43f7d910-f089-4148-993b-cf898c3eafef",
          "key": "CFRAME-110",
          "title": "Expose emulated frame rejection counters without raw payloads",
          "type": "CHORE",
          "priority": "LOW",
          "difficulty": "INTERMEDIATE",
          "estimateMinutes": 90,
          "phaseId": "operation",
          "dependsOn": [
            "CFRAME-108",
            "CFRAME-109"
          ],
          "scenario": "Debug logs contain complete sensor payloads even when only corruption rates are needed. Emit bounded categories.",
          "acceptanceCriteria": [
            "Counts separate size checksum timeout and sequence failures",
            "Payload bytes are omitted",
            "Counter reset scope is documented"
          ],
          "implementationNotes": [
            "Measurements describe the synthetic emulator only."
          ],
          "verification": [
            "Feed valid and corrupt fixtures",
            "Inject secret-like payload and inspect logs"
          ],
          "deliverables": [
            "Receiver metrics contract and samples"
          ],
          "rollout": "Disable detailed logging if payload content escapes.",
          "skills": [
            "Observability",
            "Data minimization"
          ],
          "fieldMix": [
            {
              "field": "Embedded and edge",
              "percentage": 40
            },
            {
              "field": "Site reliability",
              "percentage": 30
            },
            {
              "field": "Privacy engineering",
              "percentage": 30
            }
          ],
          "patterns": []
        }
      ]
    }
  ]
}
