{"record":{"id":"e4d004146ce574b4","repo":"deepseek-ai/deepseek-harness","slug":"goal-change-field-must-be-a-non-negative-safe-i","errorCode":null,"errorMessage":"goal change ${field} must be a non-negative safe integer","messagePattern":"goal change (.+?) must be a non-negative safe integer","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/goal/goal/src/fold.ts","lineNumber":67,"sourceCode":"}\n\n/** Whether a value is a JSON record rather than an array. */\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n  return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\n/** Require one positive safe integer. */\nfunction positiveInteger(value: unknown, field: string): number {\n  if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 1) {\n    throw new Error(`goal change ${field} must be a positive safe integer`)\n  }\n  return value\n}\n\n/** Require one non-negative safe integer. */\nfunction nonNegativeInteger(value: unknown, field: string): number {\n  if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0) {\n    throw new Error(`goal change ${field} must be a non-negative safe integer`)\n  }\n  return value\n}\n\n/** Decode one canonical blocker explanation. */\nfunction decodeBlockReason(value: unknown): GoalBlockReason {\n  if (!isRecord(value) || Object.keys(value).sort().join(',') !== 'code,message') {\n    throw new Error('goal change goal.blockedReason must have exactly code and message fields')\n  }\n  if (typeof value['code'] !== 'string' || !/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/.test(value['code'])) {\n    throw new Error('goal change goal.blockedReason.code must be lower-kebab-case')\n  }\n  if (typeof value['message'] !== 'string' || value['message'].trim().length === 0\n    || value['message'] !== value['message'].trim()) {\n    throw new Error('goal change goal.blockedReason.message must be non-empty and normalized')\n  }\n  return { code: value['code'], message: value['message'] }\n}","sourceCodeStart":49,"sourceCodeEnd":85,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/goal/goal/src/fold.ts#L49-L85","documentation":"Error \"goal change ${field} must be a non-negative safe integer\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/goal/goal/src/fold.ts:67 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"}