# Harness v1

> Harness v1 of the OpenPWA Device Lab: the 52 files its lock lists at /lab/device-tests/, their served SHA-256 hashes, and which existed at the baseline start.

import LabHarnessFiles from '@components/lab/LabHarnessFiles.astro';
import LabProvenance from '@components/lab/LabProvenance.astro';

Harness v1 contains the test pages used in the iOS 18.6.2 baseline at [/lab/device-tests/](/lab/device-tests/). These include the lab app with its labelled icons, storage marker and notification recorder ([/lab/device-tests/](/lab/device-tests/)), the T1 no-manifest probe ([/lab/device-tests/t1/no-manifest/](/lab/device-tests/t1/no-manifest/)), the T3 manifest-only app ([/lab/device-tests/t3/manifest-only/](/lab/device-tests/t3/manifest-only/)), the T4 status-bar variants and their separate apps, and the T7 Perm Test app ([/lab/device-tests/t7/perm/](/lab/device-tests/t7/perm/)). The [study report](https://openpwa.net/research/2026-10-ios18-home-screen-web-apps/data/REPORT.md) lists which of these pages each test used.

## Files and hashes

The v1 lock, [lock.json](https://openpwa.net/lab/harness/v1/lock.json), lists 52 files. Each entry records the SHA-256 and size of the bytes `openpwa.net` serves (`servedSha256`, `servedBytes`) and of the source file (`sha256`, `bytes`). It also records the commit that added the file (`addedIn`) and whether the file existed when the baseline run began (`presentAtBaselineStart`). [SHA256SUMS.txt](https://openpwa.net/lab/harness/v1/SHA256SUMS.txt) has the served hashes, one line per file, so you can hash a file you fetch and compare.

<LabHarnessFiles version="v1" locale="en" />

## Served bytes and source bytes

For three files, `lab.css`, `t1/no-manifest/probe.css` and the T7 Perm Test page, the served hash differs from the source hash. The lock records the build transformation in `servedTransform`. The site build rewrites `font-weight` values above 600 to 600 in `.css` files and inline `<style>` blocks. The study report records one instance of this on the T7 Perm Test page: the snapshot taken during the run declares `font-weight:600` on its header where the repository file says `700`, with no difference in behaviour.

## Files present when the run began

The lock records the baseline run start as 2026-10-20T06:36:42Z. `presentAtBaselineStart` is true for 24 files, all added in commit `d5bb19c1`: the lab app with its icons, worker and manifest, the T3 manifest-only app, the first T4 variants and the `sbs-*` status-bar style apps. The other 28 files have `presentAtBaselineStart` false:

- the T1 no-manifest probe (3 files, commit `77080a59`);
- the T4 strip set: `white-top`, `theme-red`, `bg-green` and `dynamic` (4 files, commit `1124b20d`);
- the T7 Perm Test app (6 files, commit `df421952`);
- the `theme-m1` to `theme-m3` apps used for the T4 status-bar colour follow-up (15 files, commit `f2eabda0`).

## Run snapshots

The study's [data package](https://openpwa.net/research/2026-10-ios18-home-screen-web-apps/data/) holds snapshots of some harness files under `tools/site-snapshots/`. The study report records one change during the run: the deploy of commit `1124b20d` at about 08:28 UTC replaced `lab.js`. Reads N03 to N36 ran the earlier module (SHA-256 `849c0ac7…`), and open pages kept that cached module for a few reads after the deploy (N37, N38-a); `sw.js` stayed the same throughout.

The lock's `runSnapshots` list gives each snapshot's SHA-256 and a `matchesCurrent` flag. The earlier `lab.js` is marked `false`. The `lab.js` and `sw.js` served from 08:28 UTC and the T7 Perm Test page, manifest and worker captured at 09:30 UTC are marked `true`: their hashes equal the v1 served hashes. Files with no snapshot have only the hashes in the lock.

## Errata

Under the v1 change rule recorded in the lock, a file may change only to fix a privacy or security defect, with a dated erratum. Its `errata` list is empty.

Before you run a test on v1, take a hash snapshot against [SHA256SUMS.txt](https://openpwa.net/lab/harness/v1/SHA256SUMS.txt), as described in [Run Device Lab tests on iPhone and iPad](/lab/guides/iphone-ipad/).

<LabProvenance locale="en" />