carlos / platform Public

Clone
git clone https://amadan.net/carlos/platform

Plain git — no account needed to clone.

Download

Download this file

Reviewed rev 4.1 at 1cfa15bf, against claim rev 6.3 and the supplied moves rev 7.6 draft.

| Finding | Disposition | |---|---| | A4-1 — release ordering | Partly resolved. Application processes stop before flushing, but the new first step also requires the still-open replicator’s file descriptors to be gone. See A5-1. | | A4-2 — multipart preparation | Resolved. The object-creation qualifier exempts multipart preparation while enforcing conditional completion, matching AWS’s documented policy. | | A4-3 — dependency revision | Resolved. The header correctly identifies rev 7.6 as uncommitted and requires the plan to pin its commit. | | A3-2 — target durability barrier | Partly resolved. Final positions and minimum pinning requirements remain explicit, but A5-1 blocks the release sequence. | | A2-7 residual — failed-probe recovery | Partly resolved. Recovery preserves the required positions once release completes; A5-1 prevents normal completion. |

A5-1 — P1 — §5.8: the first release step waits for handles that close only in step 4. Location

Problem: Step 1 requires no remaining holder of the database, WAL or SHM files, citing claim §6.1. That claim’s check scans /proc/*/fd; it includes the platform’s embedded replicator. Litestream v0.5.14 explicitly opens a long-running database descriptor, which remains open until DB.Close. This sequence keeps the replicator open for step 2’s SyncAndWait and closes it only in step 4.

Failing sequence: A healthy, replicating source begins a drain. Admission closes, timer deliveries drain, and the application cgroup empties. The descriptor scan still finds Litestream’s database handle in the platform process. Step 1 cannot finish, so the final flush and replicator close are never reached. A failed-probe target encounters the same obstruction and becomes stuck.

Suggested fix: In step 1, establish that application processes and other application writers have stopped, allowing only explicitly identified platform replication/flush handles to remain. Flush and journal the final positions, close those handles, then perform the unrestricted no-holder check as part of step 4’s final stop evidence. Carry this distinction into K2 and test release with an initialized embedded replicator.

All code file:line citations were checked against 1cfa15bf. No files were changed or tests run.

Verdict: not ready.