{"record":{"id":"897ed8625b805744","repo":"deepseek-ai/deepseek-harness","slug":"sandbox-local-runnerfailuresignatures-entries-mus","errorCode":null,"errorMessage":"sandbox-local: runnerFailureSignatures entries must be non-empty single-line strings","messagePattern":"sandbox-local: runnerFailureSignatures entries must be non-empty single-line strings","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/sandbox/sandbox-local/src/index.ts","lineNumber":290,"sourceCode":"   */\n  private readonly workspaceGrants = new Map<string, AclWriteGrant>()\n  private readonly tempCapabilities = new Map<string, AclTempCapability>()\n\n  constructor(ctx: Context, config: Config) {\n    super(ctx)\n    // The schema (static Config) defaults every field — the casts record\n    // those runtime facts. An empty runnerCommand means \"not configured\":\n    // use the platform chain.\n    const runner = config.runnerCommand as string[]\n    const runnerFailureSignatures = config.runnerFailureSignatures as string[]\n    if (runner.length === 0 && runnerFailureSignatures.length > 0) {\n      throw new Error('sandbox-local: runnerFailureSignatures requires runnerCommand')\n    }\n    if (runner.length > 0 && runnerFailureSignatures.length === 0) {\n      throw new Error('sandbox-local: runnerCommand requires at least one runnerFailureSignatures entry')\n    }\n    if (runnerFailureSignatures.some(signature => signature.trim().length === 0 || /[\\r\\n]/u.test(signature))) {\n      throw new Error('sandbox-local: runnerFailureSignatures entries must be non-empty single-line strings')\n    }\n    this.runnerCommand = runner.length > 0 ? runner : undefined\n    this.configuredRunnerFailureSignatures = runnerFailureSignatures\n    this.probeTimeoutMs = config.probeTimeoutMs as number\n    assertPositiveFinite('probeTimeoutMs', this.probeTimeoutMs)\n    // The temp grants are revoked with the provider: a clean server\n    // shutdown leaves no temp ACEs behind (workspace ACEs stand by design —\n    // the reuse cache; an unclean shutdown leaves them for the next\n    // provision's exact-ACE skip).\n    ctx.effect(() => () => {\n      this.revokeAclGrants()\n    })\n  }\n\n  /**\n   * Wrap `argv` in the selected runner's invocation for `policy` — the configured\n   * `runnerCommand` when present (the operator's assertion, no probe), else the platform\n   * chain's runner speaking its own profile dialect.","sourceCodeStart":272,"sourceCodeEnd":308,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/sandbox/sandbox-local/src/index.ts#L272-L308","documentation":"Error \"sandbox-local: runnerFailureSignatures entries must be non-empty single-line strings\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/sandbox/sandbox-local/src/index.ts:290 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Make each runnerFailureSignatures entry a non-empty single-line string."],"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"}