Perunlight · Svarn Audit Pack 0.1.1

Check the export.
Show what changed.

Turn a folder of Svarn PNGs into a readable record of file checks, warnings and changes before you hand it over.

Offline command-line toolPython 3.10+Linux verified scopeNo account or activation

Your first result, with practice files

You need the purchased ZIP and a working Python 3.10+ command. Extract the ZIP, then open a terminal in its extracted folder. The free guide pack contains static examples only; audit.py is in the buyer package. Python, Aseprite and the separate Svarn preview are not included.

1

Check one export

Run the command below from the folder containing audit.py. It reads the manifest and its three PNGs without changing them.

python3 audit.py examples/first-export --format text

Expected: Export checks passed and three PNGs checked. These small practice files were made by a test harness, not Aseprite.

2

Compare the two practice exports

Create a readable HTML report, then open report.html in your browser.

python3 audit.py examples/first-export --compare examples/second-export --format html > report.html

Expected: added new_badge.png, removed old_badge.png, changed idle_02.png.

The shell's > operator creates or replaces the report file. Choose a new filename to keep an old result. Never redirect output into an input manifest or PNG.

Actual example report showing three checked PNGs and one added, one removed and one byte-changed file
Actual Chrome 152/Linux screenshot of the tool's HTML output for the included fictional exports. “Changed” means different file bytes; a metadata-only edit can count as a change.

Use your own Svarn exports

Keep each export in its own folder, with svarn-manifest.json beside the PNGs. Complete the export in Svarn first. Quote any path containing spaces.

python3 audit.py "/path/to/svarn-export" --format text

For a revision comparison, put the older folder first and the newer folder after --compare. Both must pass the supported checks.

python3 audit.py "/path/to/old-export" --compare "/path/to/new-export" --format html > revision-report.html

Omit --format to get the original JSON format with complete SHA-256 hashes. Use --format text for a terminal summary or --format html for a self-contained, printable report. Exit code 0 means the checks passed; 1 means the audit failed.

Reports contain filenames and hashes. Review them before sharing. No files are uploaded. HTML reports need no scripts, external fonts or internet connection.

Read the result with confidence

Passed

The listed PNGs passed the supported file checks. Review the artwork in Aseprite as well; this is not a visual comparison with your source.

Warnings

Exporter warnings stay visible. Passing file checks does not resolve those warnings. Review the original manifest before delivery.

Changes

Added and removed describe names present in only one export. Changed describes same-name PNGs with different bytes.

Actual report retaining an exporter warning beside a passed file check
Actual report from a synthetic warning fixture. A passing file check keeps the exporter warning visible instead of concealing it.

Open File fingerprints · first export to inspect the hashes. They identify bytes, not authenticity or quality. Print or save the report to PDF using your browser; the print layout includes the fingerprints even when the disclosure is closed on screen.

If a check needs attention

Actual narrow-screen failure report naming the missing idle_02.png file
Actual Chrome/Linux report at a narrow viewport, with a deliberately missing practice PNG. It does not claim a successful audit.

A failed check stops the comparison. Text and JSON mode explain the failure on standard error. HTML mode also writes a visible failure report to standard output.

Missing or corrupt PNG

Check the named file. Re-export with Svarn into a new empty folder, resolve any exporter failures, then audit that new folder. Do not edit hashes or the manifest to force a pass.

Extra PNG or unsafe filename

The audit rejects PNGs that are not listed in the manifest and names with path separators, leading dots or control characters. Use an intact export folder rather than mixing exports.

Invalid or incomplete manifest

The manifest must be a schema-1 JSON object with valid positive integer dimensions, failures and warnings arrays, and a complete status. Nonempty failures or inconsistent warning status are rejected. Re-export with Svarn; do not substitute a screenshot or rename another JSON file.

Python command not found

Check that Python 3.10+ is installed and available as python3. This package does not install Python. Run python3 --version to confirm your environment.

Know exactly what was checked

Supported checks

Manifest-listed file presence, dimensions, PNG chunk CRCs and order, critical chunks, compressed streams, filters, indexed-colour bounds and SHA-256 hashes for the supported PNG subset. A comparison identifies added, removed and byte-changed PNGs.

Boundaries

  • Svarn schema 1; 8-bit, non-interlaced RGB, indexed or RGBA PNGs.
  • Manifest up to 2,000,000 bytes; 1–10,000 listed PNGs; 64 MiB and 16 million pixels per PNG.
  • Unique plain PNG basenames only. Manifest and PNG symbolic links are rejected. Other non-PNG files in the export folder are not checked.
  • This is not a full PNG conformance validator. It does not fully decode artwork or compare pixels with an Aseprite source.

Verified evidence

Linux/Python checks and Chrome 152 report views. One saved fictional Aseprite Linux export was replayed through valid, corrupt, missing-file and byte-change cases. The screenshots here show synthetic audit examples. Other platforms, real customer workflows, physical printing and new native Aseprite installation were not verified for this update.

The editable source, regression tests and a deterministic ZIP builder are included with the buyer package. Run python3 tests/run.py to check the included fixtures; run python3 build-package.py /path/to/new-output to rebuild the buyer and guide archives. Choose an output folder outside the extracted package.

Licence and original preview rights remain unchanged. No activation or account is required. For support, reply to the seller contact on your purchase receipt with version 0.1.1 and a description of the problem; no response time is promised.