Interactive demo · synthetic dataEvery record on this page is fabricated.
Systems in Motion — Portfolio V1
This site’s archived predecessor, with its runtime decision layer running, driven by the four URL switches built to test it.
The production code behind this demo is my own work — design, implementation.
The runtime, driven by you
V1 decided two things before it rendered anything: how much GPU work the machine could afford, and whether you had to sit through the intro. Set the URL and the machine; watch which gate decides.
high
mounted
1–1.75
2400
on
on
A desktop that reports eight cores and eight gigabytes. This is the only path to the full budget — 2,400 particles, postprocessing and shadows.
THE LADDER, IN THE SOURCE’S ORDER
- ?quality=high|medium|low|none
- ?webgl=off
- no webgl2 or webgl context
- software rasteriser and not ?webgl=force
- navigator.connection.saveData
- (pointer: coarse) or viewport < 900px
- cores ≥ 8 and memory ≥ 8→ high
Four switches, and why each one exists
- ?skip=1
Skips the boot sequence entirely.
Every QA script sets it. An intro that a test has to sit through is an intro that gets deleted from the test.
- ?quality=high|medium|low|none
Pins the render tier, bypassing detection.
Look-dev, and comparing four tiers on one machine without owning four machines.
- ?webgl=off
Mounts no canvas at all. DOM art direction only.
Proving the site is readable without WebGL, which the a11y run asserts on every pass.
- ?webgl=force
Overrides the software-rasteriser refusal.
Headless browsers render through SwiftShader, which detection correctly refuses — so without this there is no screenshot of the real scene.
The nine scenes
One persistent WebGL corridor, nine scenes over it, and every word in real DOM underneath — rule one of three was that nothing readable existed only in the canvas.
- 01Signal
- 02Selected Systems
- 03How I Work
- 04Web & Commerce
- 05Experience
- 06Capability Map
- 07Off Duty
- 08After Hours
- 09Contact
A capture of the full seventeen-second scroll exists. It was taken from the live V1 site as the baseline its rewrite was audited against, and it is not published on this page. The scroll passes through V1’s Experience scene, which names an employer beside a job title — where that name is allowed to appear, and only there. It is never placed beside the systems those repositories hold, several of which hold salaries and national IDs. Embedding the capture on a page about those systems would collapse that separation for the sake of seventeen seconds of video, so it stays out.
What is verified here, and what is not
V1 published an editorial rule set — no metric that a repository does not actually measure — and this page inherits it. That rule applies to the page’s claims about itself first.
The two decision ladders on this page are V1's
Ported from src/lib/quality.ts and BootSequence.shouldBoot at tag v1.0-production. The tests below re-assert every gate.
VERIFIED
The source is recoverable
git checkout v1.0-production. The tag is in this repository; it is not a screenshot of one.
VERIFIED
A capture of V1 running exists
Taken from the live V1 site and committed on 28 Aug 2026, before the rewrite began, as the baseline that rewrite was audited against.
VERIFIED
That capture is published on this page
It is not, and the section above says why: the scroll passes through V1's Experience scene, where an employer is named beside a job title. That name belongs beside a job title and nowhere near the systems these repositories describe. Seventeen seconds of video is not worth collapsing the separation.
NOT VERIFIED
V1 is reachable at a URL
It is not. portfolio.jdenandro.com served V1 until 29 Aug 2026 and has served newer versions of this site since. Pointing a visitor there would show them this site and call it the old one.
NOT VERIFIED
The WebGL scene renders on this page
It does not. Nine scenes, GSAP, Lenis and three.js are not re-hosted here — that would be a second copy of a site to maintain. What is portable is the decision layer, and that is what runs.
NOT VERIFIED
The numbers above were re-derived
Each one names the command that produced it. None was carried over from an older document.
VERIFIED
V1 is not linked from this page. Its address, portfolio.jdenandro.com, stopped serving V1 on 29 August 2026 and now serves this site — so a link labelled “see V1” would show you this site and call it the predecessor. An archive that says so is worth more than a link that is quietly wrong.
MEASURED FROM THE TAG
- 75 tracked files
- 58 files under src/ and scripts/
- 7,572 lines in those files
- 9 scenes in the manifest
- 6 case studies
- 6 commits, 20–27 Aug 2026
git checkout v1.0-production recovers all of it.
What is real, and what is simulated
Runs in your browser
- resolveQuality — the tier ladder from V1's quality module, gate for gate and in the source's order
- resolveBoot — the three refusals from BootSequence.shouldBoot
- The PROFILES table: the DPR caps, particle counts, postprocessing and shadow flags, verbatim
- The scene manifest, the four URL switches and every count on this page, read out of tag v1.0-production
Ported from tag v1.0-production, which is in this repository and checkoutable. There is no golden digest for it — V1 shipped no unit tests, only three browser-driven QA scripts — so 41 tests assert each gate, its precedence and the tier table's numbers against the source they were read from, and the counts on this page name the command that produced them.
Simulated
- The machine. V1 read these signals off window and navigator; here you set them, which is the only change made to the logic
- The rendering. No canvas, GSAP timeline, Lenis instance or three.js scene is re-hosted on this page, and the scroll capture is deliberately not published here