Skip to content

Mememage Provenance v0.1.4

Choose a tag to compare

@sememtac sememtac released this 10 Jul 05:45
· 12 commits to main since this release

Rebuilds the desktop apps against current code. The previous release (v0.1.3, July 6) predates everything below, so every download until now shipped July-6 code.

Decoder

  • Half-size copies now decode. The bar's M/Y/C anchor bands shrink with the image; at 0.5× they hit 4px and JPEG chroma subsampling smears them past the strict colour cutoffs, so the decoder gave up before reading a single bit. A soft channel-ordering fallback recovers them. Strict predicates still run first, so pristine images are unaffected, and false anchors are rejected by the frame's magic bytes + CRC-16 + Reed-Solomon. Ported to both the Python decoder and the browser decoder (codec.js).
  • Honest downscale envelope, measured on real images rather than synthetic ones: images ≥ ~1000px wide survive a resize to 0.8× plus one recompression (59/60 round-trips across three resamplers and JPEG q70–q80). Beyond that, nothing is promised — survival depends on the image, the resampler, and whether it was recompressed, and it is not monotone in scale.

Chain integrity

  • chunk_state is a cache; the records are the truth. New site_pack reconcile rebuilds the star counter, decoder chunk index, and heart star by walking the chain from genesis and counting only records whose content hash verifies. site_pack status now reports drift out loud instead of printing a number it knows is false.
  • Root cause of the drift it repairs: the test suite wrote into the operator's real chain (chains.CHAINS_ROOT is bound at import, so patching MEMEMAGE_ROOT alone still resolved to the live chain). Twelve hardcoded ~/.mememage/received paths now resolve through chains.received_dir(), and tests/conftest.py redirects both roots and fails the run if the real chain state changes.

Documentation

  • Two claims retracted because the code doesn't support them: "below 0.5× nothing decodes at any size" (a lossless 0.35× copy decodes) and "a bare bar cannot be transplanted onto another image" (true only on textured content — flat, dark, bright, or noisy content decodes from the 2 data rows alone, with no reference row).
  • AI-generated framing removed from published text. Zenodo depositions no longer describe the image as AI-generated, and the celestial certificate's docstring no longer implies it. Mememage is provenance for any image.

Downloads

Unsigned builds for macOS, Windows, and Linux attach below. Install via mememage.art/install, which sidesteps Gatekeeper/SmartScreen — a direct download needs a manual unblock.