carlos / platform Public
Reviewed 6a9b6a95.
| Round 6 finding | Disposition | Assessment against rev 7 | |---|---|---| | P1 — an unshared thread’s descriptor can pass as the replicator’s | Resolved | Kernel checks establish shared tables and open file descriptions; unavailable comparisons fail closed. Tests cover copied and independently reopened descriptors. |
The six earlier findings marked resolved in round 6 remain resolved.
New finding:
- P2 — Task 7, Step 4: retrying an interrupted release repeats flushes after producers have closed.
Release reads the durable positions, but a retry under the same controller constructs a fresh drain. That drain unconditionally repeats both flushes.
Root can fail after producers close but before its receipt is durable: kernel verification and receipt persistence follow the drain acknowledgement. The retry therefore flushes an already closed replicator instead of resuming the completed work. This can prevent release completion despite valid recorded positions. The existing lost-response test covers only failure after root completed its receipt.
Fix: when the same stop already has durable positions, reuse them and resume at the idempotent producer drain, then let root verify and persist the receipt. Add a test that closes producers, fails before receipt persistence, and retries without restarting; neither flush callback should run again.
I accept rulings 1–24. Stage B’s contracts retain the earlier review obligations.
All 12 embedded patches pass git apply --check; all 39 complete Go blocks parse with gofmt. Compilation and tests were not reproduced in this read-only sandbox. No files changed.
Verdict: not ready — Stage A needs the release-retry fix; Stage B contracts are complete.