{"record":{"id":"c6124f3c9fab1272","repo":"deepseek-ai/deepseek-harness","slug":"subagent-acp-this-name-child-run-failed-s","errorCode":null,"errorMessage":"subagent-acp \"${this.name}\": child run failed (${stopReason}): ${error.message}","messagePattern":"subagent-acp \"(.+?)\": child run failed \\((.+?)\\): (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/subagent/subagent-acp/src/index.ts","lineNumber":166,"sourceCode":"  // Context contract: an out-of-process ACP child starts fresh — no parent conversation crosses the process boundary.\n  readonly inheritsParentContext = false\n\n  constructor(readonly name: string, private readonly ctx: Context, private readonly config: ResolvedConfig) {}\n\n  start(request: ResolvedSubagentStartRequest) {\n    const spec: AcpRunSpec = {\n      command: this.config.command,\n      args: this.config.args,\n      cwd: resolveCwd(this.config.cwd, request),\n      permission: this.config.permission,\n      env: this.config.env,\n      disposeEofGraceMs: this.config.disposeEofGraceMs,\n      disposeGraceMs: this.config.disposeGraceMs,\n      spawn: spec => this.ctx.subprocess.spawn(spec),\n      onError: (error, stopReason) => {\n        // The seam forbids `result` rejecting, so a child-level failure is\n        // flattened to a stop reason — preserve it here rather than losing it.\n        this.ctx.logger.warn(`subagent-acp \"${this.name}\": child run failed (${stopReason}): ${error.message}`)\n      },\n    }\n    return startAcpRun(request, spec)\n  }\n}\n\nexport function apply(ctx: Context, config: Config): void {\n  // schemastery (Config) has already filled every defaulted field.\n  const resolved = config as ResolvedConfig\n  assertPositiveFinite('disposeEofGraceMs', resolved.disposeEofGraceMs)\n  assertPositiveFinite('disposeGraceMs', resolved.disposeGraceMs)\n  // `path.resolve('')` is the process cwd — an empty string would silently\n  // reintroduce the launch-directory fallback this resolution removed.\n  if (resolved.cwd === '') {\n    throw new Error('subagent-acp: config cwd must not be empty — omit the key to inherit the parent session cwd')\n  }\n  // Interpret a relative configured cwd against the harness launch directory\n  // ONCE, at load, and fail a misconfigured directory here — not per start.","sourceCodeStart":148,"sourceCodeEnd":184,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/subagent/subagent-acp/src/index.ts#L148-L184","documentation":"Error \"subagent-acp \"${this.name}\": child run failed (${stopReason}): ${error.message}\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/subagent/subagent-acp/src/index.ts:166 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect the child ACP agent logs for the stopReason and underlying error; fix the child failure and restart the subagent."],"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"}