Engine core: Timeline (fixed dt, audio-mastered in realtime), seeded Rng, Renderer, Layer/ShaderLayer/SceneLayer, Compositor with blend modes, feedback and post chain. Shader scenes are compiled against a fixed uniform contract and define only `vec4 scene(vec2 uv, vec2 p)`, so adding a scene costs a shader plus a params block. Deep Nebula ported from party-stage as the first one. Gate passes, 7/7 in checks.html: - 300 frames rendered twice are bit-identical - a fresh Engine reproduces the same frames - simulated dropped frames change nothing (proves dt is fixed) - seek matches sequential playback - 320x180 vs 1280x720 agree within 0.010 (limit 0.06) - seeded rng reproducible, forked streams independent - compositor reset clears feedback history Static gates: no wall-clock or unseeded randomness in deterministic directories; scene schemas and shader sources agree in both directions. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
43 lines
1.5 KiB
HTML
43 lines
1.5 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>flow-state · checks</title>
|
|
<style>
|
|
:root { color-scheme: dark; }
|
|
body {
|
|
margin: 0; padding: 24px;
|
|
background: #0b0d12; color: #d6dae3;
|
|
font: 13px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
}
|
|
h1 { font-size: 15px; letter-spacing: .12em; text-transform: uppercase; color: #7d8698; margin: 0 0 4px; }
|
|
#summary { margin: 0 0 20px; font-size: 14px; }
|
|
#summary.ok { color: #4ade80; }
|
|
#summary.bad { color: #f87171; }
|
|
.row {
|
|
display: grid; grid-template-columns: 52px 34px 1fr 60px;
|
|
gap: 10px; align-items: baseline;
|
|
padding: 7px 10px; border-left: 3px solid transparent; margin-bottom: 2px;
|
|
background: #11141b;
|
|
}
|
|
.row.pass { border-color: #22c55e; }
|
|
.row.fail { border-color: #ef4444; background: #1c1214; }
|
|
.row.manual { border-color: #eab308; }
|
|
.badge { font-weight: 700; font-size: 11px; }
|
|
.pass .badge { color: #4ade80; }
|
|
.fail .badge { color: #f87171; }
|
|
.manual .badge { color: #facc15; }
|
|
.phase { color: #6b7280; }
|
|
.ms { color: #4b5563; text-align: right; }
|
|
.detail { grid-column: 3 / 5; color: #8b93a5; font-size: 12px; }
|
|
.detail:empty { display: none; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<h1>flow-state — phase gates</h1>
|
|
<div id="summary">starting…</div>
|
|
<div id="results"></div>
|
|
<script type="module" src="/src/checks/main.js"></script>
|
|
</body>
|
|
</html>
|