{"record":{"id":"b62e03d7c9b51ba5","repo":"deepseek-ai/deepseek-harness","slug":"settings-verb-for-ns-must-contain-only-jso-b62e03","errorCode":null,"errorMessage":"settings ${verb} for \"${ns}\" must contain only JSON-compatible data (found ${label} at ${path})","messagePattern":"settings (.+?) for \"(.+?)\" must contain only JSON-compatible data \\(found (.+?) at (.+?)\\)","errorType":"validation","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"packages/settings/settings/src/index.ts","lineNumber":285,"sourceCode":"      const entries = value.map((entry, index) => clone(entry, `${path}[${index}]`))\n      // Un-mark on exit so one object referenced twice without a cycle passes.\n      visiting.delete(value)\n      return entries\n    }\n    if (isPlainObject(value)) {\n      if (visiting.has(value)) throw reject('a circular reference', path)\n      visiting.add(value)\n      // TODO(settings-json-properties): Use property-safe construction here and\n      // in mergeLayers so valid JSON keys such as \"__proto__\" remain own data.\n      const out: Record<string, unknown> = {}\n      for (const [key, entry] of Object.entries(value)) {\n        if (entry === undefined) continue\n        out[key] = clone(entry, `${path}.${key}`)\n      }\n      visiting.delete(value)\n      return out\n    }\n    throw reject(describeRejected(value), path)\n  }\n  return clone(root, '$') as Record<string, unknown>\n}\n\n/**\n * Layer `over` onto `under`: plain objects merge recursively, every other\n * value (arrays included) replaces the lower layer wholesale. `over` never\n * carries `undefined` entries — sections come from parsed documents and write\n * snapshots pass {@link cloneJsonShaped}, which strips them so a sparse patch\n * cannot erase lower keys.\n */\nfunction mergeLayers(under: unknown, over: unknown): unknown {\n  if (over === undefined) return under\n  if (!isPlainObject(under) || !isPlainObject(over)) return over\n  const merged: Record<string, unknown> = { ...under }\n  for (const [key, value] of Object.entries(over)) {\n    merged[key] = key in merged ? mergeLayers(merged[key], value) : value\n  }","sourceCodeStart":267,"sourceCodeEnd":303,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/settings/settings/src/index.ts#L267-L303","documentation":"Error \"settings ${verb} for \"${ns}\" must contain only JSON-compatible data (found ${label} at ${path})\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/settings/settings/src/index.ts:285 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Convert the value at the reported path to JSON-compatible data before writing settings."],"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"}