hostrelocate: the Probe contract says a probe completes before it returns, and passed false is a failed attempt, never one still running
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 file changed,
+5
−1
internal/hostrelocate/participant.go+5 −1
diff --git a/internal/hostrelocate/participant.go b/internal/hostrelocate/participant.go| index c44ccabfd..b317417fb 100644 |
| --- a/internal/hostrelocate/participant.go |
| +++ b/internal/hostrelocate/participant.go |
| @@ -60,7 +60,11 @@ type Effects interface { |
| // (§5.8, B2-5; rev 16, round 15). |
| VerifyReceipt(context.Context, hostclaim.Observed) (bool, error) |
| // Probe makes one cold probe admission (AdmitWriter, with coverage the |
| - // caller names) and runs the probe. passed is false while it runs. |
| + // caller names), runs the probe and waits for it to complete before |
| + // returning (R1: one attempt, its exact health). passed is the probe's |
| + // result; false is a failed attempt, never a probe still running. The |
| + // caller counts an attempt in the claim before each call, so a Probe |
| + // that returned early would spend the attempts without probing. |
| Probe(ctx context.Context, obs hostclaim.Observed, coverage string) (session uint64, passed bool, err error) |
| // Retained lists the participations whose execution controllers this |
| // box still holds; Finish closes one and releases its lifetime lock. |