{"record":{"id":"e50d7f241e3dc2c3","repo":"JuliusBrussee/caveman","slug":"bold-protected-model-protected","errorCode":null,"errorMessage":"${bold(\"Protected\")}  ${model.protected}","messagePattern":"\\$\\{bold\\(\"Protected\"\\)\\}  \\$\\{model\\.protected\\}","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/cli/src/learn-tui.ts","lineNumber":120,"sourceCode":"export async function renderLearnTui(model: LearnTuiModel): Promise<LearnTuiResult> {\n  p.intro(`${green(bold(\" CAVEMAN \"))} ${dim(\"LEARN / LOCAL SETUP\")}`);\n\n  if (model.score !== null) {\n    p.note(learnScoreBody(model), \"SETUP SCORE\");\n  } else {\n    p.note(learnScoreBody(model), \"LEARN RESULT\");\n  }\n\n  if (model.moves.length > 0) {\n    const moves = model.moves.map((move, index) => {\n      const number = dim(String(index + 1).padStart(2, \"0\"));\n      return `${number}  ${learnMoveBody(move)}`;\n    });\n    p.note(moves.join(\"\\n\\n\"), \"TOP MOVES\");\n  }\n\n  if (model.protected) {\n    p.log.warn(`${bold(\"Protected\")}  ${model.protected}`);\n  }\n\n  const options: Array<{ value: LearnTuiAction; label: string; hint?: string }> = [];\n  if (model.moves.length > 0) {\n    options.push({\n      value: \"implement\",\n      label: \"Implement with agent\",\n      hint: \"Claude Code or Codex · approval before edits\",\n    });\n  }\n  if (model.findings > 0) {\n    options.push({\n      value: \"details\",\n      label: `Show all ${model.findings} findings`,\n      hint: \"full ids, evidence, and suggestions\",\n    });\n  }\n  options.push(","sourceCodeStart":102,"sourceCodeEnd":138,"githubUrl":"https://github.com/JuliusBrussee/caveman/blob/2f49f0e1a352aa810e70056b7930aeb0b3d219b4/packages/cli/src/learn-tui.ts#L102-L138","documentation":"renderLearnTui renders a line marking the model/setup as protected. This is not a thrown error but display text shown in the TUI when model.protected is true; documentation-wise it surfaces protected status, not a failure.","triggerScenarios":"Thrown at packages/cli/src/learn-tui.ts:109 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["No fix required — this is informational UI","If the warning is unexpected, inspect why the learn model reports the run as protected","Extend the model's protected field only through the learn pipeline that computes it"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2f49f0e1a352aa810e70056b7930aeb0b3d219b4","analyzedAt":"2026-08-18T03:14:35.516Z","contentChangedAt":"2026-08-18T03:14:35.516Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}