{
  "product": "Specification (reference)",
  "title": "Task Scheduler (in-process)",
  "summary": "Run work concurrently with bounded resources and predictable ordering.",
  "category": "engines",
  "entries": [
    {
      "path": [
        "AI",
        "Submission",
        "Submit a unit of work and receive a handle"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Submission",
        "Priorities honoured across queued work"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Submission",
        "Cancellation propagated to running work"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Concurrency",
        "Bounded worker pool with a stated sizing rule"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Concurrency",
        "Backpressure when the queue is full"
      ],
      "value": "",
      "status": "yes",
      "note": "reject or block — stated, not unbounded growth"
    },
    {
      "path": [
        "AI",
        "Concurrency",
        "Fairness so one producer cannot starve others"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Ordering",
        "FIFO within a priority band"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Ordering",
        "Serial execution per key when required"
      ],
      "value": "",
      "status": "yes",
      "note": "ordering guarantees per entity"
    },
    {
      "path": [
        "AI",
        "Failure",
        "Exceptions surfaced on the handle, not swallowed"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Failure",
        "Retry policy separate from the work itself"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Failure",
        "A panicking task does not kill the pool"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Lifecycle",
        "Graceful shutdown drains in-flight work"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Lifecycle",
        "Hard shutdown with a deadline"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Observability",
        "Queue depth, in-flight count and latency"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Observability",
        "Slow-task detection"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Correctness",
        "No deadlock when tasks submit tasks"
      ],
      "value": "",
      "status": "yes",
      "note": "the classic pool deadlock"
    }
  ]
}
