Revision history for JobQueue

0.1.2  2026-10-05T10:53:36+01:00
    - Retain a bounded FIFO cache of terminal dependency outcomes in
      JobQueue::Coordinator. Late hard/soft dependents submitted after
      a predecessor Job object is pruned now resolve the predecessor's
      done, failure, cancelled or superseded outcome instead of treating
      it as unknown; evicted hard/soft dependencies keep the existing
      unknown-dependency behavior.
    - Record each Job's last dependency-readiness decision as compact
      scalar metadata exposed through dependency-state and included in
      queue snapshots, so observers can explain blocked, doomed and
      released jobs without re-running scheduler logic or retaining
      dependency result bodies.
    - Add Queue.physical-job-ids for an atomic pending+running id
      snapshot that includes cancelled or superseded runners until
      their physical drain completes.

0.1.1  2026-08-21T21:30:35+01:00
    - Make dedup lookup plus pending insertion one atomic queue transition.
      Concurrent producers of one live key now all receive the same job;
      the key is reusable once that job becomes terminal.

0.1.0  2026-08-10T19:52:26+01:00
    - Initial release
    - JobQueue::Job role: atomic terminal transitions (finish /
      request-cancel / begin-running), cancel + completion Promises,
      dedup keys, lanes, priorities, hard/soft dependency edges, and
      the keep-once atomic Promise settler
    - JobQueue::Queue: per-resource serial/parallel queue with
      re-evaluated parallelism policy, max-concurrent cap, lane
      serialisation, priority dispatch, live-job dedup, deferred
      cancel terminals and an optional store event sink
    - JobQueue::Coordinator: named-queue registry plus a cross-queue
      dependency DAG with hold/release, dep-result injection and
      transitive supersede cascades over hard edges
    - JobQueue::FailedRegistry: capped, insertion-ordered registry of
      failed/cancelled jobs with atomic claim-for-retry
    - Injectable log + tracer (null objects by default) and an
      EventSink documentation role
    - JobQueue::Job's role and keep-once sub are package-scoped as
      well as exported, so a host application can wrap the role in
      its own facade module (need + fully-qualified name) and
      re-export both without a name clash
