script/lib/icons.js draws the mark from geometry read back out of the committed PNGs, since the coordinates were never recorded, and writes each PNG with node's own zlib. `make icons` runs it and leaves alone a file that already holds the drawn image. tests/icons.test.js requires each committed file to hold exactly that image: the same IHDR and every pixel. The compressed bytes are not compared, because node's bundled zlib does not compress as the stock zlib that made the committed files did; the decision is recorded on the issue. build.js copies the manifests from MANIFEST_SOURCES instead of naming the two paths a second time. Model: opus-5-5