Skip to content
Code Recycle

Component · for humans & their agents

Backup Restore Proof

verified · first-partyactively maintained$0 during beta (was $69)

"The job succeeded" is not "you can restore." Judges backup evidence so that we don't know can never be reported as we're covered.

by ringbuffer · Code Recycle admin

Get it free — beta

Every claim on this page is refundable if it is untrue — refund policy.

19 tests · 4/4 deliberate defects caught. Zero runtime dependencies.

Four green nights that cannot be restored

Every one of these produces a passing dashboard:

  • pg_dump exits 0 having written schema only, because the table filter matched nothing. The
  • file is valid. It restores cleanly. It contains no rows.
  • The dump is 40 bytes and gzip-valid. Size was never compared to yesterday's.
  • Backups have run nightly for a year and nobody has ever restored one. The format changed
  • eight months ago.
  • Retention deleted the last good copy, because retention counts backups, not **verified
  • backups** — and the corrupt ones are newer, so the naive policy keeps exactly the wrong set.

unverified is not verified

That distinction is the module.

  assessBackup(backup, previous, { now });
  // { verdict: "unverified",
  //   reasons: ["never restore-tested — this is an untested claim, not a working backup"] }

| verdict | meaning | |---|---| | verified | restored recently, and the restored row counts matched | | unverified | never restore-tested, or the last test is too old to be evidence | | suspect | size collapsed, or the restore "succeeded" with missing rows | | failed | the job failed, or a restore test failed |

A restore of an empty dump succeeds. So a passing restore test does not clear a size collapse — suspect survives it, and row counts are compared between backup and restore when both are available.

RPO, and the two hours it hides

Measured from the data cutoff, not job completion. A two-hour dump whose RPO is measured from when it finished reports a recovery point two hours fresher than it actually has. Nothing errors; the number is simply wrong in the optimistic direction. When no cutoff is recorded, the result is returned with rpoImprecise: true and a reason saying so, rather than a confident wrong number.

Retention that counts the right thing

  safeToDelete(assessments, { keepVerified: 1 });
  // { deletable: [], held: [{ id: "old", why: "…nothing proven to fall back on" }] }

It will not propose deleting anything if doing so leaves fewer than keepVerified verified copies — including refusing to delete unverified backups when no verified copy exists, which is the case where a date-based policy does the most damage.

What it does not do

| not included | why | |---|---| | Taking backups, or running restores | it judges the evidence your system already produces | | Talking to S3/RDS/pg | no transport, no credentials, no cloud SDK | | Deleting anything | safeToDelete returns a proposal. A tool that judges backups and also deletes them is one bug away from being the incident |

Thresholds (50% size drop, 30-day restore-test freshness, 1KB floor) are defaults and arguable. Every assessment carries reasons so the judgement can be checked rather than trusted.

01Capabilities

Does

  • + Data retention controls
  • + Backups
  • + Reliability

Doesn’t

  • No exclusions declared

02Requirements & stack

Depends on

No declared dependencies

Credentials needed

None declared

Stack

03Community

No endorsements yet

No verified confirmations yet — be the first.

Confirmations come from verified purchasers, installers, vetted reviewers, or an installation outcome your org reported through the agent tools. They grade quality — security is verified separately, and community votes can never override the security gate.

Open an issue

Sign in to confirm — weight comes from verified usage, not vote count.

Nobody has reported anything yet — a success counts as a report too.

04Trust Passport

Full passport →
–/100

0/0 automated components pass. An automated score is never a security guarantee.

✓ Verified · first-partyreviewed Sep 20, 2026 · re-verification due Dec 19, 2026
  • publisher identity Publisher status verified; 1 verification(s) on file
  • malicious pattern scan No known malicious-behavior patterns across 7 source file(s) plus listing text
  • capability contract All 0 observed capability reference(s) match the declared manifest
  • agent safety scan No injection patterns in agent-readable content
  • provenance No release signature or provenance attestation
  • behavioral sandbox Not performed in this environment — requires the production isolated runner (docs/sandbox-requirements.md). No untrusted code is ever executed on the application host.

Every listing must pass this review before it can be sold, and it is re-run on every release. Verification describes what we checked — it is not a guarantee that the software is safe.

VersionChannelReleasedNotes
0.1.0stableAug 12, 2026Initial extraction.