Project Trajectory

98 days, 374 commits, 16 releases. Scrutinizer was a sprint through the frontier of biologically-inspired rendering — where theoretical correctness meets visual stability at 60fps.

This page documents the development arc. For the vision science and shader implementation, see Inside the Math.

November 2025 – February 2026

The Numbers

Scrutinizer was built in a 98-day sprint — November 2025 through February 2026. Here's how it compares to its sibling project, Psychodeli+ (a year-long evolution of a 1997 screensaver into an AI-directed audio-reactive visualizer).

Metric Scrutinizer Psychodeli+
Commits 374 1,703
Calendar span 98 days 340 days
Active days 37 (38%) 175 (52%)
Lines written / deleted +46,908 / -13,504 +492,839 / -271,393
Net codebase 11,057 lines / 42 files ~130k lines / 275 files
Shader lines 2,052 (3 files) ~4,500 (2 files)
Documentation 46 markdown files 128 markdown files
Golden captures 95 PNGs / 8 versions 78 images (essay)
Releases 16 tags (v1.0–v1.6.0) Continuous deploy
Reverts 7 (3 in one day) ~15
Peak commits/day 63 (Nov 23) 45
Longest streak 14 days 29 days
AI co-authored* 3 (1%) 88 (41% in Feb)

Scrutinizer is a sprint where Psychodeli+ is a marathon. One release every 6 days. 63 commits on launch day. And the shader — touched in 9% of all commits — is where every perceptual experiment lives or dies.

*AI co-author counts reflect git workflow, not AI contribution. In Scrutinizer, the developer handled all git commits directly. In Psychodeli+, the AI agent started doing commits — the co-author tag tracks who runs git commit, not who wrote the code.

Monthly Churn

2025-11 | +24,680  -7,555   (net +17k)   ← THE BIG BANG
2025-12 | +17,690  -4,916   (net +13k)   ← Perceptual accuracy push
2026-01 |  +2,218    -374   (net +2k)    ← Mobile + calibration
2026-02 |  +2,320    -659   (net +2k)    ← De-monolith refactor

The Revert Graph: Where Fidelity Meets Stability

The most telling story in the git history isn't the commits — it's the reverts. On December 13, 2025, three rollbacks happened within 30 minutes. Each one pulled the shader back to a less ambitious but more stable tier of perceptual fidelity.

This is the frontier of biologically-inspired rendering: the gap between "theoretically correct" and "visually stable at 60fps" is where the real engineering lives.

Nov 22, 2025 — 17:10
Initial commit
Electron scaffolding, first peripheral.frag
Nov 23 — 17:58
Fix: white screen when disabling foveal view
First stability issue: the shader had no bypass path
Dec 11 — 06:37
WIP: Investigating vertical line artifact
Pushing toward Tier 1.6 — shader complexity causing rendering artifacts
Dec 13 — 14:41
Revert: roll back shader to Tier 1.6 (v1.4.1 stable)
First retreat. Tier 1.7 had visual corruption.
Dec 13 — 14:50 (9 min later)
Revert: roll back to Tier 1.5 (Coupled Warp + MIP Pooling)
Tier 1.6 still unstable. Fall back further.
Dec 13 — 15:11 (21 min later)
Revert: full visual rollback to v1.3 baseline (Pre-Tier 1.5)
Nuclear option. Back to last known-good before the perceptual push.
Dec 13 — later that day
v1.4.1 stabilized
Rebuilt from v1.3 baseline with more conservative parameters. The tier system was the lesson: advance one layer at a time.
Dec 17
v1.4.2: Oklab color space
Perceptually uniform desaturation replaces naive HSL. The first stable V4 upgrade after the revert day.
Dec 30 — 07:39
Fix shader artifacts and refine scrollbar protection
The artifacts from December's push were finally isolated: scrollbar regions needed special handling.
Jan 31, 2026
v1.5.0 ships
Mobile emulation, foveal calibrator, touch events. The most feature-dense release — built on the stability foundation the reverts established.
Feb 27, 2026
v1.6.0: De-monolith into biologically-motivated modules
scrutinizer.js → GazeModel + VisualMemory + ContentAnalysis. The architecture finally mirrors the biology.
The three reverts on December 13th were the project's inflection point. We learned that biological accuracy isn't the goal — perceptual plausibility is. The human visual system is noisy, approximate, and good enough. The shader should be too.