# Zint 2.16.0 + QQQ patchset p1 Provider identity: `zint-2.16.0-qqq-p1`. This is **not unmodified Zint 2.16.0**. The CLI's upstream version output remains 2.16.0; the wrapper also requires the fixed patchset identity file, and the host pins the qualified immutable image. The original tagged archive remains untouched and accompanies the applied-source archive, input/patch/preimage/postimage hashes, build script and compiler/package records. `inputs.sha256` is the complete ordered-input integrity inventory. Apply order (build aborts unless every source preimage and postimage matches): 1. `zint-dotcode-local.patch`: **LOCALLY AUTHORED EQUIVALENT BACKPORT**, not a downloaded upstream patch. Changes only `length > 2` to `length >= 2` in the non-GS1, no-ECI, initial two-digit condition in `backend/dotcode.c`. This is semantically equivalent to the already-reviewed correction in upstream [eea16e1a89d1ca32326d78349a7007ab45524c83](https://github.com/zint/zint/commit/eea16e1a89d1ca32326d78349a7007ab45524c83). It restores the FNC1 codeword used to identify plain numeric DotCode content. 2. `zint-raster-applied.patch`: exact three `backend/raster.c` source hunks from the retained, verbatim `zint-raster-92e9400.patch`, upstream [92e94009b2b4db0db9a707f7e33c88b7b1fae5cd](https://github.com/zint/zint/commit/92e94009b2b4db0db9a707f7e33c88b7b1fae5cd). Replaces the midpoint circle implementation with the MIT-derived routine and corrects the line algorithm attribution. Binary MaxiCode PNG fixture hunks are excluded: this native build disables PNG. The compiled native MaxiCode implementation does change, although the QQQ wrapper continues routing MaxiCode exclusively through its unchanged Okapi provider. 3. `zint-notices-local.patch`: explicit local adaptation of the same upstream attribution change to the tag's older freeform `debian/copyright`. The upstream copyright hunk targets a later machine-readable file and cannot apply to this tag. The original text is preserved and a BSD/MIT attribution addendum plus complete MIT notice is appended. `MIT-ZINGL.txt` and the exact upstream `zint-copyright-92e9400.txt` accompany it. This adaptation is not described as a byte-identical full upstream patch. The build verifies `inputs.sha256`, all three source preimages, applies patches with `--batch --forward --fuzz=0`, then verifies all postimages before compiling. It packages both `zint-2.16.0.tar.gz` and the complete `zint-2.16.0-qqq-p1-applied.tar.gz`, so recipients can inspect or rebuild the actual modified source. No local modifications are omitted from corresponding source. Regression provenance: upstream reviewed test evidence supplies `00` codewords `6B 00` (default), `6B 00 6A` (13 columns), and 35 words beginning `6B 00` followed by padding `6A` (200 columns). The `12` expectation `6B 0C` with equivalent padding is an independently derived regression from the same numeric Code C rule, **not an observed upstream vector**. The exact-image launcher checks these decimal debug codewords through fixed trusted test-only arguments, renders both payloads, and verifies their PDF/ZPL embedded pixels. Production options never expose verbose/debug mode. No invented module-grid vector is claimed for these cases. Acquisition record: ordinary and explicitly approved download-to-file attempts for the exact DotCode `.patch` URL both returned: `Content containing PDF or PS header bytes cannot be rendered from this domain for security reasons.` This was a content/network-layer response to PowerShell `Invoke-WebRequest`, not an automatic approval-review rejection. No alternate endpoint, encoding or transport was used to retrieve that blocked artifact. The local equivalent patch above was explicitly authorized using the source correction already reviewed.