vestige/apps/dashboard/build/index.html
Sam Valladares e60e568160 fix(dashboard): audit pass — clickable field cells, empty-data substrate, reduced-motion
Full multi-team audit of the living-field work (adversarial fleet + fresh-eyes
pass + foundation deep-dive). 11 real bugs found and fixed; 7 false positives
adversarially refuted. All re-verified live on the real brain.

Pick contract: field cells were unclickable in intentions/schedule/memory-prs/
importance — the click handlers read the old text-item id off a node payload.
Read the id from either shape; importance now also picks the field pass;
intentions gets a dedicated filter toggle instead of flipping the filter on every
click. RouteStage now picks passes top-down (front-rendered text before
back-rendered field) so a background cell can't steal a foreground control's
click. Proven live: cell clicks fire real promote/act with real memory ids.

Empty data: /patterns went black when the cross-project set is empty (it is
recomputed). Seeded a real memory-pool substrate it falls back to, like
contradictions — alive at zero patterns.

Correctness: memories unsuppress now honors UnsuppressResult.stillSuppressed
(compounded suppression stays scarred). LivingFieldPass no longer writes the
shared params[2] node_count lane (was corrupting the co-resident scene renderer
on graph/observatory/memories). Finite-guard every value reaching the GPU buffer
so a bad mapper can't NaN-out the field. blackbox selected-cell highlight tracks
selectedRunId. graph nulls its field handle when leaving field mode.

Accessibility: /memories and /importance (direct ObservatoryCanvas mounts) now
honor prefers-reduced-motion via engine.setPaused — the field freezes for
reduce-motion users. Gate pins reducedMotion:'no-preference' so the motion
assertion is stable.

Gates green: check 0/0, build ok, palace-launch-gate 22/22 + curated tour,
all-routes-smoke 20/20, ChangelogResponse gains totalEvents.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-12 06:57:19 +07:00

49 lines
2.1 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<meta name="theme-color" content="#050510" />
<meta name="description" content="Vestige — Cognitive Memory Dashboard. 3D visualization of your AI's long-term memory." />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Vestige" />
<link rel="icon" type="image/svg+xml" href="/dashboard/favicon.svg" />
<link rel="apple-touch-icon" href="/dashboard/favicon.svg" />
<link rel="manifest" href="/dashboard/manifest.json" />
<link href="/dashboard/_app/immutable/entry/start.DeXDFAvJ.js" rel="modulepreload">
<link href="/dashboard/_app/immutable/chunks/DJDK-KWF.js" rel="modulepreload">
<link href="/dashboard/_app/immutable/chunks/DAau0uzT.js" rel="modulepreload">
<link href="/dashboard/_app/immutable/chunks/CGq8RnJq.js" rel="modulepreload">
<link href="/dashboard/_app/immutable/chunks/DY7cP31Q.js" rel="modulepreload">
<link href="/dashboard/_app/immutable/entry/app.Bj0mlYI5.js" rel="modulepreload">
<link href="/dashboard/_app/immutable/chunks/Dp1pzeXC.js" rel="modulepreload">
<link href="/dashboard/_app/immutable/chunks/Bzak7iHL.js" rel="modulepreload">
<link href="/dashboard/_app/immutable/chunks/Ccqjq5DS.js" rel="modulepreload">
<link href="/dashboard/_app/immutable/chunks/W8qDZJD6.js" rel="modulepreload">
<link href="/dashboard/_app/immutable/chunks/DV6OI5iy.js" rel="modulepreload">
<title>Vestige</title>
</head>
<body data-sveltekit-preload-data="hover">
<div style="display: contents">
<script>
{
__sveltekit_1vzfo5 = {
base: "/dashboard",
assets: "/dashboard"
};
const element = document.currentScript.parentElement;
Promise.all([
import("/dashboard/_app/immutable/entry/start.DeXDFAvJ.js"),
import("/dashboard/_app/immutable/entry/app.Bj0mlYI5.js")
]).then(([kit, app]) => {
kit.start(app, element);
});
}
</script>
</div>
</body>
</html>