{"record":{"id":"dba5e8be965a8a86","repo":"deepseek-ai/deepseek-harness","slug":"goal-invalid-block-reason","errorCode":"GOAL_INVALID_BLOCK_REASON","errorMessage":"goal block reason requires a lower-kebab-case code and a non-empty message","messagePattern":"goal block reason requires a lower-kebab-case code and a non-empty message","errorType":"exception","errorClass":"GoalError","httpStatus":null,"severity":"error","filePath":"packages/goal/goal/src/index.ts","lineNumber":174,"sourceCode":"\n/** Materialize deployment defaults and validate one create request. */\nfunction resolveCreateGoal(request: CreateGoalRequest, defaultMaxGoalRounds: number): ResolvedCreateGoal {\n  return {\n    objective: resolveObjective(request.objective),\n    maxGoalRounds: resolveMaxGoalRounds(request.maxGoalRounds ?? defaultMaxGoalRounds),\n  }\n}\n\n/** Validate and detach one policy-owned blocker explanation. */\nfunction resolveBlockReason(reason: unknown): GoalBlockReason {\n  const record = typeof reason === 'object' && reason !== null && !Array.isArray(reason)\n    ? reason as Record<string, unknown>\n    : undefined\n  const code = record?.['code']\n  const message = record?.['message']\n  if (typeof code !== 'string' || !/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/.test(code)\n    || typeof message !== 'string' || message.trim().length === 0) {\n    throw new GoalError(\n      'goal block reason requires a lower-kebab-case code and a non-empty message',\n      'GOAL_INVALID_BLOCK_REASON',\n    )\n  }\n  return { code, message: message.trim() }\n}\n\n/** Goal service (`ctx.goals`) backed exclusively by the owning session log. */\nexport class GoalService extends TypertRemoteService {\n  static inject = ['agents']\n\n  static Config: z<Config> = z.object({\n    defaultMaxGoalRounds: z.number().default(256),\n  })\n\n  private readonly resolved: ResolvedConfig\n  private readonly caches = new WeakMap<Session, GoalCache>()\n","sourceCodeStart":156,"sourceCodeEnd":192,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/goal/goal/src/index.ts#L156-L192","documentation":"Error \"goal block reason requires a lower-kebab-case code and a non-empty message\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/goal/goal/src/index.ts:174 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"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"}