OnChange controlled website-change evidence
Published 13 October 2026
Canonical collection: https://onchange.app/change-lab
Release report: https://onchange.app/resources/release-evidence-pack

Fieldnotes is a fictional demo. No real business, customer, purchase, offer,
search-index observation or human accessibility certification is represented.

The JSON record contains 28 actual browser captures (14 fixtures, 2 viewports),
exact timestamps, file hashes, rendered text, metadata and axe observations.
Four additional screenshots preserve the focused button state. The intentionally
missing preview is a real local HTTP 404, not a successful page capture.

Recorded environment: Chrome 155.0.8059.40, macOS, axe-core 4.12.1,
1440x900 and 390x844 CSS pixels, scale 1, English, UTC, reduced motion.
The live release worker currently uses axe-core 4.10.2; this local editorial
harness export is not a production API export. Different browsers, fonts or
tool versions can change pixels and findings. Do not compare counts blindly.

REPRODUCE
1. Download https://onchange.app/evidence/reproduction-kit.zip and extract it.
2. In the extracted folder, install the locked dependencies with npm ci.
   Requirements: Node.js 20 or newer, npm and Google Chrome installed.
3. Run npm run capture (or node scripts/capture-evidence-lab.mjs).
4. Read public/evidence/lab-results.json and inspect public/evidence/captures/.
The script starts a temporary loopback server, captures only authored fixtures,
checks seven assertions, writes fresh timestamps, then closes its browser/server.
It does not call customer URLs, a production API or any payment service.

You can inspect fixtures.zip independently. Extract it and serve the files from
a local static web server. The source pages use embedded CSS and no external
resources. Buttons have no purchasing behavior. For the focus example, press
Tab four times from a fresh page load; the fourth stop is Choose Team.

INDEXING
On the public OnChange host, all fixture URLs have an extra X-Robots-Tag:
noindex, nofollow response header. The noindex experiment compares the HTML
meta values, not the fixtures' effective indexing policy on the publishing host.
The fictional example.org canonical is not a monitored customer URL.

DECISIONS
release-decisions.json contains explicitly illustrative decisions. The baseline
control compares a capture to itself, not two independent observations. No real
reviewer approval is claimed. Use the blank templates for your own decisions.
The release-gate.py example never approves a check automatically and only exits
successfully for a completed, approved result with gate=passed.

PROVENANCE
All fixture HTML and capture code were authored for OnChange. Screenshots are
unmodified browser output. Source and screenshot SHA-256 hashes are in JSON.
Public source: https://onchange.app/evidence/capture-evidence-lab.mjs
The reproduction ZIP includes that script and a minimal locked package manifest.
Repository access is not required. Package installation uses the npm registry;
the subsequent capture run uses only the temporary local fixture server.
These downloads contain no customer data or API credentials.
