Counts show all available guides. Filters combine to narrow your results.
Build a workflowGuide
Make a sample backup and prove you can restore it
Archive five tiny synthetic files, restore into a fresh folder and compare actual bytes with independent controls.
Illustrative resourceNot tool-testedPeople learning why a backup needs an observed restore test before relying on it
What you’re working towards
A real 1,125-byte sample ZIP, inspectable fixed-fixture utility, original-byte ledger and actual restore evidence for five files/66 bytes, with every original unchanged.
Your choice also saves this guide’s current worked-example checkmarks. Only this browser; no account or sync. View saved guides
Saving needs JavaScript. Reading and downloading this guide does not save it.
Included example · illustrative ZIP file
Download the actual sample archive
A 1,125-byte ZIP containing five exact synthetic files plus a SHA-256 manifest. Nested paths, Unicode, an empty file and four binary bytes are intentional.
Not tool-tested. Review and adapt before using it for a real project.
Inspect, sample creation, pack, restore and read-only comparison commands, platform limits and partial-new-output disclosure.
Make a start
One step at a time.
5 steps
Start with the synthetic worked example or other non-sensitive inputs. Run one prompt at a time in your chosen AI tool. Replace any bracketed placeholders with the requested material, check each reply, and supply the source or earlier outputs that step needs. Paste them again if the tool lacks that context.
Set up the worked example
Open
Open a fresh text-AI chat and a plain-text editor. This exercise accepts only its five tiny synthetic files; it cannot back up your own files. Use an existing owned disposable folder, with no real data, and an already-installed supported POSIX Python 3.10+ runtime if available. If you cannot inspect code or use a suitable terminal, stay with explanation and mark execution pending. Keep all inputs, contents and directories stable during a run; concurrent modification is unsupported.
Add the sample
Download the nine sample-backup files into that disposable folder and reopen the text/code files in the editor. Keep the original ZIP unchanged; do not unpack it over anything. Replace step 1’s placeholder with the complete sample-backup-fixture.json and all of ‘The starting point’ (Synthetic input). For step 2 provide the entire saved sample-backup.py and fixed contract; use sample-backup-usage.md for the exact commands. ‘The intended result’ (Illustrative output), sample-backup-result.md and restoration evidence are historical comparison results, not proof of your run. Step 3 needs your chosen disposable folder, review status and actual platform/tools. Before writes, complete the required user code review and independent implementation review; a chat explanation is not that review. Step 4 needs the complete independent checker and actual original/restored files, not just the ZIP listing. Run locally if permitted and give the chat the exact command/output; naming local paths does not let it read them. Step 5 needs complete tests/utility/fixture and a separate existing disposable scratch folder. Return to the sample chat for the original advanced exercise with complete source, exact file hashes, actual run/error outputs and tools; in a new chat provide all again. Leave unavailable operations not run.
Start with the synthetic example, then adapt each prompt to your task.
01
Define the small recovery claim
Use the full five-file synthetic fixture. Name what must be recovered, keep originals and avoid adding real files. The fixed contract makes a failed comparison meaningful.
Your starting prompt
Use only the complete synthetic fixture below. List all five exact relative paths, original bytes, sizes and SHA-256 expectations. Explain the Unicode filename, empty-file and binary cases. Distinguish a created archive from a verified restore. Do not execute anything, scan directories, use real files, broaden the supported archive format or promise production reliability. Identify missing information before implementation.
COMPLETE INPUT:
[paste sample-backup-fixture.json and the fixed contract]
Expect
A five-row recovery specification with exact paths, bytes, lengths and SHA-256 values, without executing anything.
Check
The payload lengths are 16, 16, 30, 0 and 4, totaling 66 bytes. notes/café.txt uses NFC and UTF-8; text has LF newlines; marks/pattern.bin is hex 00017fff. The fixture JSON gives every byte. SHA-256 compares byte identity; it does not establish a general backup strategy.
If it differs
If an entry is summarized, guessed or replaced with a real file, stop and restore the exact synthetic specification from the supplied fixture. A different file set, even below the size limit, is outside this utility’s contract.
02
Inspect the archive and validation order
The inspect command reads the whole bounded pack without creating output. All member metadata and bytes must pass before restore begins.
Your starting prompt
Review sample-backup.py and the supplied original archive contract. Trace the physical archive limit, complete names/order, duplicate and path rejection, regular-file metadata, flags, sizes, manifest checksums, known bytes and final canonical encoding comparison. Confirm these checks precede any restore-directory creation. Explain why this edition rejects other ZIP encodings, even ones with the same content. Show the read-only inspect and restore-preview commands. Do not claim they ran unless execution was actually available.
CODE AND CONTRACT:
[paste]
Expect
A trace of all validation before output creation, plus read-only commands and honest execution status.
Check
From the disposable downloads folder, the inspected command is python3 -B sample-backup.py inspect --archive ./sample-backup.zip. It should print written: false, five payloads/66 bytes and the 1,125-byte archive. All names/order, metadata, flags, sizes, manifest, hashes, known bytes and exact canonical ZIP encoding must pass before restore creates a directory.
If it differs
If the archive/code is missing, provide the actual complete file through a supported permitted tool; do not pretend pasting a filename supplies its bytes. Stop on a refusal or unsupported platform. An alternate ZIP encoding is intentionally refused, even with matching payloads; do not weaken checks or substitute a generic extract command.
03
Create sample originals and choose a fresh destination
After code review, the explicit sample command creates only known synthetic bytes. The optional pack step writes a new archive. Restore requires a new sibling path and an explicit --write.
Your starting prompt
Give the preview commands for create-sample, pack and restore in my existing owned disposable folder. Keep the downloaded sample-backup.zip unchanged, create only the fixed sample-originals directory and choose a fresh sibling sample-restored. Explain which command needs --write and what remains read-only. Refuse existing names, symlink paths, missing parents and source=destination. Do not scan, install, upload, delete or touch real files. Explain that an I/O failure can leave partial NEW output and that no rollback is attempted.
MY EXISTING DISPOSABLE FOLDER AND REVIEW:
[paste]
Expect
Reviewed previews followed, only when permitted, by newly created synthetic originals and a distinct fresh sibling restore directory. An optional new archive remains separate from the original download.
Check
Follow sample-backup-usage.md from the chosen downloads folder. Preview create-sample --destination ./sample-originals, then add --write only after review. Preview restore with --archive ./sample-backup.zip --source ./sample-originals --manifest ./sample-backup-manifest.sha256 --destination ./sample-restored, then add --write only after review. Each uses python3 -B sample-backup.py first. Keep all paths/contents stable. Existing names must be refused; originals and restored are siblings.
If it differs
If a name exists, choose a genuinely absent sibling basename and update every later command consistently; never delete or overwrite to make it available. Keep the original ZIP. If a write fails, stop, retain and report partial NEW output, and preserve originals; do not promise rollback. Preview success does not reserve a destination. If required review or tools are absent, leave writes pending.
04
Compare every restored byte independently
Read the actual original and restored files. The independent checker uses literal byte controls, including the empty and binary files, rather than trusting the restore utility.
Your starting prompt
Inspect sample-backup-check.py independently of the restore utility. If an authorized local tool is available, run it against the unchanged original archive, separate manifest, actual sample-originals and actual sample-restored folders. Verify each path, byte length, literal hex and SHA-256. Report unchanged originals and exact restored-byte equality, or the precise mismatch. Do not substitute a ZIP listing or a proposed output. Do not repair originals or output to force a pass.
FILES AND ACTUAL AVAILABLE TOOLS:
[paste]
Expect
A read-only comparison of the actual original and restored files against separately transcribed expected bytes, or an explicit pending result if no restore exists.
Check
Run the inspected command python3 -B sample-backup-check.py --archive ./sample-backup.zip --manifest ./sample-backup-manifest.sha256 --originals ./sample-originals --restored ./sample-restored, adjusting only the chosen new directory names. Read its actual five rows: original/restored hex, lengths and hashes must agree with the independent fixture. Restore has five payload files; the 407-byte manifest is not a sixth restored file.
If it differs
Save the actual checker output as a new text report and reopen it, without overwriting source evidence. On any mismatch, preserve original and failed output and report the exact path/bytes; never repair either to force a pass. A claimed success, archive listing or proposed directory is not a byte comparison. Without file access, mark this unperformed.
05
Challenge invalid inputs without touching originals
The test suite retains new isolated synthetic copies in a chosen disposable folder. A rejected input must not create restore output; a write failure has a different, disclosed result.
Your starting prompt
Review the bundled synthetic suite, then run only with suitable authorized local execution in an existing disposable scratch folder. Preserve downloads and originals. Challenge traversal, absolute/aliased/duplicate names, missing/extra members, symlink/nonregular metadata, size limits, corrupt payload/manifest, same-length and self-consistent forged data, existing destinations and a destination appearing after preview. Check each invalid case leaves no restore output. Separately inject a mid-write error and report any partial NEW output without cleanup or rollback claims. Record exact code/archive hashes, environment/date and only tests actually executed. Keep consumer-AI execution and real backup reliability separate.
BUNDLED SOURCE AND AVAILABLE TOOLS:
[paste]
Expect
A bounded synthetic rejection-test report tied to the actual code/archive hashes and runtime, with test copies retained.
Check
After reading sample-backup-tests.py, use python3 -B sample-backup-tests.py --scratch-parent ./my-existing-test-folder only when that separate existing disposable folder and permitted runtime are available. The suite creates a fresh isolated directory there. Invalid inputs must leave no restore output; the injected mid-write failure deliberately leaves disclosed partial NEW output. No existing download or original is repaired or removed.
If it differs
A test failure is evidence to keep. Record the exact command/error and retained folder; do not run cleanup, scan other folders, install tools or remove safety checks. Keep platform gaps, unsupported concurrent changes, storage/crash durability and independent implementation review explicit. A sample pass does not protect real files.
Optional: improve the result
Separate validation refusal from a failed write
An invalid pack must fail before output exists. A storage error after creation may leave new partial output. Audit both conditions rather than hiding one behind a broad success label.
Advanced prompt
Independently audit the fixed fixture code and its rejection tests without broadening the format. Explain the exact point where validation ends and output begins. In isolated disposable copies, check corrupt or forged packs, existing targets and unsupported platform operations. Separately simulate a write failure and show preserved originals plus any partial NEW output. Do not delete files, install tools or use real directories. Identify untested concurrent-filesystem and storage-failure assumptions. Give a narrow review conclusion for this exact hash, not a universal security claim or production backup recommendation.
SOURCE, HASHES AND OBSERVED TESTS:
[paste]
Optional: use your own input+
Run the exact sample in your own disposable folder
Only the location and available checking tools change in this route. Do not substitute personal files, paths inside the archive, content, manifest or ZIP format. Use an existing owned disposable folder with no real data; keep input files, contents and directories stable. Download and reopen the complete supplied files, preserve originals, and start a separate chat with the prompt below. For a code review, send: “Review the COMPLETE SAVED sample-backup.py below against the exact five-file contract we just confirmed. Trace physical and uncompressed limits, exact names/order, paths/duplicates, regular metadata/flags, declared and actual sizes, manifest, independently known bytes and final canonical archive comparison before any restore output. Keep descriptor-relative/no-follow requirements; no broad extract-all or weakening for another platform. Explain the read-only inspect command and preview commands; do not claim execution. COMPLETE REOPENED UTILITY AND FIXED CONTRACT: [paste full source and full contract]. ACTUAL PLATFORM/INSTALLED PYTHON: [state or unknown].” Read the source yourself and obtain the required independent implementation review before any write; record what remains pending. If the reviews and compatible installed runtime are available, work from the disposable downloads folder. First inspect with python3 -B sample-backup.py inspect --archive ./sample-backup.zip. Then send: “Use only MY EXISTING OWNED DISPOSABLE DOWNLOADS FOLDER for this exact synthetic fixture. Give previews for create-sample to an absent sample-originals, optional pack to a different absent sample-created.zip, and restore from the unchanged sample-backup.zip to absent sibling sample-restored. Explicit --write is required for creation; previews and inspect do not create files. Before each write confirm that required reviews are complete and the chosen name is still absent. No scans, real files, overwrite, deletion, cleanup, install, network or upload. Keep all chosen inputs, contents and directories stable; concurrent modification is unsupported. Explain disclosed partial NEW output on an I/O failure and no rollback. ACTUAL DISPOSABLE FOLDER, PLATFORM, REVIEW STATUS AND INSPECT RESULT: [provide]. COMPLETE UTILITY AND FIXED CONTRACT: [provide again].” Use the exact commands in sample-backup-usage.md; if choosing different absent sibling names, change every later reference consistently. Review each preview before adding --write. The optional pack uses --archive ./sample-created.zip; restore uses the original ./sample-backup.zip. Do not retry into an existing or partially written destination. If execution is unavailable, stop at explanation with writes not run. After an actual successful restore, send: “Review the COMPLETE SAVED sample-backup-check.py independently from the utility. It must read only named originals, restored files, unchanged archive and separate manifest and compare exact literal bytes, lengths and hashes, without writes/scans/repairs. Supply the command using MY actual directory names. Run only if authorized tools can access those exact local files; otherwise I will run it locally and paste its complete output. Do not infer access from filenames. COMPLETE CHECKER: [paste]. ACTUAL ARCHIVE/MANIFEST/ORIGINAL/RESTORED LOCATIONS AND TOOLS: [state]. ACTUAL RESTORE OUTPUT OR FAILURE: [paste].” If permitted, run python3 -B sample-backup-check.py --archive ./sample-backup.zip --manifest ./sample-backup-manifest.sha256 --originals ./sample-originals --restored ./sample-restored with your consistent names. Save its actual output to a new report and reopen it. On a mismatch keep all files unchanged. Then send: “Review the COMPLETE BUNDLED SYNTHETIC TEST SUITE and utility below. Use only an explicitly chosen existing disposable scratch folder; keep the downloads and actual originals unchanged. Run python3 -B sample-backup-tests.py --scratch-parent [my existing scratch folder] only with supported authorized execution. It creates and retains new isolated synthetic copies. Check invalid-input refusals create no restore output, and separately distinguish the injected mid-write error’s retained partial NEW output. No deletion, cleanup, overwrite, scans of user folders, install or real files. Record actual environment, date, code/archive hashes, executed cases and failures; leave unrun checks pending. COMPLETE UTILITY, TEST SUITE, FIXTURE AND SAVED BYTE-REPORT: [provide]. EXISTING DISPOSABLE SCRATCH FOLDER AND AVAILABLE TOOLS: [state].” These are the exact sample’s checks, not a route for real-data backup. Keep the results and any partial new output; do not silently recreate originals. Return to the sample chat for the original advanced audit with the complete code, fixed fixture, hashes and actual test outputs; no adversarial-concurrency, crash-atomicity or production protection is established.
Your own-input prompt
Explain how to run the EXACT supplied synthetic backup/restore exercise in my own existing owned disposable folder. Do not use my real files or generate a different fixture. First confirm this full fixed payload: notes/readme.txt is hex 53616d706c6520617263686976652e0a (16 bytes); notes/café.txt is hex 4f6e6520636166c3a9206e6f74652e0a (16 bytes, NFC filename); data/counts.csv is hex 6974656d2c636f756e740a63617264732c31320a70656e63696c732c340a (30 bytes); empty.txt is zero bytes; marks/pattern.bin is hex 00017fff (4 bytes). Text is UTF-8/LF. Exactly five payloads/66 bytes, plus the exact separate 407-byte manifest inside the canonical 1,125-byte stored ZIP. Archive SHA-256 is 0fbf539d4ebb19c1042fdd3486d297a6b151572afd3b516722943a3c3b6f3b0b; manifest SHA-256 is 28fda419143b9e271247e3a63083bacbcc61f138859c427964fac9f032d5496a. Physical bound 96 KiB; total uncompressed bound 64 KiB including manifest. Accept only the exact supplied canonical encoding, not arbitrary ZIPs within these bounds. Validate all names/metadata/bytes before output creation. Preserve downloaded archive and originals; use exclusive new files and an absent sibling restore directory. No scans, real files, overwrite, deletion, cleanup, network or install. Inputs, contents and directories must remain stable; concurrent modification is unsupported. A write failure may leave disclosed partial NEW output; no rollback. Require user code review and independent implementation review before writes. Ask about missing tools/review/folder information; begin with explanation only and do not claim a restore has occurred.
MY EXECUTION CONTEXT
[State the existing owned disposable folder containing the complete downloads, that it contains no real data, the actual platform and already-installed Python version or unknown, and code/independent-review status. Paste the complete sample-backup-fixture.json and fixed contract for checking. A path alone does not let an AI read local files. If no supported runtime or review exists, keep execution pending.]
Check your own result
Only your disposable output location changes. The five paths, exact bytes, canonical archive and manifest remain the supplied fixed fixture; different real data needs a separate design and permission.
User and independent code review precede writes; existing destinations and unsupported platforms are refused. Every new location stays within the intended disposable area, with originals/restore as siblings.
Actual restored files are read and compared with independent literal byte controls. A listing, preview or historical result cannot substitute; failures never trigger repairs to originals.
Inputs/contents/directories remain stable. Invalid-input refusal and mid-write failure are distinct; partial NEW output is disclosed and retained with no deletion or atomic-rollback claim.
Only performed checks have results. No real-data recovery, hostile-concurrency guarantee, retention, encryption, off-device protection, platform-wide safety or consumer-AI performance is established.
Show, then try
See the shape of the result.
This input is synthetic. The output is a written illustration of the intended result, not a verified AI-tool run.
01 / The starting point
Synthetic input
COMPLETE ORIGINAL SYNTHETIC INPUT
Exactly five owned sample files; displayed escapes resolve once:
1. notes/readme.txt: UTF-8 "Sample archive.\n" (16 bytes)
2. notes/café.txt: UTF-8 "One café note.\n" (16 bytes); filename NFC
3. data/counts.csv: UTF-8 "item,count\ncards,12\npencils,4\n" (30 bytes)
4. empty.txt: zero bytes
5. marks/pattern.bin: exactly hex 00 01 7f ff (4 bytes)
All text newlines are LF. The fixture JSON supplies the full hex bytes and hashes, so no external data is missing. Originals total 66 bytes.
FIXED EXERCISE CONTRACT
Use only these named regular files and their supplied manifest. No arbitrary directory scan, real files, account, upload, network, install, overwrite or deletion. Keep the original archive and originals. Restore to an absent new sibling of the source. The canonical ZIP has exactly these five entries in this order, then manifest.sha256; stored compression, fixed regular-file metadata and encoding. Complete archive byte limit 96 KiB; total uncompressed bound 64 KiB including manifest. Bounds do not permit other content. This edition deliberately rejects any archive that is not the exact fixed canonical pack.
CHECK BEFORE CREATING OUTPUT
Validate all paths, names, duplicates, regular-file metadata, flags, declared/actual sizes, manifest and content checksums, and independently known bytes before any restore output is created. Refuse symlinks, traversal, unexpected entries, existing destinations and corrupt/oversized packs. New files/directories use exclusive creation. Invalid-input refusal must create no restore output. A mid-write I/O error may leave disclosed partial NEW output; do not delete it or promise atomic rollback.
DELIVERABLE AND DECISION
Inspectable source, real ZIP, SHA-256 manifest, complete original fixture, actual restored files and independent byte evidence. Use an existing owned disposable folder. User code review and independent implementation review are gates. Applying any idea to real files requires a separate design and permission; this utility is not a general backup product.
Copies text only. For image or file tasks, use the source files named in the steps too.
ILLUSTRATIVE LOCAL RESULT
The actual original archive is 1,125 bytes, containing five payload files (66 bytes) and a 407-byte SHA-256 manifest; total uncompressed bytes are 473. It restored the exact five paths to a previously absent sibling directory. The independent checker read the originals and actual restored files and compared every byte with separately transcribed controls. Original and restored hashes match all five expected values, including the Unicode path, zero-byte file and exact binary hex 00017fff.
ARCHIVE SHA-256
0fbf539d4ebb19c1042fdd3486d297a6b151572afd3b516722943a3c3b6f3b0b
MANIFEST SHA-256
28fda419143b9e271247e3a63083bacbcc61f138859c427964fac9f032d5496a
EXECUTED SCOPE
Linux / Python 3.12.14, 2026-10-14. Sixteen synthetic test methods passed, covering round trip, no-write inspect/previews, malformed/oversized/corrupt packs, self-consistent content+manifest forgery, existing targets, symlinks/hard links, original preservation and disclosed partial NEW output under an injected write error. The utility deliberately accepts only the exact canonical fixture; a general ZIP with the same files is not supported.
STILL OPEN
Independent implementation/security review and user review are separate gates. No consumer-AI workflow was executed, provider access is unknown and time savings are unmeasured. No real-data backup, retention policy, encryption, off-device protection, device-failure recovery, hostile-concurrency guarantee, crash atomicity or universal secure extraction has been established. Windows/macOS acceptance remains untested. Concurrent modification of input files, their contents or directories is outside scope; before/after snapshots are not an operating-system lock. This local restore success is evidence for this sample only.
These checks use the worked example and its particular facts. With your own material, check your actual names, numbers, sources and rules; do not reuse the sample’s values as the answer.
Unsaved checks stay in this tab and reset when you reload. If you choose Save guide, its current example checkmarks are kept in this browser when storage is available.
!
A few things to watch for.
Calling an archive listing or successful ZIP creation a recovery test.
Trusting a manifest supplied by an arbitrary archive without an independent expected-byte contract.
Restoring into originals or an existing directory, or using broad extract-all routines.
Silently changing text encoding, Unicode names, newlines, empty files or binary bytes.
Treating the size ceiling as permission to include different files.
Using this deliberately fixed sample as a production backup system or promising cleanup after a failed write.
What has been checked?
Documentation
No dated source review recorded.
Included files
Scoped checks passed on 2026-10-14. Fixture checks. See scope below.
AI workflow
Not run in a recorded consumer-AI workflow.
Time savings
Time savings not measured
Read the scope and evidence
sample-backup.zip
2026-10-14 · semantic fixture · passed
Actual fixed-archive pack/restore and independent literal-byte comparisons; no real-data or universal extraction claim.
Exactly five payload paths/66 bytes plus 407-byte manifest; 1125-byte ZIP
Actual restored Unicode, empty and binary files match independent known bytes
Original source hashes and original archive unchanged
Environment: Linux / Python 3.12.14; standard-library byte comparisons, ZIP parsing and 16 synthetic test methods. No consumer-AI or real-file recovery execution.
Executed only on owned synthetic files using Linux/Python 3.12.14; exact canonical ZIP contract; independent review remains separate.
16 test methods pass with disposable synthetic cases
Invalid pack and existing destination cases create no restore output
Injected mid-write failure leaves disclosed partial NEW output; no deletion/rollback
Environment: Linux / Python 3.12.14; standard-library byte comparisons, ZIP parsing and 16 synthetic test methods. No consumer-AI or real-file recovery execution.
Independent standard-library read-only checker; does not import the utility.
Actual originals, archive and restored bytes compared with independent hex literals
Full archive and manifest hashes checked
No file writes or repairs by checker
Environment: Linux / Python 3.12.14; standard-library byte comparisons, ZIP parsing and 16 synthetic test methods. No consumer-AI or real-file recovery execution.
Complete original fixture agrees with independently specified known bytes.
Five exact names and lengths 16/16/30/0/4
NFC café path, exact LF text and 00017fff binary bytes
SHA-256 values agree with actual originals
Environment: Linux / Python 3.12.14; standard-library byte comparisons, ZIP parsing and 16 synthetic test methods. No consumer-AI or real-file recovery execution.
Separate manifest bytes equal archive member and independent SHA controls.
Exactly five complete SHA-256 lines in the specified order
407 UTF-8 bytes including terminal LF
Checksum values agree with original and restored files
Environment: Linux / Python 3.12.14; standard-library byte comparisons, ZIP parsing and 16 synthetic test methods. No consumer-AI or real-file recovery execution.
Executed synthetic mutation/round-trip test source; original downloads preserved.
16 test methods passed on Linux/Python 3.12.14
Isolated disposable copies retained under selected test folder
No app suite/build, real files, network or consumer-AI workflow executed
Environment: Linux / Python 3.12.14; standard-library byte comparisons, ZIP parsing and 16 synthetic test methods. No consumer-AI or real-file recovery execution.
Report generated from actual independent read-only checks of original and restored files.
Five exact hex rows and hashes reconcile with actual named files
Archive identity and 473 total uncompressed bytes reconcile
Production, provider, AI and savings limits explicit
Environment: Linux / Python 3.12.14; standard-library byte comparisons, ZIP parsing and 16 synthetic test methods. No consumer-AI or real-file recovery execution.