# jdt qr identity

Six blue, full-field marks link exactly to `https://qr.jdt.engineering`. Panton Bold lettering is stacked into a whole-field target; three variations are solved at QR versions 4 and 6. The earlier logos are preserved.

The affine padding solver adjusts unused data bits and recalculates valid Reed–Solomon parity. All target weights are positive. Smooth uses 82%-width data cells over the letter target; all function cells, including white separators, remain solid. There is no central image cutout or interior alignment square.

96 candidates were evaluated. 86 passed every required condition; the six selected marks each passed ZXing and OpenCV at two, three and eight pixels per module, and at the smallest size with 0.35px Gaussian blur. Each matrix was independently reconstructed with Nayuki qrcodegen; centers and all structural pixels were checked. These are digital checks, not a physical-phone guarantee.

The header uses `stack-v4` at 82 CSS pixels (41 modules including quiet zone, two pixels each). Large SVG/PNG exports and every candidate matrix are retained. Open `gallery.html` directly for offline browsing.

## Reproduce

Use the existing parent virtual environment; never install into system Python:

```sh
source ../.venv/bin/activate
python src/prepare.py
/home/jim/code/qr-art-core-work/node_modules/esbuild/bin/esbuild src/generate.ts --bundle --platform=node --format=esm --outfile=src/generate.mjs
node src/generate.mjs
python src/validate.py
node src/gallery.mjs
```

The generator reuses `heading-qr-v2/src/bit-field.ts` and its pinned QR core; see that directory for provenance and license. Fonts retain their existing separate license.
