# 120 whole-field QR patterns

**[Open the visual gallery](gallery.html)** · [All collections](../gallery.html) · [First research experiments](../research-full-field/gallery.html)

[![Twelve families of whole-field QR art](contact-sheet.png)](gallery.html)

Twelve families, ten different compositions each. Every final QR encodes exactly **https://jdt.engineering**. Artwork constraints cover the complete data/parity field with equal priority, right to the symbol edges. There is no central picture insert, transparent background, or painted-over QR. The required function patterns and four-module white quiet zone remain intact.

Use the offline gallery to filter, search, enlarge, move between designs with arrow keys, inspect targets and download PNG/SVG files. Targets are clearly marked **not QR codes**. The gallery embeds its metadata and works from a local file without fetch/CDNs; Panton is loaded from the existing sibling patterns/panton.css.

## Families

| Family | Explore | Exports | Contact sheet |
|---|---|---|---|
| Woven fields | [10 designs](gallery.html#woven) | [PNG/SVG index](families/woven/README.md) | [Sheet](families/woven/contact-sheet.png) |
| Diagonal braids | [10 designs](gallery.html#braids) | [PNG/SVG index](families/braids/README.md) | [Sheet](families/braids/contact-sheet.png) |
| Contour maps | [10 designs](gallery.html#contours) | [PNG/SVG index](families/contours/README.md) | [Sheet](families/contours/contact-sheet.png) |
| Interference | [10 designs](gallery.html#interference) | [PNG/SVG index](families/interference/README.md) | [Sheet](families/interference/contact-sheet.png) |
| Radial geometry | [10 designs](gallery.html#radial) | [PNG/SVG index](families/radial/README.md) | [Sheet](families/radial/contact-sheet.png) |
| Spiral fields | [10 designs](gallery.html#spirals) | [PNG/SVG index](families/spirals/README.md) | [Sheet](families/spirals/contact-sheet.png) |
| Truchet tiles | [10 designs](gallery.html#truchet) | [PNG/SVG index](families/truchet/README.md) | [Sheet](families/truchet/contact-sheet.png) |
| Flow fields | [10 designs](gallery.html#flow) | [PNG/SVG index](families/flow/README.md) | [Sheet](families/flow/contact-sheet.png) |
| Crystal waves | [10 designs](gallery.html#crystals) | [PNG/SVG index](families/crystals/README.md) | [Sheet](families/crystals/contact-sheet.png) |
| Digital fractals | [10 designs](gallery.html#fractals) | [PNG/SVG index](families/fractals/README.md) | [Sheet](families/fractals/contact-sheet.png) |
| Maze textiles | [10 designs](gallery.html#mazes) | [PNG/SVG index](families/mazes/README.md) | [Sheet](families/mazes/contact-sheet.png) |
| Orthogonal routes | [10 designs](gallery.html#circuits) | [PNG/SVG index](families/circuits/README.md) | [Sheet](families/circuits/contact-sheet.png) |

## What was selected and checked

- **120 distinct PNGs**: ZXing 120/120, OpenCV 120/120, exact full-symbol payload and detection extent checked. All encode the exact root URL above.
- All 120 matrices independently reconstructed from raw data + Reed–Solomon parity + mask using Nayuki qrcodegen, independent of the generating QR arithmetic.
- Every saved PNG and SVG is audited against its matrix; no introduced codeword errors or overwritten function modules. See [audit.json](audit.json) and the [manifest](manifest.json).
- Versions 12–15, ECC L, four candidate masks per composition. Each family changes scale, geometry, topology or mathematical construction; variants are not just different random seeds. One visually redundant flow target was replaced before release, and its original candidates remain in the archive.
- Whole-matrix target agreement ranges **81.9–85.0%**. This measures artwork resemblance, not scanning reliability. Fixed structures count toward this score.
- 484 candidates were evaluated, 479 passed both decoders. Only verified choices are presented as finished designs. [All candidate matrices and evidence](archives/all-candidates.zip) are retained, including failed or superseded experiments.

These are artistic, exact-parity QR codes with **noncanonical padding after the terminator**. Masks are selected for appearance and observed decoding rather than minimum standard visual penalty. Successful decoding and exact parity do not establish formal ISO conformance or universal scanner compatibility. This batch has not been qualified with phone cameras, printing, perspective, glare, blur or damage. ECC L leaves less damage margin than higher levels. Fractal texture is not recursive scannability; radial artwork is not a claim of exact rotational symmetry.

The method and alternatives are explained in the [original research notes](../research-full-field/README.md), including conventional numeric-fragment QArt as a possible later route. No DNS, subdomain, redirect or website mutation was performed for this collection.

## Reproduce

All heavy generation was performed on the native WSL filesystem. Included standalone JS needs only Node; rebuilding it from TypeScript uses pinned esbuild 0.28.2.

~~~sh
npm ci
npm run build
mkdir -p work
node src/generate.mjs
# Existing workspace environment; never use system Python for packages.
source ../.venv/bin/activate
python src/validate.py
node src/build-notes.mjs
node src/build-gallery.mjs
python src/audit.py
~~~

For a fresh checkout, create and activate a local virtual environment and install the pinned packages in [requirements.txt](requirements.txt). Existing Panton font assets in ../patterns/fonts are required for the contact sheets. Normal generation produces 480 candidates with the current distinct patterns. The delivered archive also retains four replaced initial flow candidates, for 484 total. <code>--repair flow-04</code> generates that composition separately; validation prefers a repair over superseded candidates. <code>--rescue</code> is available only when work/missing.json lists designs with no dual-decoder candidate; no rescue was needed here.

The [manifest](manifest.json) contains codewords, exact URLs, masks, dimensions, scores, PNG hashes, decoder results and tool versions. Per-design data.json also contains base64 module/target arrays (one byte 0/1 per module). The ZIP retains every generated candidate in this format, so unselected options can be reconstructed without guessing. Contact sheets are previews; use individual PNG/SVG exports to scan or print.

## Source and attribution

Original full-field solver and mathematical targets: [bit-field.ts](src/bit-field.ts), [patterns.mjs](src/patterns.mjs), [generation script](src/generate.ts). QR arithmetic: pinned MIT furious-qr commit 456a598a3630bb0b1d74421c1f9f0c769b542608; [provenance](src/core/UPSTREAM.md) and [license](src/core/LICENSE-furious-qr.txt). Original collection additions are MIT; Panton assets retain their separate existing license. Independent validation uses qrcodegen, zxing-cpp, OpenCV, Pillow and CairoSVG; versions are recorded in the audit.
