# SQLite / Git recovery experiment Existing owner: FEP-WP-0003 T04. Preregistered as LEARN-0018 in commit `aea9796`. [Review](../../reviews/StorageReceiverRecovery.md) explains the acceptance scope. Run from the repository root with ordinary Python (assertions enabled), SQLite and Git; no dependency installation or service is needed: ```sh python3 research/experiments/storage-receiver/experiment.py --output /tmp/fep-recovery-new.json ``` The output must be a new path. The runner retains a failure receipt before raising; never overwrite the committed result. Compare the receipt's engine versions and binary/source hashes before treating another environment as a replication. Temporary databases and bare repositories are isolated and removed on exit. Git configuration is isolated from user/system configuration. Each killed process is a new fixture worker, stopped only after an explicit checkpoint. Every read of the receiver runs a new Git process; the receiver itself is real `git receive-pack` using Git's local transport, not an authored protocol substitute. No port is opened. Nine checks pass, including two intentionally broken negative controls. The sender is killed after Git reports success but before the application persists its receipt: this models lost **local** acknowledgement, not network packet loss. SQLite kills bracket commit and interrupt a multi-statement transaction; they do not inject a crash inside the commit syscall or simulate power loss. Receiver fsync/disk-failure behavior, remote authentication, backup, UI behavior and full-contract recurrence remain untested. A reachable commit is not an indefinitely retained operation ledger.