frontend-patterns/research/experiments/storage-receiver/README.md
tegwick 9baf6f1829 Complete bounded recovery checks and reconcile blocked workplans
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a0e738-9e15-7600-87e6-90dec3a7beef
2026-09-28 11:06:35 +02:00

1.6 KiB

SQLite / Git recovery experiment

Existing owner: FEP-WP-0003 T04. Preregistered as LEARN-0018 in commit aea9796. Review explains the acceptance scope.

Run from the repository root with ordinary Python (assertions enabled), SQLite and Git; no dependency installation or service is needed:

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.