{"record":{"id":"28eeb60e5d9af449","repo":"deepseek-ai/deepseek-harness","slug":"ralph-round-report-exceeds-maxhandoffchars-seri","errorCode":null,"errorMessage":"Ralph round report exceeds maxHandoffChars (${serialized.length} > ${args.maxHandoffChars})","messagePattern":"Ralph round report exceeds maxHandoffChars \\((.+?) > (.+?)\\)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/workflow/tool-ralph/src/index.ts","lineNumber":146,"sourceCode":"        throw new Error('a continuing Ralph report needs nextSteps and an empty blocker')\n      }\n      break\n    case 'complete':\n      if (report.evidence.length === 0 || report.nextSteps.length !== 0 || report.blocker !== '') {\n        throw new Error('a complete Ralph report needs evidence, no nextSteps, and an empty blocker')\n      }\n      break\n    case 'blocked':\n      if (!normalizedText(report.blocker)) {\n        throw new Error('a blocked Ralph report needs a concrete blocker')\n      }\n      break\n    default:\n      throw new Error('Ralph round report status is invalid')\n  }\n  const serialized = JSON.stringify(report)\n  if (serialized.length > args.maxHandoffChars) {\n    throw new Error('Ralph round report exceeds maxHandoffChars (' + serialized.length + ' > ' + args.maxHandoffChars + ')')\n  }\n  return report\n}\n\nlet previous\nphase('Fresh-agent rounds')\nfor (let round = 1; round <= args.maxRounds; round += 1) {\n  const prior = previous === undefined ? '(none — this is the first round)' : JSON.stringify(previous)\n  const prompt = [\n    'You are one fresh worker in a foreground Ralph loop. You receive no parent conversation and no prior child session. Do not call the ralph tool: this round already is its worker.',\n    'Immutable objective:\\n' + args.objective,\n    'Ralph round: ' + round + ' of ' + args.maxRounds + '.',\n    'The shared workspace and its current working tree are the long-term memory and source of truth. Inspect them before acting, preserve existing work, perform concrete in-scope work, and verify what you change. Treat the previous report only as a bounded handoff; confirm it against the workspace.',\n    'Previous structured handoff:\\n' + prior,\n    'Return one report with exact normalized strings. Use status continue with at least one nextSteps entry while useful work remains; complete only with concrete evidence and no nextSteps; blocked only when no meaningful progress is possible without human input or an external-state change. blocker must be empty unless blocked.',\n  ].join('\\n\\n')\n  const rawReport = await agent(prompt, {\n    label: 'Ralph round ' + round,","sourceCodeStart":128,"sourceCodeEnd":164,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/workflow/tool-ralph/src/index.ts#L128-L164","documentation":"Error \"Ralph round report exceeds maxHandoffChars (${serialized.length} > ${args.maxHandoffChars})\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/workflow/tool-ralph/src/index.ts:146 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Shorten the round report below maxHandoffChars, or raise maxHandoffChars in the Ralph tool configuration if larger handoffs are intended."],"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"}