Repository navigation
Conversation
Single-file artifact template rendering the reference fixture with a layout computed in the browser (design.md approach A), a stdlib build_map.py that validates a contract and inlines it, headless Chromium checks for P1-P7 with screenshots, and FINDINGS.md (go for slice-3). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K2sMgTaeyEWJuGMME34RDC
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K2sMgTaeyEWJuGMME34RDC
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K2sMgTaeyEWJuGMME34RDC
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F4qkQYA3HBDbujUy5MWTH6
|
Review routine: held, not merged. Over the 600-line cap. Flagged for the owner. Hand-written additions come to 974 lines: Nothing else failed. What I checked myself:
Heads-up: I set slice-2 to Generated by Claude Code |
Part of #4 (autopilot, discourse-lens skill). Targets
auto/queue, notmain.What this slice does
Builds the visualization
skill/design.mdchose (approach A: Claude's discrete judgments in, a seeded layout computed in the browser out) as one self-contained HTML page:skill/prototype/template.html: the artifact template (25.6 KB, vanilla JS and inline SVG, no external requests). It has three tabs: Map (topic-coloured points, topic labels, a topic panel with descriptions and terms, a timeline strip, a hover tooltip, a source card on click or tap), Claims (propositions with agree, qualify and dispute bars, most debated first, expandable to each source's paraphrased claim with links), and Sources (a sortable table). Selecting a topic filters all three. Light and dark themes.skill/prototype/build_map.py: stdlib-only validator and inliner. Runpython build_map.py contract.json out.html. It is the generator slice-3 reuses.skill/prototype/map.html: the reference fixture rendered (60 KB). The fixture's x/y are ignored.make_test_contracts.pyandcheck.cjs: test contracts, plus headless Chromium checks that writecheck-results.jsonand 11 screenshots.skill/prototype/FINDINGS.md: P1 to P9 marked, what worked and what didn't, and GO for slice-3 with three conditions.Review pack
About 20 to 30 minutes:
skill/prototype/map.htmlin a browser (download the raw file). Try hover, click a point, click a topic, switch tabs, and narrow the window. This is the "does it feel like discourse-lens?" question from AUTOPILOT.md.skill/prototype/screenshots/side-by-side.png(the app's UMAP vs the computed layout), thenmap-1440.png,map-390.png,claims-1440.pngandvariant-1440.png.skill/prototype/FINDINGS.md, especially "What didn't" (the map is islands, not a landscape) and "Not tested here".docs/autopilot/decisions.md.Acceptance criteria
All were run in this cloud sandbox on 2026-10-23 with Chromium 141.0.7390.37 (preinstalled Playwright 1.56.1). Raw output is in
skill/prototype/check-results.json.0,9,3,1,7,2,5,4,6,10,8matches design step 6 as computed independently. The first proposition expands to 18 stances with 18 links, all of them fixture URLs.f2ffd086b6375becis the same for the fixture and for the fixture with x/y stripped, so x/y can't be feeding it. Nearest-topic agreement with the app's UMAP is 5 of 6 (the bar was 4). The side-by-side isscreenshots/side-by-side.png.file://at both widths. No CDN script is used at all.map.htmlis 60,074 bytes.map-1440.png,map-390.png,map-390-tap.png,claims-1440.png,claims-390.png, plus the hover, topic-selected, dark, sources and variant shots.build_map.pyimports onlyargparse, json, re, sys, pathlib. A rebuild ofmap.htmlcompared withcmpis byte-identical.bad-dangling.json→ exit 1 withpropositions[3].stances[0].article_id: 'does-not-exist' is not an article id. jsonschema 4.26.0 accepts that same file (0 errors), so this check exists only inbuild_map.py.related, a bridge, edge sources, zero propositions) renders, and the timeline hides.To re-run: the three commands in FINDINGS.md "What's here", then
NODE_PATH=$(npm root -g) node check.cjs.What's not verified: anything inside a real Claude.ai chat (A1 artifact CSP in chat, A5 a sandbox file shown as the artifact, the artifact iframe on a real phone). I re-read the Claude Code artifact page constraints and the chat What are artifacts page today; the chat page still says nothing about scripts or CDNs. The prototype makes no external request, so A1 doesn't block it.
Decisions made without you
All six are also in
docs/autopilot/decisions.md.npx playwright@1.48.2 install, because the environment says not to download browsers. Rejected: installing a second browser.map.html, results and screenshots are committed. Rejected: committing about 200 KB of derived files.Deliberately not included
skill/discourse-lens/is slice-3).backend/,frontend/,tests/, AUTOPILOT.md or CLAUDE.md.How to revert
Close this PR, or after a merge run
git revert <merge commit>onauto/queue. Everything lives underskill/prototype/plus appended entries indocs/autopilot/decisions.mdand the slice-2 status line indocs/autopilot/queue.md.Generated by Claude Code