{"record":{"id":"65cd88587c7ce0f6","repo":"deepseek-ai/deepseek-harness","slug":"wait-aborted","errorCode":null,"errorMessage":"wait aborted","messagePattern":"wait aborted","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/jobs/jobs-local/src/index.ts","lineNumber":237,"sourceCode":"      job.reported = true\n      return 'already-finished'\n    }\n    // Cancel first so a throw leaves both lifecycle and notice state unchanged.\n    job.cancel(reason)\n    job.status = 'stopping'\n    job.reported = true\n    this.notifyChanged(job.owner)\n    return 'requested'\n  }\n\n  async wait(id: JobId, timeoutMs: number, caller?: Agent, signal?: AbortSignal): Promise<JobSnapshot> {\n    const job = this.expect(id)\n    this.assertAccess(job, caller)\n    if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {\n      throw new Error(`invalid wait timeout: expected a positive number of milliseconds, got ${JSON.stringify(timeoutMs)}`)\n    }\n    if (!isTerminal(job.status)) {\n      if (signal?.aborted) throw new Error('wait aborted')\n      // Abort removes the waiter synchronously so same-tick settlement cannot\n      // suppress a notice for a wait that will reject.\n      job.waiters += 1\n      let counted = true\n      const uncount = (): void => {\n        if (!counted) return\n        counted = false\n        job.waiters -= 1\n      }\n      try {\n        // The scoped deadline distinguishes a successful wait timeout from\n        // caller cancellation and clears its timer on every exit.\n        using d = deadline(signal, timeoutMs, TASK_WAIT_TIMEOUT)\n        await new Promise<void>((resolve, reject) => {\n          const onSettled = (): void => {\n            job.waitResolvers.delete(onSettled)\n            d.signal.removeEventListener('abort', onAbort)\n            resolve()","sourceCodeStart":219,"sourceCodeEnd":255,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/jobs/jobs-local/src/index.ts#L219-L255","documentation":"Error \"wait aborted\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/jobs/jobs-local/src/index.ts:237 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry the wait; avoid aborting the turn while waiting on a job."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b150a551b8d465e31e418e1b2eaf5e79bbb7d28e","analyzedAt":"2026-08-24T18:12:29.105Z","schemaVersion":2},"datasetVersion":"2026-08-24T22:17:12.610Z"}