55## Status
66
77- ** Current phase:** 6F — Field hardening, feedback round 1 (runs before 6.1–6.5)
8- - ** Next step:** 6F.8 galaxy visualizer · 6F. 6 test-coverage hardening (blocked: needs the field's actual failing variant — fixture's wrapper shape already passes)
9- - ** Done:** 0.1–0.4, 1.1–1.6, 2.1–2.5, 3.1–3.6, 4.1–4.6, 5.1–5.7, 6F.1–6F.5, 6F.7
8+ - ** Next step:** 6F.6 test-coverage hardening (blocked: needs the field's actual failing variant — the fixture's custom- wrapper shape already passes; get a failing test file from the tester or ship the defensive ` coverage-unmapped ` half only )
9+ - ** Done:** 0.1–0.4, 1.1–1.6, 2.1–2.5, 3.1–3.6, 4.1–4.6, 5.1–5.7, 6F.1–6F.5, 6F.7–6F.8
1010- ** Gates passed:** Gate 0 (CI + red-path, #5 /#6 ) · Gate 1 (precision 1.000, recall 0.895, zero poison) · Gate 2 (C1 instance attribution 1.000 · B1 4-level handler chains · C6 store writers↔readers · A9 portals — scorecard 137/0/0, precision & recall 1.000) · Gate 3 (B3 action effects · B4 routers · B6 cyclic journeys terminate · B7/B8 form & non-JSX events · G5 flag/role conditions — precision & recall 1.000) · Gate 4 (A4 rarity · A10 fuzzy/OCR · A1 structural · A6 subtree · E3 vision annotations · E2 aliases · G4 corrections — high-conf correct 1.000, ambiguity honesty 1.000, poison rate 0.000) · Gate 5 (F1 context bundle · F2 blast radius · F3 test coverage · F4 response schema · F5 git history · MCP server over stdio — scorecard 265/0/0, all honesty metrics 1.000; ** M5 reached** — ticket in → budgeted context bundle out, over MCP)
1111
1212## What CodeRadar is
@@ -508,7 +508,7 @@ printed by the CLI (`score=… confidence=…`); MCP inherits it through the env
508508Candidate isn't part of the generated schemas, so no schema change (drift gate confirms).
5095092 new core tests (211 total); eval 290/0/0/0, gate OK, metrics 1.000.
510510
511- ### [ ] 6F.8 Galaxy visualizer (` coderadar visualize ` )
511+ ### [ x ] 6F.8 Galaxy visualizer (` coderadar visualize ` )
512512** Failure modes:** — (user-requested feature, 2026-07-15)
513513** Build:** new CLI command ` visualize -g <graph.json> -o <out.html> ` emitting a single
514514self-contained HTML file (graph JSON + all JS/CSS inlined, zero network dependencies) that
@@ -520,10 +520,27 @@ physics pause. Must stay responsive at field scale (~2.6k nodes / ~4.8k edges).
520520** Accept:** generated from the demo-app graph: opens from ` file:// ` with no external requests,
521521all node kinds rendered and filterable; unit tests on generation (embedded JSON round-trips,
522522output is self-contained); README section with a screenshot.
523-
524- ** Gate 6F:** field-patterns fixture fully green (skip list empty) · instance resolution ≥ 95% ·
525- RTK data sources > 0 · route nodes > 0 · gibberish queries decline ` no-signal ` · ` pnpm eval `
526- green end-to-end.
523+ ** Done:** new ` visualize.ts ` in the CLI package — pure ` renderVisualization(graph) ` (graph in,
524+ HTML string out, trivially testable) plus a ` toViewModel ` that trims nodes to what the client
525+ needs and drops dangling edges. The command ` ui-lineage visualize -g <graph> -o <html> ` writes
526+ one self-contained file: graph JSON embedded (with ` < ` → ` < ` so rendered text containing
527+ ` </script> ` can't break out), all CSS/JS inlined, no network requests. Client is a canvas
528+ force-directed sim with grid-approximated repulsion (neighbor-cell only) so it scales to
529+ thousands of nodes; node radius scales with degree; kinds color-coded with a legend.
530+ Interactions: per-kind node + edge filter toggles (with all/none), search-and-fly, click →
531+ detail panel (name, kind, detail line, file: line , connection count, flags) with neighbor
532+ highlight + dim-others (visual blast radius), drag-to-pin, scroll-zoom, physics pause,
533+ always-labels. Verified live in-browser against the demo-app graph: renders, filters, physics
534+ toggle, and search→select all work with zero console errors; ` file:// ` /` http ` both load with
535+ no external requests. CLI package gained a ` test ` script + vitest; 5 new tests (embed
536+ round-trips, dangling-edge drop, ` </script> ` breakout guard, self-contained assertions).
537+ README documents the command. eval unaffected (290/0/0/0). ** Gate 6F extractor criteria met;
538+ only 6F.6 (coverage, data-blocked) remains before the gate fully closes.**
539+
540+ ** Gate 6F:** field-patterns fixture fully green (skip list empty ✅) · instance resolution ≥ 95%
541+ (✅ 100%) · RTK data sources > 0 (✅) · route nodes > 0 (✅) · gibberish queries decline
542+ ` no-signal ` (✅) · ` pnpm eval ` green end-to-end (✅ 290/0/0/0). Remaining before the gate is
543+ formally stamped: 6F.6 test-coverage hardening (blocked on a real failing sample).
527544
528545---
529546
0 commit comments