mirror of
https://github.com/samvallad33/vestige.git
synced 2026-07-24 23:41:01 +02:00
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>
31 lines
842 B
TypeScript
31 lines
842 B
TypeScript
import { defineConfig } from '@playwright/test';
|
|
|
|
const PORT = 5199;
|
|
|
|
export default defineConfig({
|
|
testDir: './e2e',
|
|
timeout: 60_000,
|
|
expect: { timeout: 10_000 },
|
|
fullyParallel: false,
|
|
retries: 0,
|
|
reporter: [['list'], ['html', { open: 'never' }]],
|
|
use: {
|
|
baseURL: `http://localhost:${PORT}`,
|
|
screenshot: 'on',
|
|
video: 'retain-on-failure',
|
|
trace: 'retain-on-failure',
|
|
// Pin motion ON so the living-field motion assertions (isAnimating) are
|
|
// stable: a CI/host that reports prefers-reduced-motion would otherwise
|
|
// freeze every field and false-fail the "field is moving" gate.
|
|
reducedMotion: 'no-preference',
|
|
launchOptions: {
|
|
args: ['--use-gl=angle', '--ignore-gpu-blocklist'],
|
|
},
|
|
},
|
|
webServer: {
|
|
command: `npx vite dev --port ${PORT}`,
|
|
port: PORT,
|
|
reuseExistingServer: true,
|
|
timeout: 30_000,
|
|
},
|
|
});
|