RestoreProof

Tagline: Check restored bytes before trusting a backup. Local evidence, explicit gaps, no uploads.

Inspiration

A familiar folder name, a completed copy operation or a matching file count does not establish that restored files contain the expected bytes. A damaged file can have the same size as the original. RestoreProof focuses on the moment before someone trusts a restored copy and retires the last useful original.

What it does

Choose an explicit source folder, export a reference manifest, then inspect a restored folder against it. The browser reads selected files locally and compares SHA-256 and byte counts. A result table separates matched, changed, missing and unexpected files. Expand a row's evidence to inspect expected and observed hashes; export the result as JSON.

The streaming Python CLI supports larger media files and makes excluded symlinks, private/hidden entries and read errors explicit. Any incomplete inspection prevents a verified result. Neither version repairs, deletes, transmits or silently changes originals.

The included broken-backup scenario is synthetic. It contains one same-size corrupted file, one omitted file, one unexpected file and one exact match. The repaired scenario contains three exact matches. These demonstrate inspection behavior; they are not field reliability measurements.

How it was built

New implementation on October 19, 2026: static HTML/CSS/JavaScript, browser File APIs and Web Crypto; Python standard-library streaming hashes, schema validation and a command-line interface. There are no paid APIs, external runtime dependencies, analytics or application upload endpoints. A Content Security Policy prohibits outbound application connections. A reference manifest remains a trust input: this project does not sign or authenticate it.

Codex generated the source, fixtures, tests, copy and documentation. Image Gen provided a design reference. UI controls, hashing and results are implemented as code; the application is not a screenshot. No earlier contest application's source was reused. No claim is made that the account owner personally authored every line or has completed an unobserved learning exercise.

Validation

  • Ten Python scenario tests pass: exact copy, same-size corruption/missing/extra, symlink exclusion, hidden-file coverage, malformed manifests, Unicode filenames, CLI report output, special-file/symlink manifest refusal, bounded oversized input and clean deeply nested JSON errors.
  • Nine JavaScript checks pass, including a SHA-256 known answer, read-error handling, oversize and hidden-file avoidance, unsafe-manifest rejection, filename-as-data handling, and Python/browser manifest interoperability.
  • A CLI snapshot and comparison were run against synthetic folders: snapshot returned exit 0; the damaged restore returned exit 1 with the intended distinctions.
  • The actual browser file chooser selected those synthetic source and restored folders. The same discrepancies appeared. A downloaded JSON report was reread and compared with the CLI report.
  • Broken and repaired demos were clicked in the browser. A 390 CSS-pixel iframe was used for a responsive layout and interaction check; this is not a physical-device test.
  • A reproducible single-file build has three passing tests for exact CSP hashes, resource independence and deterministic output. Direct file-URL execution remains unverified because the embedded browser blocks that protocol; no alternate-surface workaround was attempted.

Why this approach

Checksum verification already exists in established tools. RestoreProof does not claim to invent it. Its project focus is an approachable, local inspection workflow with visible uncertainty and portable evidence, including a streaming fallback when browser coverage is insufficient. It does not replace a backup system.

Limits and responsible design

Byte equality proves only equality against the supplied reference for the inspected file contents. It does not prove provenance, malware absence, filesystem metadata, empty-directory coverage, independent backups or successful application recovery. Browser folder pickers may omit files or resolve links. The CLI is not an atomic snapshot and should not scan actively changing or adversarially controlled directories. No real backup deletion was performed or recommended by the demo.

Next steps

Planned, not implemented: independently authenticated reference manifests, application-specific restore drills and controlled usability testing with media creators. No users, savings, accuracy on real-world backup failures or deployment results are claimed.

Try the synthetic restore drill

  1. Open the source repository and follow the README to serve the browser app locally. No account or API key is required.
  2. Click the broken-backup demo: inspect the same-size corruption, missing file and unexpected file. Expand the evidence to compare SHA-256 values.
  3. Click the repaired demo: three inspected files match the reference. Export and inspect the JSON report.
  4. For real selected folders, create a reference manifest first, then compare a restored folder. Keep originals; this prototype does not establish that deletion is safe.

Source and build instructions: https://github.com/estona815/restoreproof

Built With

Share this project:

Updates

Submission history