f0ab8b8f35
mneme held 124 migrated episodes and had no human interface at all — curl only. Adds a self-contained HTML page (stdlib http.server, no deps, bullseye house style) consuming the EXISTING endpoints client-side: namespace tree with counts, recent memories, a search box over /query, and a status line with degraded flag + queue depth. READ ONLY by design. No edit/delete — curation (idea 130) needs delete semantics, the consolidation-clobber flag and an audit trail settled first. XSS: memory text is escaped via createTextNode -> innerHTML, not string concat. mneme ingests web-derived digests (gap R5), so a stored <script> reaching a browser is a real path. The spec test executes the DOM and asserts window.__pwned stays unset and zero script/img nodes are created — a real check, not a string match. Ground by @py on local deepseek-v4-flash-dspark, GREEN in 90 seconds, one shot. 15 viewer tests, 70 mneme tests, 246 repo-wide. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>