[
  {
    "title": "High fan-in symbol: extensions/pi-brain.extractSimpleYamlValue (16 dependents)",
    "source": "god-class",
    "description": "\"extensions/pi-brain.extractSimpleYamlValue\" is depended upon by 16 other symbols — well above the repo average. High fan-in concentrates change risk: edits here ripple across many call sites, and it often indicates a missing or overly broad abstraction.",
    "confidence": 1,
    "evidence": [
      {
        "file": "extensions/pi-brain/utils.ts",
        "symbol": "extensions/pi-brain.extractSimpleYamlValue",
        "detail": "16 symbols depend on this"
      },
      {
        "symbol": "extensions/pi-brain.countPagesByKind",
        "detail": "depends on extensions/pi-brain.extractSimpleYamlValue"
      },
      {
        "symbol": "extensions/pi-brain.loadActiveConstraints",
        "detail": "depends on extensions/pi-brain.extractSimpleYamlValue"
      },
      {
        "symbol": "extensions/pi-brain.loadBrainAgent",
        "detail": "depends on extensions/pi-brain.extractSimpleYamlValue"
      },
      {
        "symbol": "extensions/pi-brain.readAutoConnect",
        "detail": "depends on extensions/pi-brain.extractSimpleYamlValue"
      },
      {
        "symbol": "extensions/pi-brain.readAutonomyTrust",
        "detail": "depends on extensions/pi-brain.extractSimpleYamlValue"
      },
      {
        "symbol": "extensions/pi-brain.readContextInjectionConfig",
        "detail": "depends on extensions/pi-brain.extractSimpleYamlValue"
      },
      {
        "symbol": "extensions/pi-brain.readEnolaConfig",
        "detail": "depends on extensions/pi-brain.extractSimpleYamlValue"
      },
      {
        "symbol": "extensions/pi-brain.readEventBusConfig",
        "detail": "depends on extensions/pi-brain.extractSimpleYamlValue"
      }
    ],
    "suggested_actions": [
      "Split the symbol along distinct responsibilities its callers use",
      "Introduce narrower interfaces so callers depend only on what they need",
      "Stabilize its public contract to limit churn for dependents"
    ]
  },
  {
    "title": "High fan-in symbol: extensions/pi-brain.readEnolaConfig (11 dependents)",
    "source": "god-class",
    "description": "\"extensions/pi-brain.readEnolaConfig\" is depended upon by 11 other symbols — well above the repo average. High fan-in concentrates change risk: edits here ripple across many call sites, and it often indicates a missing or overly broad abstraction.",
    "confidence": 0.972409075822799,
    "evidence": [
      {
        "file": "extensions/pi-brain/brain-home.ts",
        "symbol": "extensions/pi-brain.readEnolaConfig",
        "detail": "11 symbols depend on this"
      },
      {
        "symbol": "extensions/pi-brain.captureEnolaRegressions",
        "detail": "depends on extensions/pi-brain.readEnolaConfig"
      },
      {
        "symbol": "extensions/pi-brain.enolaGateCheck",
        "detail": "depends on extensions/pi-brain.readEnolaConfig"
      },
      {
        "symbol": "extensions/pi-brain.registerBuild",
        "detail": "depends on extensions/pi-brain.readEnolaConfig"
      },
      {
        "symbol": "extensions/pi-brain.registerEnolaCommands",
        "detail": "depends on extensions/pi-brain.readEnolaConfig"
      },
      {
        "symbol": "extensions/pi-brain.registerSyncCode",
        "detail": "depends on extensions/pi-brain.readEnolaConfig"
      },
      {
        "symbol": "extensions/pi-brain.runEnolaBaseline",
        "detail": "depends on extensions/pi-brain.readEnolaConfig"
      },
      {
        "symbol": "extensions/pi-brain.runEnolaCheck",
        "detail": "depends on extensions/pi-brain.readEnolaConfig"
      },
      {
        "symbol": "extensions/pi-brain.runEnolaDiff",
        "detail": "depends on extensions/pi-brain.readEnolaConfig"
      }
    ],
    "suggested_actions": [
      "Split the symbol along distinct responsibilities its callers use",
      "Introduce narrower interfaces so callers depend only on what they need",
      "Stabilize its public contract to limit churn for dependents"
    ]
  },
  {
    "title": "High fan-in symbol: extensions/pi-brain.requireBrain (11 dependents)",
    "source": "god-class",
    "description": "\"extensions/pi-brain.requireBrain\" is depended upon by 11 other symbols — well above the repo average. High fan-in concentrates change risk: edits here ripple across many call sites, and it often indicates a missing or overly broad abstraction.",
    "confidence": 0.972409075822799,
    "evidence": [
      {
        "file": "extensions/pi-brain/context.ts",
        "symbol": "extensions/pi-brain.requireBrain",
        "detail": "11 symbols depend on this"
      },
      {
        "symbol": "extensions/pi-brain.loadBriefing",
        "detail": "depends on extensions/pi-brain.requireBrain"
      },
      {
        "symbol": "extensions/pi-brain.registerBuild",
        "detail": "depends on extensions/pi-brain.requireBrain"
      },
      {
        "symbol": "extensions/pi-brain.registerCommands",
        "detail": "depends on extensions/pi-brain.requireBrain"
      },
      {
        "symbol": "extensions/pi-brain.registerDiff",
        "detail": "depends on extensions/pi-brain.requireBrain"
      },
      {
        "symbol": "extensions/pi-brain.registerEnolaCommands",
        "detail": "depends on extensions/pi-brain.requireBrain"
      },
      {
        "symbol": "extensions/pi-brain.registerHooks",
        "detail": "depends on extensions/pi-brain.requireBrain"
      },
      {
        "symbol": "extensions/pi-brain.registerRevise",
        "detail": "depends on extensions/pi-brain.requireBrain"
      },
      {
        "symbol": "extensions/pi-brain.registerRfcContribute",
        "detail": "depends on extensions/pi-brain.requireBrain"
      }
    ],
    "suggested_actions": [
      "Split the symbol along distinct responsibilities its callers use",
      "Introduce narrower interfaces so callers depend only on what they need",
      "Stabilize its public contract to limit churn for dependents"
    ]
  },
  {
    "title": "High fan-in symbol: extensions/pi-brain.pathExists (10 dependents)",
    "source": "god-class",
    "description": "\"extensions/pi-brain.pathExists\" is depended upon by 10 other symbols — well above the repo average. High fan-in concentrates change risk: edits here ripple across many call sites, and it often indicates a missing or overly broad abstraction.",
    "confidence": 0.8840082507479992,
    "evidence": [
      {
        "file": "extensions/pi-brain/utils.ts",
        "symbol": "extensions/pi-brain.pathExists",
        "detail": "10 symbols depend on this"
      },
      {
        "symbol": "extensions/pi-brain.diffTemplatePaths",
        "detail": "depends on extensions/pi-brain.pathExists"
      },
      {
        "symbol": "extensions/pi-brain.findBrainHome",
        "detail": "depends on extensions/pi-brain.pathExists"
      },
      {
        "symbol": "extensions/pi-brain.findRecentSources",
        "detail": "depends on extensions/pi-brain.pathExists"
      },
      {
        "symbol": "extensions/pi-brain.registerCommands",
        "detail": "depends on extensions/pi-brain.pathExists"
      },
      {
        "symbol": "extensions/pi-brain.registerHooks",
        "detail": "depends on extensions/pi-brain.pathExists"
      },
      {
        "symbol": "extensions/pi-brain.registerRevise",
        "detail": "depends on extensions/pi-brain.pathExists"
      },
      {
        "symbol": "extensions/pi-brain.registerRfcContribute",
        "detail": "depends on extensions/pi-brain.pathExists"
      },
      {
        "symbol": "extensions/pi-brain.registerTools",
        "detail": "depends on extensions/pi-brain.pathExists"
      }
    ],
    "suggested_actions": [
      "Split the symbol along distinct responsibilities its callers use",
      "Introduce narrower interfaces so callers depend only on what they need",
      "Stabilize its public contract to limit churn for dependents"
    ]
  },
  {
    "title": "High fan-in symbol: extensions/pi-brain.getMarkdownFiles (9 dependents)",
    "source": "god-class",
    "description": "\"extensions/pi-brain.getMarkdownFiles\" is depended upon by 9 other symbols — well above the repo average. High fan-in concentrates change risk: edits here ripple across many call sites, and it often indicates a missing or overly broad abstraction.",
    "confidence": 0.7956074256731992,
    "evidence": [
      {
        "file": "extensions/pi-brain/utils.ts",
        "symbol": "extensions/pi-brain.getMarkdownFiles",
        "detail": "9 symbols depend on this"
      },
      {
        "symbol": "extensions/pi-brain.collectBlocks",
        "detail": "depends on extensions/pi-brain.getMarkdownFiles"
      },
      {
        "symbol": "extensions/pi-brain.countPages",
        "detail": "depends on extensions/pi-brain.getMarkdownFiles"
      },
      {
        "symbol": "extensions/pi-brain.countPagesByKind",
        "detail": "depends on extensions/pi-brain.getMarkdownFiles"
      },
      {
        "symbol": "extensions/pi-brain.countSources",
        "detail": "depends on extensions/pi-brain.getMarkdownFiles"
      },
      {
        "symbol": "extensions/pi-brain.loadActiveConstraints",
        "detail": "depends on extensions/pi-brain.getMarkdownFiles"
      },
      {
        "symbol": "extensions/pi-brain.regenerateViews",
        "detail": "depends on extensions/pi-brain.getMarkdownFiles"
      },
      {
        "symbol": "extensions/pi-brain.runEnolaCitations",
        "detail": "depends on extensions/pi-brain.getMarkdownFiles"
      },
      {
        "symbol": "extensions/pi-brain.searchFiles",
        "detail": "depends on extensions/pi-brain.getMarkdownFiles"
      }
    ],
    "suggested_actions": [
      "Split the symbol along distinct responsibilities its callers use",
      "Introduce narrower interfaces so callers depend only on what they need",
      "Stabilize its public contract to limit churn for dependents"
    ]
  },
  {
    "title": "Call-graph hotspot: extensions/pi-brain.readEnolaConfig (fan-in 11, fan-out 6)",
    "source": "hotspots",
    "description": "\"extensions/pi-brain.readEnolaConfig\" is a pinch point: 11 symbols call into it and it calls out to 6 others, so a large share of call chains pass through it (degree-centrality proxy for betweenness). Such chokepoints are high-risk to change and high-value to test.",
    "confidence": 0.7,
    "evidence": [
      {
        "file": "extensions/pi-brain/brain-home.ts",
        "symbol": "extensions/pi-brain.readEnolaConfig",
        "detail": "fan-in 11 × fan-out 6 = score 66"
      },
      {
        "symbol": "extensions/pi-brain.captureEnolaRegressions",
        "detail": "calls into extensions/pi-brain.readEnolaConfig"
      },
      {
        "symbol": "extensions/pi-brain.enolaGateCheck",
        "detail": "calls into extensions/pi-brain.readEnolaConfig"
      },
      {
        "symbol": "extensions/pi-brain.registerBuild",
        "detail": "calls into extensions/pi-brain.readEnolaConfig"
      },
      {
        "symbol": "extensions/pi-brain.registerEnolaCommands",
        "detail": "calls into extensions/pi-brain.readEnolaConfig"
      },
      {
        "symbol": "extensions/pi-brain.registerSyncCode",
        "detail": "calls into extensions/pi-brain.readEnolaConfig"
      },
      {
        "symbol": "extensions/pi-brain",
        "detail": "called by extensions/pi-brain.readEnolaConfig"
      },
      {
        "symbol": "extensions/pi-brain.extractSimpleYamlValue",
        "detail": "called by extensions/pi-brain.readEnolaConfig"
      },
      {
        "symbol": "extensions/pi-brain.join",
        "detail": "called by extensions/pi-brain.readEnolaConfig"
      },
      {
        "symbol": "extensions/pi-brain.parseArgs",
        "detail": "called by extensions/pi-brain.readEnolaConfig"
      },
      {
        "symbol": "extensions/pi-brain.parseBoolean",
        "detail": "called by extensions/pi-brain.readEnolaConfig"
      }
    ],
    "suggested_actions": [
      "Add focused tests around this chokepoint before refactoring",
      "Consider decomposing it so call paths don't all funnel through one symbol",
      "Verify it isn't doing orchestration that belongs in callers"
    ]
  },
  {
    "title": "Call-graph hotspot: extensions/pi-brain.getMarkdownFiles (fan-in 9, fan-out 4)",
    "source": "hotspots",
    "description": "\"extensions/pi-brain.getMarkdownFiles\" is a pinch point: 9 symbols call into it and it calls out to 4 others, so a large share of call chains pass through it (degree-centrality proxy for betweenness). Such chokepoints are high-risk to change and high-value to test.",
    "confidence": 0.7,
    "evidence": [
      {
        "file": "extensions/pi-brain/utils.ts",
        "symbol": "extensions/pi-brain.getMarkdownFiles",
        "detail": "fan-in 9 × fan-out 4 = score 36"
      },
      {
        "symbol": "extensions/pi-brain.collectBlocks",
        "detail": "calls into extensions/pi-brain.getMarkdownFiles"
      },
      {
        "symbol": "extensions/pi-brain.countPages",
        "detail": "calls into extensions/pi-brain.getMarkdownFiles"
      },
      {
        "symbol": "extensions/pi-brain.countPagesByKind",
        "detail": "calls into extensions/pi-brain.getMarkdownFiles"
      },
      {
        "symbol": "extensions/pi-brain.countSources",
        "detail": "calls into extensions/pi-brain.getMarkdownFiles"
      },
      {
        "symbol": "extensions/pi-brain.loadActiveConstraints",
        "detail": "calls into extensions/pi-brain.getMarkdownFiles"
      },
      {
        "symbol": "extensions/pi-brain",
        "detail": "called by extensions/pi-brain.getMarkdownFiles"
      },
      {
        "symbol": "extensions/pi-brain.join",
        "detail": "called by extensions/pi-brain.getMarkdownFiles"
      },
      {
        "symbol": "extensions/pi-brain.readdir",
        "detail": "called by extensions/pi-brain.getMarkdownFiles"
      },
      {
        "symbol": "extensions/pi-brain.walk",
        "detail": "called by extensions/pi-brain.getMarkdownFiles"
      }
    ],
    "suggested_actions": [
      "Add focused tests around this chokepoint before refactoring",
      "Consider decomposing it so call paths don't all funnel through one symbol",
      "Verify it isn't doing orchestration that belongs in callers"
    ]
  },
  {
    "title": "Call-graph hotspot: extensions/pi-brain.searchFiles (fan-in 4, fan-out 7)",
    "source": "hotspots",
    "description": "\"extensions/pi-brain.searchFiles\" is a pinch point: 4 symbols call into it and it calls out to 7 others, so a large share of call chains pass through it (degree-centrality proxy for betweenness). Such chokepoints are high-risk to change and high-value to test.",
    "confidence": 0.7,
    "evidence": [
      {
        "file": "extensions/pi-brain/search.ts",
        "symbol": "extensions/pi-brain.searchFiles",
        "detail": "fan-in 4 × fan-out 7 = score 28"
      },
      {
        "symbol": "extensions/pi-brain.buildInjectedMessages",
        "detail": "calls into extensions/pi-brain.searchFiles"
      },
      {
        "symbol": "extensions/pi-brain.enrichToolResult",
        "detail": "calls into extensions/pi-brain.searchFiles"
      },
      {
        "symbol": "extensions/pi-brain.registerCommands",
        "detail": "calls into extensions/pi-brain.searchFiles"
      },
      {
        "symbol": "extensions/pi-brain.registerTools",
        "detail": "calls into extensions/pi-brain.searchFiles"
      },
      {
        "symbol": "extensions/pi-brain",
        "detail": "called by extensions/pi-brain.searchFiles"
      },
      {
        "symbol": "extensions/pi-brain.getMarkdownFiles",
        "detail": "called by extensions/pi-brain.searchFiles"
      },
      {
        "symbol": "extensions/pi-brain.join",
        "detail": "called by extensions/pi-brain.searchFiles"
      },
      {
        "symbol": "extensions/pi-brain.pathExists",
        "detail": "called by extensions/pi-brain.searchFiles"
      },
      {
        "symbol": "extensions/pi-brain.readFile",
        "detail": "called by extensions/pi-brain.searchFiles"
      }
    ],
    "suggested_actions": [
      "Add focused tests around this chokepoint before refactoring",
      "Consider decomposing it so call paths don't all funnel through one symbol",
      "Verify it isn't doing orchestration that belongs in callers"
    ]
  },
  {
    "title": "Call-graph hotspot: extensions/pi-brain.runAgent (fan-in 3, fan-out 8)",
    "source": "hotspots",
    "description": "\"extensions/pi-brain.runAgent\" is a pinch point: 3 symbols call into it and it calls out to 8 others, so a large share of call chains pass through it (degree-centrality proxy for betweenness). Such chokepoints are high-risk to change and high-value to test.",
    "confidence": 0.7,
    "evidence": [
      {
        "file": "extensions/pi-brain/collaboration.ts",
        "symbol": "extensions/pi-brain.runAgent",
        "detail": "fan-in 3 × fan-out 8 = score 24"
      },
      {
        "symbol": "extensions/pi-brain.registerRfcContribute",
        "detail": "calls into extensions/pi-brain.runAgent"
      },
      {
        "symbol": "extensions/pi-brain.runChain",
        "detail": "calls into extensions/pi-brain.runAgent"
      },
      {
        "symbol": "extensions/pi-brain.runParallel",
        "detail": "calls into extensions/pi-brain.runAgent"
      },
      {
        "symbol": "extensions/pi-brain",
        "detail": "called by extensions/pi-brain.runAgent"
      },
      {
        "symbol": "extensions/pi-brain.getPiInvocation",
        "detail": "called by extensions/pi-brain.runAgent"
      },
      {
        "symbol": "extensions/pi-brain.kill",
        "detail": "called by extensions/pi-brain.runAgent"
      },
      {
        "symbol": "extensions/pi-brain.processLine",
        "detail": "called by extensions/pi-brain.runAgent"
      },
      {
        "symbol": "extensions/pi-brain.resolve",
        "detail": "called by extensions/pi-brain.runAgent"
      }
    ],
    "suggested_actions": [
      "Add focused tests around this chokepoint before refactoring",
      "Consider decomposing it so call paths don't all funnel through one symbol",
      "Verify it isn't doing orchestration that belongs in callers"
    ]
  },
  {
    "title": "Call-graph hotspot: extensions/pi-brain.runEnolaBaseline (fan-in 4, fan-out 6)",
    "source": "hotspots",
    "description": "\"extensions/pi-brain.runEnolaBaseline\" is a pinch point: 4 symbols call into it and it calls out to 6 others, so a large share of call chains pass through it (degree-centrality proxy for betweenness). Such chokepoints are high-risk to change and high-value to test.",
    "confidence": 0.7,
    "evidence": [
      {
        "file": "extensions/pi-brain/enola.ts",
        "symbol": "extensions/pi-brain.runEnolaBaseline",
        "detail": "fan-in 4 × fan-out 6 = score 24"
      },
      {
        "symbol": "extensions/pi-brain.registerBuild",
        "detail": "calls into extensions/pi-brain.runEnolaBaseline"
      },
      {
        "symbol": "extensions/pi-brain.registerEnolaCommands",
        "detail": "calls into extensions/pi-brain.runEnolaBaseline"
      },
      {
        "symbol": "extensions/pi-brain.registerSyncCode",
        "detail": "calls into extensions/pi-brain.runEnolaBaseline"
      },
      {
        "symbol": "extensions/pi-brain.registerTools",
        "detail": "calls into extensions/pi-brain.runEnolaBaseline"
      },
      {
        "symbol": "extensions/pi-brain",
        "detail": "called by extensions/pi-brain.runEnolaBaseline"
      },
      {
        "symbol": "extensions/pi-brain.findEnolaBinary",
        "detail": "called by extensions/pi-brain.runEnolaBaseline"
      },
      {
        "symbol": "extensions/pi-brain.getBaselineArgs",
        "detail": "called by extensions/pi-brain.runEnolaBaseline"
      },
      {
        "symbol": "extensions/pi-brain.readEnolaConfig",
        "detail": "called by extensions/pi-brain.runEnolaBaseline"
      },
      {
        "symbol": "extensions/pi-brain.resolveTargetRepo",
        "detail": "called by extensions/pi-brain.runEnolaBaseline"
      }
    ],
    "suggested_actions": [
      "Add focused tests around this chokepoint before refactoring",
      "Consider decomposing it so call paths don't all funnel through one symbol",
      "Verify it isn't doing orchestration that belongs in callers"
    ]
  },
  {
    "title": "Call-graph hotspot: extensions/pi-brain.runEnolaCheck (fan-in 4, fan-out 6)",
    "source": "hotspots",
    "description": "\"extensions/pi-brain.runEnolaCheck\" is a pinch point: 4 symbols call into it and it calls out to 6 others, so a large share of call chains pass through it (degree-centrality proxy for betweenness). Such chokepoints are high-risk to change and high-value to test.",
    "confidence": 0.7,
    "evidence": [
      {
        "file": "extensions/pi-brain/enola.ts",
        "symbol": "extensions/pi-brain.runEnolaCheck",
        "detail": "fan-in 4 × fan-out 6 = score 24"
      },
      {
        "symbol": "extensions/pi-brain.captureEnolaRegressions",
        "detail": "calls into extensions/pi-brain.runEnolaCheck"
      },
      {
        "symbol": "extensions/pi-brain.enolaGateCheck",
        "detail": "calls into extensions/pi-brain.runEnolaCheck"
      },
      {
        "symbol": "extensions/pi-brain.registerEnolaCommands",
        "detail": "calls into extensions/pi-brain.runEnolaCheck"
      },
      {
        "symbol": "extensions/pi-brain.registerTools",
        "detail": "calls into extensions/pi-brain.runEnolaCheck"
      },
      {
        "symbol": "extensions/pi-brain",
        "detail": "called by extensions/pi-brain.runEnolaCheck"
      },
      {
        "symbol": "extensions/pi-brain.findEnolaBinary",
        "detail": "called by extensions/pi-brain.runEnolaCheck"
      },
      {
        "symbol": "extensions/pi-brain.getCheckArgs",
        "detail": "called by extensions/pi-brain.runEnolaCheck"
      },
      {
        "symbol": "extensions/pi-brain.readEnolaConfig",
        "detail": "called by extensions/pi-brain.runEnolaCheck"
      },
      {
        "symbol": "extensions/pi-brain.resolveTargetRepo",
        "detail": "called by extensions/pi-brain.runEnolaCheck"
      }
    ],
    "suggested_actions": [
      "Add focused tests around this chokepoint before refactoring",
      "Consider decomposing it so call paths don't all funnel through one symbol",
      "Verify it isn't doing orchestration that belongs in callers"
    ]
  },
  {
    "title": "High cyclomatic complexity: extensions/pi-brain.registerTools (116)",
    "source": "complexity-outliers",
    "description": "\"extensions/pi-brain.registerTools\" has a cyclomatic complexity of 116 — well above the repo average. Highly branched functions are hard to test fully and are frequent defect sites.",
    "confidence": 0.7,
    "evidence": [
      {
        "file": "extensions/pi-brain/tools.ts",
        "symbol": "extensions/pi-brain.registerTools",
        "detail": "cyclomatic complexity 116 at line 46"
      }
    ],
    "suggested_actions": [
      "Extract guard clauses and nested branches into helper functions",
      "Replace deep conditionals with table/strategy dispatch where possible",
      "Add tests covering the distinct branches before refactoring"
    ]
  },
  {
    "title": "High cyclomatic complexity: extensions/pi-brain.registerCommands (92)",
    "source": "complexity-outliers",
    "description": "\"extensions/pi-brain.registerCommands\" has a cyclomatic complexity of 92 — well above the repo average. Highly branched functions are hard to test fully and are frequent defect sites.",
    "confidence": 0.7,
    "evidence": [
      {
        "file": "extensions/pi-brain/commands.ts",
        "symbol": "extensions/pi-brain.registerCommands",
        "detail": "cyclomatic complexity 92 at line 20"
      }
    ],
    "suggested_actions": [
      "Extract guard clauses and nested branches into helper functions",
      "Replace deep conditionals with table/strategy dispatch where possible",
      "Add tests covering the distinct branches before refactoring"
    ]
  },
  {
    "title": "High cyclomatic complexity: extensions/pi-brain.registerHooks (57)",
    "source": "complexity-outliers",
    "description": "\"extensions/pi-brain.registerHooks\" has a cyclomatic complexity of 57 — well above the repo average. Highly branched functions are hard to test fully and are frequent defect sites.",
    "confidence": 0.7,
    "evidence": [
      {
        "file": "extensions/pi-brain/hooks.ts",
        "symbol": "extensions/pi-brain.registerHooks",
        "detail": "cyclomatic complexity 57 at line 58"
      }
    ],
    "suggested_actions": [
      "Extract guard clauses and nested branches into helper functions",
      "Replace deep conditionals with table/strategy dispatch where possible",
      "Add tests covering the distinct branches before refactoring"
    ]
  },
  {
    "title": "High cyclomatic complexity: extensions/pi-brain.parseYamlLike (39)",
    "source": "complexity-outliers",
    "description": "\"extensions/pi-brain.parseYamlLike\" has a cyclomatic complexity of 39 — well above the repo average. Highly branched functions are hard to test fully and are frequent defect sites.",
    "confidence": 0.7,
    "evidence": [
      {
        "file": "extensions/pi-brain/intent-blocks.ts",
        "symbol": "extensions/pi-brain.parseYamlLike",
        "detail": "cyclomatic complexity 39 at line 18"
      }
    ],
    "suggested_actions": [
      "Extract guard clauses and nested branches into helper functions",
      "Replace deep conditionals with table/strategy dispatch where possible",
      "Add tests covering the distinct branches before refactoring"
    ]
  }
]