# Resonant Drum Field — current evidence index

Publication display repair (23 October 2026): the fixed-image display now uses
the correct 256-byte aligned WebGPU row stride, including buffers without the
last row's trailing padding. The capture harness already used that stride;
recorded raw images and numerical comparisons are unchanged. Four readback
layout unit checks supplement the ten physics tests. The fixed parent view
also reports capture errors before attempting to draw missing pixels.

This file describes the repaired source package as of 23 October 2026. The
earlier supplied packet is preserved verbatim at
[`evidence/original-EVIDENCE.md`](./evidence/original-EVIDENCE.md), with its
original hashes and metrics. Those original records describe the earlier
source and must not be read as a verification of this repaired source.

The original prototype is attributed to Grok Bot in that supplied record; its
underlying model/version is unknown. Codex performed the repairs, packaging and
verification described here on 23 October 2026. These are separate build stages.

## Current source and provenance

The project adapts Countercurrent's CPU reference at commit
`265e9544d345d64c99f0788b847a3d890c30fc6a` under Apache-2.0. Standalone
provenance copies and their origin paths are listed in
[`upstream-originals/SOURCE_MANIFEST.md`](./upstream-originals/SOURCE_MANIFEST.md).
The adapted implementation is [`src/physics/multi.js`](./src/physics/multi.js);
the independent A implementation is [`src/indep/wave.js`](./src/indep/wave.js).
The source manifest, full Apache licence, NOTICE, and complete Three.js MIT
notice are shipped with the deployed build.
The current source-package hashes are recorded in
[`evidence/source-sha256.txt`](./evidence/source-sha256.txt); they cover the
named source/docs inputs, not Vite's rewritten `dist/` bytes. The original
historical hash file remains [`evidence/original-sha256.txt`](./evidence/original-sha256.txt).

The repaired source adds responsive controls, explicit autoplay/pause/reset,
touch and keyboard input with focus-loss recovery, opt-in experimental MIDI,
fixed-step trail decay, and a no-overlap guard for the supported demo pad
layout (an input/product constraint, not a claim that overlap invalidates the
conservative stability bound),
portable capture configuration, and a current-versus-original evidence split.
The live controlled page uses independent exploratory clocks; equal-time claims
are limited to deterministic fixed-step captures.

## Verification contract

- `npm test` must pass the CPU invariants and the supported-layout overlap
  rejection test.
- `npm run build` must succeed and emit the evidence and licence links.
- `npm run capture` stages each attempt in a fresh timestamped
  `evidence/runs/run-.../` directory and atomically promotes only a passing
  run there. An explicit non-empty destination is rejected rather than
  overwritten; failed attempts are kept separately under
  `evidence/failed-captures/`. The JSON receipt prints its output directory.
  Configure `DRUM_BROWSER_PATH`, `DRUM_CAPTURE_HEADED=1` for a visible
  browser, `DRUM_CAPTURE_BACKEND=hardware|software` (hardware is the macOS
  default; software is explicit SwiftShader),
  `DRUM_WEBGPU_ARGS`, `DRUM_CAPTURE_PORT`, or `DRUM_CAPTURE_OUT` for another
  environment. A missing browser, unavailable WebGPU, timeout, or missing
  comparison pixels is a non-zero failure and the server/browser are cleaned up
  in `finally`.
- The capture records browser path, backend arguments, adapter information,
  fixed seed 20261023, 720×720 viewport, 3.6 s at 1/240 s, and image difference
  metrics. It does not overwrite the original supplied evidence.
- `controlled-capture.html` is the visible fixed-state 3.6 s comparison. It
  embeds the same capture branch used by the CLI and paints both readbacks into
  2D canvases, so equal-time evidence is inspectable in a browser.

## Fresh hardware capture

The repaired build completed a headed Chrome 156 capture on Apple Metal WebGPU
on 23 October 2026. The adapter reported `isFallbackAdapter: false`. Both
controlled modes reached exactly 864 fixed steps (3.6 s) with finite state;
293,870 pixels differed and mean absolute RGB difference was 35.0853/255.
These are component-effect measurements on this configuration, not quality or
general performance scores. The changed trail accumulation is part of this
repaired version, so these measurements are distinct from the original record.

See the [current receipt](./evidence/current/metrics.json),
[control image](./evidence/current/control-readback.png), and
[coupled image](./evidence/current/coupled-readback.png). The separately supplied
release verification report records the headed interface, input, layout and
unavailable-path checks.

## Claim boundary

Under fixed capture conditions, enabling the attributed reciprocal coupling can
produce a measured visual and simulated-state difference. This supports a
bounded reuse demonstration. It does not establish a general quality,
performance, physical-accuracy, or model-capability improvement.
