{"record":{"id":"83af3883881ff1fe","repo":"NousResearch/hermes-agent","slug":"render-churn-setup-failed-ok-needs-a-dev-re","errorCode":null,"errorMessage":"render-churn setup failed (${ok}) — needs a dev renderer with src/debug installed (the counters are aliased out of production builds unless VITE_PERF_PROBE=1).","messagePattern":"render-churn setup failed \\((.+?)\\) — needs a dev renderer with src/debug installed \\(the counters are aliased out of production builds unless VITE_PERF_PROBE=1\\)\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"apps/desktop/scripts/perf/scenarios/render-churn.mjs","lineNumber":201,"sourceCode":"\nexport default {\n  name: 'render-churn',\n  tier: 'ci',\n  description: 'N streaming tabs: per-component render attribution + store churn.',\n  async run(cdp, opts = {}) {\n    const tiles = Number(opts.tiles ?? 5)\n    const seedTurns = Number(opts.turns ?? 20)\n    const tokens = Number(opts.tokens ?? 240)\n    // Matches STREAM_DELTA_FLUSH_MS — one publish per session per real flush.\n    const intervalMs = Number(opts.intervalMs ?? 33)\n    const chunk = opts.chunk ?? 'A streamed review sentence with **bold** and `code`.\\n\\n'\n\n    await cdp.send('Runtime.enable')\n\n    const ok = await cdp.eval(setup(tiles, seedTurns))\n\n    if (ok !== 'ok') {\n      throw new Error(\n        `render-churn setup failed (${ok}) — needs a dev renderer with src/debug installed ` +\n          '(the counters are aliased out of production builds unless VITE_PERF_PROBE=1).'\n      )\n    }\n\n    // Mount every tab (keep-alive mounts on first activation), then settle.\n    for (let n = 1; n <= tiles; n++) {\n      await cdp.eval(reveal(`churn-tile-${n}`))\n      await sleep(350)\n    }\n\n    // Let the app go quiet before recording, so boot/hydration commits that\n    // happen to still be in flight don't land in the streaming window. This is\n    // what makes runs comparable — a fixed sleep let 2-4x of hydration churn\n    // leak in depending on machine load.\n    const settle = await cdp.eval(quiesce(600, 15000))\n    await cdp.eval(START)\n    await cdp.eval(drive(chunk, intervalMs, tokens))","sourceCodeStart":183,"sourceCodeEnd":219,"githubUrl":"https://github.com/NousResearch/hermes-agent/blob/c896c09c42910c584c4c7d2325b58c14713ea42c/apps/desktop/scripts/perf/scenarios/render-churn.mjs#L183-L219","documentation":"Error \"render-churn setup failed (${ok}) — needs a dev renderer with src/debug installed (the counters are aliased out of production builds unless VITE_PERF_PROBE=1).\" thrown in NousResearch/hermes-agent.","triggerScenarios":"Thrown at apps/desktop/scripts/perf/scenarios/render-churn.mjs:201 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Run against a dev renderer, or rebuild with VITE_PERF_PROBE=1 so the counters are present.","Verify src/debug is installed in the renderer under test."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c896c09c42910c584c4c7d2325b58c14713ea42c","analyzedAt":"2026-08-14T17:18:01.089Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}