Experiment formal reader test executable recovery plan - kmosoti/FabricO11y GitHub Wiki
Regenerable test-executable recovery
Prospective only; no control, dry run or deletion has run. This is a separate resource-recovery scope under the owner's instruction to free RAM and storage. It neither widens nor executes the 5 GiB incremental-cache plan.
The interrupted exact-head fast attempt was stopped at 95,719,192,499 logical DATA bytes. Its raw log, partial-check receipts, outer stopped receipt and failure tree remain preserved. Manifest /run/media/kmosoti/data/FabricO11y/results/service-opening-candidate/fenn-reader-status-interrupted-test-executable-inventory-01.json, SHA256 d314356a186fcb0097a3e4095e091b37244f3d9a92145d9e4c40793aa9fefd06, selects exactly 65 single-link test executables totaling 6,546,273,144 bytes, bounded by a separate 7 GiB review ceiling. All have actual binary hashes, unchanged file identities, run-window mtime/ctime, Cargo test fingerprints/dependency files, first-CU Rust1.99 producer and source path, and successful partial-check Running lines on clean 101d9dfb9099cd933db871130f7d72120d235575. These are regenerable run-bound compiler outputs; first creation is not claimed without a before-run inventory. Gross library observations are excluded.
Helper reclaim-reader-test-executables.py SHA256 d2ff07303e620a70c6491c39143b1ed510c6062079c6db489ca6fefccec0767b; driver run-step-reader-test-recovery.py SHA256 196ce05e3b696b7af2883a8ebd1e89ef037b7672a4583150cda4e32400107073. Imported path/identity/idle/storage guards are bound to SHA256 7fbdf2db556bc4cd7179983914f4ff52bece9074a4f31442768657ab10c7c383. Exact manifest/helper hash, command and unique labels are mandatory.
The cleanup-specific driver accepts only those three literal modes, a fixed 32 MiB log/report reservation, and a clean exact source. It can admit this recovery above the normal 95 GB project-workload admission line while requiring observed census plus its 32 MiB reservation below the unchanged 100 GB DATA budget. It cannot launch builds/tests/VMs/arbitrary commands. It stops on growth beyond the cleanup reservation or budget; every mode still runs through the normal resource launcher with its default 16/20 GiB/no-swap/1,800-second containment. Ordinary drivers and their 95 GB admission rule are unchanged. No projected cleanup grants admission to another run.
All admission checks raise explicit exceptions even under Python optimization. Exact first-CU fields are matched to the unique raw DWARF BEGIN/END block. Control uses literal out-of-scope, hardlink, duplicate and substituted-DWARF selections plus actual second-process lock contention, requiring the specific refusal before raw mutation. Raising stubs cover unlink/remove/rmdir/removedirs/rename/replace/truncate and write-mode os.open/builtins.open/io.open/Path.open. Dry validates the full actual manifest without removals. Execute requires matching stopped control/dry receipts, revalidates all files before the first unlink, and rehashes/rechecks each held file descriptor and directory-relative name immediately before unlink. Unlink completion is journaled before fstat; only verified expected-inode removal contributes to reclaimed bytes, and unknown transitions are reported separately. Single-link-to-zero inode transitions and a fsynced progress journal record actual removals; partial failures stop without auto-retry. All source/dep-info/fingerprint/raw-witness/partial-check bindings are reread. No directories, libraries, incremental members/locks, packages, receipts or failure trees are removed.
Accessible owned process executable/maps/file descriptors are inspected for selected files. Protected process inspection failures are recorded as a limitation rather than a claim of universal inspection. The origin project cgroup is independently confirmed stopped and no other project/compiler/server/guest workload may be active. Dry and execute hold a read-only nonblocking exclusive flock on the existing owned, single-link cargo/debug/.cargo-lock. All Olo helpers remain paused and #59 assigns one local writer. The helper refreshes accessible consumer observations before every unlink and enumerates removed, failed and unprocessed manifest entries. This is advisory writer coordination: unlink is not inode-conditional and an uncoordinated process could replace a pathname after its last check; held-FD postchecks detect a violation after unlink. Exact pinned Cargo locking behavior has not been verified, so that behavior is not used as proof of universal exclusion. Serial quiescence is an explicit execution assumption.
Read #59 before each separate command and after each run; inspect actual exit/log/stop receipts before proceeding. These commands are NOT RUN:
python3 -B /run/media/kmosoti/data/FabricO11y/results/candidate-build-fresh-8fb6f413179b-01/run-step-reader-test-recovery.py reader-executable-reclaim-control-01 33554432 python3 -B /run/media/kmosoti/data/FabricO11y/results/candidate-build-fresh-8fb6f413179b-01/reclaim-reader-test-executables.py control --expected-manifest-sha256 d314356a186fcb0097a3e4095e091b37244f3d9a92145d9e4c40793aa9fefd06
python3 -B /run/media/kmosoti/data/FabricO11y/results/candidate-build-fresh-8fb6f413179b-01/run-step-reader-test-recovery.py reader-executable-reclaim-dry-01 33554432 python3 -B /run/media/kmosoti/data/FabricO11y/results/candidate-build-fresh-8fb6f413179b-01/reclaim-reader-test-executables.py dry --expected-manifest-sha256 d314356a186fcb0097a3e4095e091b37244f3d9a92145d9e4c40793aa9fefd06
python3 -B /run/media/kmosoti/data/FabricO11y/results/candidate-build-fresh-8fb6f413179b-01/run-step-reader-test-recovery.py reader-executable-reclaim-execute-01 33554432 python3 -B /run/media/kmosoti/data/FabricO11y/results/candidate-build-fresh-8fb6f413179b-01/reclaim-reader-test-executables.py execute --expected-manifest-sha256 d314356a186fcb0097a3e4095e091b37244f3d9a92145d9e4c40793aa9fefd06
The driver records full logical DATA census and statvfs available/free bytes both before and after each run, including stopped receipts. After execute, root posts those actual observations, actual removed bytes, failed/unprocessed entries and stopped receipts. Only then may the separately reviewed #41 inventory compute its real goal. The 89,172,919,355-byte arithmetic forecast is not a current census or admission. #64 uses exact-head hosted CI; the prepared workstation retry is not planned. Remaining uncertainty: future cache reconstruction/storage growth and protected-process inspection.