{"record":{"id":"a09e36a24aef71c7","repo":"deepseek-ai/deepseek-harness","slug":"background-job-limit-reached-for-this-owner-limit","errorCode":null,"errorMessage":"background job limit reached for this owner (limit: ${this.maxConcurrentJobsPerOwner}); use job_kill to stop an unneeded job, wait for it to finish, then retry","messagePattern":"background job limit reached for this owner \\(limit: (.+?)\\); use job_kill to stop an unneeded job, wait for it to finish, then retry","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/jobs/jobs-local/src/index.ts","lineNumber":145,"sourceCode":"    this.selfCtx = ctx\n    ctx.effect(() => () => this.disposeAll(), 'jobs teardown')\n  }\n\n  start(spec: JobStart): JobId {\n    if (!this.servesOwner(spec.owner)) {\n      throw new Error('background jobs unavailable: no job controller serves this agent (load @deepseek-ai/dsh-tool-jobs in its composition)')\n    }\n    if (spec.kind.length === 0) throw new Error('invalid job kind: expected a non-empty string')\n    if (spec.label.length === 0) throw new Error('invalid job label: expected a non-empty string')\n    if (spec.outputLimitBytes !== undefined\n      && (!Number.isSafeInteger(spec.outputLimitBytes) || spec.outputLimitBytes <= 0)) {\n      throw new Error(`invalid outputLimitBytes: expected a positive safe integer, got ${JSON.stringify(spec.outputLimitBytes)}`)\n    }\n    if (spec.owner !== undefined) this.ensureOwnerCleanup(spec.owner)\n\n    const active = this.activeTaskCount(spec.owner)\n    if (active >= this.maxConcurrentJobsPerOwner) {\n      throw new Error(\n        `background job limit reached for this owner (limit: ${this.maxConcurrentJobsPerOwner}); use job_kill to stop an unneeded job, wait for it to finish, then retry`,\n      )\n    }\n\n    const hooks = spec.run()\n    const count = (this.counters.get(spec.kind) ?? 0) + 1\n    this.counters.set(spec.kind, count)\n    const id = JobId(`${spec.kind}-${count}`)\n\n    let markSettled!: () => void\n    const settled = new Promise<void>((resolve) => { markSettled = resolve })\n    const job: TrackedTask = {\n      id,\n      kind: spec.kind,\n      label: spec.label,\n      outputLimitBytes: spec.outputLimitBytes,\n      owner: spec.owner,\n      cancel: hooks.cancel.bind(hooks),","sourceCodeStart":127,"sourceCodeEnd":163,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/jobs/jobs-local/src/index.ts#L127-L163","documentation":"Error \"background job limit reached for this owner (limit: ${this.maxConcurrentJobsPerOwner}); use job_kill to stop an unneeded job, wait for it to finish, then retry\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/jobs/jobs-local/src/index.ts:145 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Stop an unneeded job with job_kill or wait for a running job to finish, then retry."],"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"}