{"date":"2026-09-22","from":{"k":"unit","s":"tasks","n":"store > fetchManifest() > treats a listing that says nothing about a creation time as absent"},"to":{"k":"unit","s":"tasks","n":"store > fetchManifest() > marks a listing that says nothing about a creation time as unreachable"}} {"date":"2026-09-22","from":{"k":"unit","s":"tasks","n":"store > fetchManifest() > treats a listing that gives an empty creation time as absent"},"to":{"k":"unit","s":"tasks","n":"store > fetchManifest() > marks a listing that gives an empty creation time as unreachable"}} {"date":"2026-09-22","from":{"k":"unit","s":"tasks","n":"store > fetchManifest() > treats a listing that gives an unparseable creation time as absent"},"to":{"k":"unit","s":"tasks","n":"store > fetchManifest() > marks a listing that gives an unparseable creation time as unreachable"}} {"date":"2026-09-22","from":{"k":"unit","s":"tasks","n":"store > fetchManifest() > treats an unreachable store as absent"},"to":{"k":"unit","s":"tasks","n":"store > fetchManifest() > marks a store whose listing threw as unreachable"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > claimNext() > starts the oldest queued job, and returns `undefined` with none left"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > claimNext() > starts the oldest queued job, and returns `undefined` with none left"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > enqueue() > adds a queued job with its first event"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > enqueue() > adds a queued job with its first event"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > enqueue() > compares nested JSON values independently of object key order but preserves array order"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > enqueue() > compares nested JSON values independently of object key order but preserves array order"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > enqueue() > compares the JSON-normalized request and retries a stored sorted row after reopening"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > enqueue() > compares the JSON-normalized request and retries a stored sorted row after reopening"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > enqueue() > keeps one caller's keys apart from another's"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > enqueue() > keeps one caller's keys apart from another's"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > enqueue() > returns a conflict, adding nothing, for a key resent with a different request or profile"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > enqueue() > returns a conflict, adding nothing, for a key resent with a different request or profile"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > enqueue() > returns the existing job for a key resent with the same request, whatever its key order"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > enqueue() > returns the existing job for a key resent with the same request, whatever its key order"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > finish() > ends a job asked to stop `cancelled`, whatever its run reported"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > finish() > ends a job asked to stop `cancelled`, whatever its run reported"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > finish() > ends a running job `completed` with its result and report"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > finish() > ends a running job `completed` with its result and report"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > finish() > ends a running job `failed` with its error code"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > finish() > ends a running job `failed` with its error code"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > finish() > returns `undefined` for a job that is not running"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > finish() > returns `undefined` for a job that is not running"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > finish() > stores a completed job's missing result as `null`, and a failure without a code as none"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > finish() > stores a completed job's missing result as `null`, and a failure without a code as none"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > open() > keeps jobs across a reopen of the same file"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > open() > keeps jobs across a reopen of the same file"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > open() > keeps refused command details in events and the job snapshot across a reopen"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > open() > keeps refused command details in events and the job snapshot across a reopen"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > open() > throws for a file that is not a database"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > open() > throws for a file that is not a database"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > reading > lists the newest jobs first, at most `limit`"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > reading > lists the newest jobs first, at most `limit`"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > reading > returns `undefined` for a job it does not hold"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > reading > returns `undefined` for a job it does not hold"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > reading > returns the events after a `seq`"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > reading > returns the events after a `seq`"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > recover() > ends every running job `interrupted` and leaves queued ones to start"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > recover() > ends every running job `interrupted` and leaves queued ones to start"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > report() > appends a running job's steps and commands to its view"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > report() > appends a running job's steps and commands to its view"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > report() > appends nothing for a job that is not running"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > report() > appends nothing for a job that is not running"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > requestCancel() > ends a queued job `cancelled` at once"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > requestCancel() > ends a queued job `cancelled` at once"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > requestCancel() > leaves an ended job as it is, and returns `undefined` for an unknown one"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > requestCancel() > leaves an ended job as it is, and returns `undefined` for an unknown one"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > requestCancel() > marks a running job, once, and leaves it to end when its run stops"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > requestCancel() > marks a running job, once, and leaves it to end when its run stops"}} {"date":"2026-10-05","from":{"k":"unit","s":"cli","n":"local-jobs/store > subscribe() > tells a listener of each committed event until it stops"},"to":{"k":"unit","s":"agent-runner","n":"local-jobs/store > subscribe() > tells a listener of each committed event until it stops"}}