diff --git a/CLAUDE.md b/CLAUDE.md
index c9fbe7c..3f2e03d 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -95,8 +95,9 @@ Two conventions hold across the real file/stdout handoffs:
HTML by `split().join()` on comment markers (`/*__GRAPH_DATA__*/`, `/*__LCP_DATA__*/`,
`/*__RUN_DATA__*/`, `/*__FORCE_GRAPH_LIB__*/`) in `assets/*.template.html`, deliberately not regex
(the 1.3 MB vendored `assets/3d-force-graph.min.js` could match one). Renaming a marker without
- updating its builder fails loudly — keep it that way. Only `build_run_report.mjs` escapes
- `` in injected data; the other two inject raw JSON/text into a ` block: a raw `<` in any value (bundle module/chunk names, URLs) can form ` block: a raw `<` in any value (scanned file paths) can form ` so it can't close the script block if it appears in data values
- const safeData = rawData.replace(/<\/script>/gi, '<\\/script>');
+ // Data lands inside a perf-map.md)', calibration.ok,
calibration.ok ? calibration.workflowSha.slice(0, 8) : `workflow=${calibration.workflowSha ?? '?'} docs=${calibration.docsSha ?? '?'}`);
+ // 5. HTML builders escape every `<` in the data they inject into a