Verify, don't trust — applied to this site
How this site was built
Last updated . Evidence classes: LIVE = fetch it yourself · REGISTERED = observed by tooling · TESTED = handler tests passed · NOT OBSERVED = not yet seen in the wild.
This page lists what runs when you visit trooids.com and what an AI agent can read or call here. Every line is checkable from your own browser or with one HTTP request. Nothing here is a marketing claim; the numbers are measured and dated.
What runs on your GPU
The hero scene "The Sovereign Node" is rendered by three.js 0.186 with the WebGPU renderer and an automatic WebGL2 fallback. Your browser is using: .
- 6,000 instanced points form the two strands (tiered to 3,600 or 1,800 on smaller devices), with 72 nucleotide beads on 36 rungs; the Nexus nodes, their links and the pulse are drawn in the same scene.
- Frame rate capped at 60, device pixel ratio capped at 1.5; every 3 s the render time and the delivered frame rate are sampled — under pressure the tier steps down (6,000 → 3,600 → 1,800 drawn points, 56 → 36 → 20 nodes, 40 → 24 → 12 links; the geometry is ordered so any prefix covers the whole helix), and it steps back up only after two consecutive good windows. If even the lowest tier cannot hold ~12 fps, the still image takes over.
- Rendering pauses when the tab is hidden, when the scene scrolls out of view, and when you press "Pause motion" (a real button, keyboard reachable).
- Reduced motion: if your system asks for it, the scene keeps a slow ambient rotation at half speed without pulses, pointer parallax or scroll effects. Without WebGL, on a software renderer, or when the lowest tier cannot hold ~12 fps, you see a still image of the same scene; the text alternative stays in the page.
What an AI agent can read
| Artifact | Where | Evidence |
|---|---|---|
| Open Knowledge Format bundle (OKF v0.2): one Markdown file with YAML frontmatter per concept, index.md, log.md | /knowledge/index.md | LIVE |
| llms.txt and llms-full.txt (the agent-oriented content map) | /llms.txt · /llms-full.txt | LIVE |
| Structured data (schema.org JSON-LD: Organization, WebSite, WebPage, FAQPage) | in the page head | LIVE |
| robots.txt allowing AI crawlers, sitemap | /robots.txt · /sitemap.xml | LIVE |
What an AI agent can call (WebMCP)
| Tool | What it does | Evidence |
|---|---|---|
| get_trooids_overview | returns the five-sentence description of Digital DNA and the current status | REGISTERED · TESTED |
| list_knowledge | returns the OKF index | REGISTERED · TESTED |
| request_conversation | registers interest only when consent is true; stores the submitted fields to reply | REGISTERED · TESTED (consent path) |
Registration on this page: . Native invocation by a browser's own agent: NOT OBSERVED at the time of writing — the human form and the knowledge links are the always-working path. The form itself carries the declarative toolname / tooldescription attributes.
Performance and safety, measured
- Lighthouse 13.5 on the production host trooids.com (headless Chromium without GPU — the scene hands over to the still image there; the GPU engine scores are in the change history), 2026-10-03: Performance 99 (phone) / 100 (desktop), Accessibility 100, Best Practices 100, SEO 100; Agentic Browsing signals: category present; llms-txt: pass; webmcp-registered-tools: pass; webmcp-form-coverage: pass; webmcp-schema-validity: pass; agent-accessibility-tree: pass; cumulative-layout-shift: pass.
- Cumulative layout shift measured in the page: 0, 0, 0, 0 (normal and reduced motion, phone and desktop).
- Strict Content-Security-Policy (default-src 'self', no third-party scripts), HSTS, X-Frame-Options DENY, Referrer-Policy strict-origin-when-cross-origin, Permissions-Policy (no camera, microphone, geolocation).
- Everything self-hosted: fonts (Fraunces at its display optical size, Inter, JetBrains Mono — latin subsets, 132 KB together, held behind a short font gate so the swap never shifts layout), three.js, GSAP. No cookies, no trackers, no analytics scripts.
- Hero bundle on the wire: ≈218 KB as served by Cloudflare (brotli; 219 KB gzip; 801 KB raw), loaded as a module after the text.
23 September 2026: the Dutch version and the podcast
Two things were added to this site on one day, both by the same autonomous workflow under the owner's rulings, reviewed by GPT-6 Astra and measured before release.
- The Dutch site. live on this site Every page exists under /nl/, generated from the English source and a reviewed catalogue by a compiler in the release chain; a parity gate fails a release when a Dutch entry is missing, duplicated, stale or still English, and a mutation test proves the gate (ten mutation classes and a positive control). English is the source of truth: the Dutch tree is never hand-edited.
- The podcast. live on this site A three-minute two-host episode at /podcast/: the founder's voice (a licensed synthetic American-English voice converted to his timbre, with his consent) and a licensed synthetic co-host, the words drafted from this knowledge bundle and edited by hand with a source id on every factual line; the picture shows both hosts at one table, generated images animated from the audio with HeyGen Avatar IV. The synthesised speech was transcribed back and compared with the script (word error rate); the episode files are in the signed manifest like every other file, and the production measurements are published under /evidence/.
The permission workbench
/workbench/ is the site performing what it says: a policy engine between two fixture functions and sample data, a nine-field trace, and the helix animating the real decisions. Evidence classes: the engine and the trace are LIVE (read /assets/js/workbench-core.js, unminified), the outcomes are TESTED (node test 15/15; battery rows below), the scene is LIVE on GPUs with an SVG diagram as the fallback.
- Enforcement outside the visual layer: grant → three slots from one permitted read while the optional titles read is refused (R-none); the brief writer is refused for titles, private note and contacts (R-none); revoke → the retry is refused ("R-1 revoked"). Measured by _qa/workbench_battery.py on 2026-09-27: 28/28 rows (headless Chromium) and 33/33 rows with a GPU on trooids.com.
- Network: requests made by the page after Start = 0 (a Playwright request listener; scope: that page, that tab, after the Start click — a measurement of the page, not proof about anything else).
- Scene: webgpu, 62 fps (headless Chromium with Metal); reduced motion = states without pulses; software GPU = the SVG diagram with the same states.
- The keyboard-only flow and the reduced-motion flow reach the same outcomes; every control is at least 44 px tall on phones; console errors 0; the Content-Security-Policy is unchanged.
- What it does not prove: a complete Agent of One (the functions are fixtures with no side effects), anything about servers, the origin's independence — the next demonstration.
- Next, measured and not live: an on-device language layer for the workbench was measured on 22 September 2026 (SmolLM2-135M on WebGPU in Chromium: 182 MB download, 13 s load, about 80 tokens per second) and is not on this site: the host serves at most 25 MiB per file, and the alternatives need a paid storage bucket or a third-party model host outside this origin's content-security policy. It stays a NEXT item until the hosting exists.
One engineering case study: the hero that could stay blank
One defect, its correction, the evidence, and the limitation that remains — with the artefacts behind it. Nothing in this section is a claim of a further certification; the review that found it is quoted, the fix is measured.
- Defect. On 22 September 2026 at 18:53 UTC, during the designer review in the owner's browser, the hero reported offscreen: true, fps 0 while the region was visible and the page was scrolled to the top; the poster had already been hidden, so the visitor would have seen an empty dark hero — no helix, no still image. Observed once; not reproduced by three targeted attempts (a tab background/foreground cycle, four rapid viewport changes, opening the page in a background tab and switching to it).
- Hypothesis. The scene's IntersectionObserver callback read the first entry of a batch (es[0]); when the observer delivers several records at once, the last one is the truth. Unconfirmed: the reviewing seat (GPT-6 Astra, C1 F-3) required it to be labelled a hypothesis, and rejected the first proposed repair (re-arming the loop alone would have exited immediately while the stale flag was still set).
- Correction. The callback now reads the last entry, and a two-second watchdog reconciles the observer state from the region's own box before re-arming: if nothing is scheduled while the tab is visible, motion is not paused and the context is not lost, it recomputes visibility, clears the stale flag, counts the reconciliation, and schedules a frame.
- Evidence. The fix-batch check forces the stale state through a test hook while the region is visible: the watchdog reconciles within 3.5 s (offscreen false, one reconciliation counted) and frames keep advancing — recorded in FIXBATCH_live.json, row "hero stale-state test", measured trooids.com at 2026-09-25T16:07Z, sha256 95e0ad6ee910a05a…. The 85-row site battery was unchanged by the change.
- Limitation. The test forces the state; it does not reproduce the original trigger, which was never identified. The reconciliation counter is exposed by the homepage scene (window.__heroState.watchdog) and read by the fix-batch row; this page carries no hero scene, so its operational panel below reports exactly that instead of a counter.
Artefacts (sanitised excerpts)
Designer review, row 11b (custodian, 18:53Z): "At 18:53Z … showed offscreen:true, fps:0 while visible and scrolled to top, poster already hidden: an EMPTY hero (…). Not reproduced by: reload; tab background→foreground cycle; 4× rapid viewport 80 px↔900 px; Cmd-click background-tab open then switch."
Astra C1 F-3 (verbatim excerpt): "merely re-arming schedule while offscreen remains true immediately exits the supplied loop. The proposed watchdog therefore lacks the state repair necessary for the reported condition … Label the cause unconfirmed. Specify observer-state reconciliation before scheduling, preserve pause/hidden/context-loss guards, and require a reproduced stale-state test proving a visible frame or poster recovers."
Fingerprints: source records (private, unpublished): src:design-review-r1 = DESIGN_REVIEW.md sha256 289ebc06baa335cc…; src:astra-c1 = C1_astra.md sha256 0cc16e67721c57b1… — published quotations (the quoted text of the two excerpts above): excerpt:11b sha256 3f1196056ae50702…; excerpt:c1-f3 sha256 f54f535602632507… (full hashes in /evidence/index.json → case_study). What they establish: the source-record hashes let anyone who is later shown the originals confirm they are the records quoted here; the excerpt hashes pin the published quotations to this page; neither proves the content of an unpublished record. The originals are internal review records of Information Engine B.V. and stay private. The site's own files, including the scene bundle that carries the correction, are listed with their sha256 in /built-manifest.json and can be verified on /workbench/.
This page right now — operational evidence, self-reported
Every value in this panel is read by this page in your browser: the runtime values are re-read every three seconds; the release identity is read once, at load. It is a measurement of this page, not an independent monitor; there is no uptime claim on this site because none is measured.
- reading…
Release identity: reading…
Supported conditions, as measured: Chromium 13x with WebGPU (the scene), WebGL2 as the fallback, a software renderer or no WebGL → the still image (homepage) or the SVG diagram (workbench); phones emulated at 390×844 and 375×667 (no physical-device measurement is claimed); reduced motion honoured live; keyboard-only journeys through the homepage and the workbench.
Known limits: native WebMCP invocation by a browser's own agent has not been observed; the request counters on the workbench are self-reported by that page; the narrow phone layout of the animation drops the helix and the brand line; the workbench's export digest is unsigned; same-origin verification shows consistency with this origin, not its independence.
Dated test procedures and results: /evidence/index.json · this release publishes label cr-helix-2d: BATTERY_cr-helix-2d.json (measured preview.trooids.pages.dev at 2026-10-09T18:41Z). Each snapshot names the deployment it measured (url) and the time (at); a snapshot of one deployment is published by the next release, so the measured deployment and the publishing release are named separately in the index. Scripts: _qa/battery.py (85 rows), _qa/workbench_battery.py, _qa/verify_battery.py, _qa/fixbatch_check.py, _qa/architecture_battery.py, _qa/lighthouse.sh.
The evidence snapshots, the manifest and the signature are English-only technical files.
The animation
"The transformation in one picture" is a HyperFrames composition: HTML + CSS + GSAP, played live on the homepage and rendered to MP4 (24 s, 1920×1080) from the same code — write HTML, render video. The composition passed HyperFrames' own check (0 errors).
Provenance and rollback
Built on 22 September 2026 by an autonomous agent workflow — Claude Fable 5.1 as builder, GPT-6 Astra as the independent reviewer of the plan (three rounds, accepted with no findings) and of the preview, with Google and Anthropic seats in the drift checks and on the twelve design rules the components were built from. The previous site was backed up and restore-tested before this one went live; the previous version can be redeployed in one command.
Deployed files and their sha256: /built-manifest.json.
Change history
- — first publication of the new English site.
- — live measurement on trooids.com (Lighthouse 13.5, headless Chromium, production host): Performance 92 (phone) / 100 (desktop), Accessibility 100, Best Practices 100, SEO 100, Agentic Browsing 100.
- — phones: the hero picture now paints from the first frame and the 3D scene loads after the page, so the largest content appears sooner (Lighthouse phone 92 → 99, desktop 100); nothing the page says changed.
- — privacy: anonymous totals of three named moments (registration sent, podcast started, interactive picture scrolled to its end) are now counted by our own server, without cookies or identifiers; the privacy page lists exactly what is counted.
- — podcast episode 1 re-released at the owner's request: one consistent American-English delivery in the founder's voice, and a video of both hosts at one podcast table (HeyGen Avatar IV); the word "pull" in "pull economy" is not recognised by speech recognition and was confirmed by the owner's ear.
- — podcast episode 1: chapter cards and a persistent chapter list added to the video (HyperFrames, rendered from the episode's chapter data).
- — a server-side spam check on the registration form (messages scored as spam are kept apart and not forwarded); privacy page updated.