Repository navigation
Conversation
A benchmark harness that runs on a shared host has no way to keep other gated work, or a second copy of itself, off the host while it measures. `quest gate --host` reserves the host in the ledger at once, starts once no other gated command runs, and keeps every other caller waiting until it ends. A dead holder releases the host by its process ID, as any admission does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…er holds the host Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s on a reused process ID Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed head: 07124a9
[P2] Fail closed when macOS process inspection fails — src/cli/gate.ts:291–295. If spawnSync("/bin/ps", ...) fails, for example with EAGAIN or ENOMEM, this returns undefined just as it does for a missing process. For a live holder with a recorded start time, fileHost.running() then returns false, so another caller can be admitted alongside it. Once the reservation is older than RECENT_MS, that caller can also remove it from the ledger. A failed self-inspection instead creates a PID-only reservation.
Propagate spawn errors and distinguish inspection failure from confirmed process exit; require a usable start identity before granting --host. Add a regression test with a live holder and a failed ps invocation, asserting that no competing admission is published.
Recommendation: address this isolation failure before merging. Scope: static review of all five changed files and surrounding admission/ownership logic through GitHub only. I did not run tests or reproduce the macOS failure; CI was still in progress when checked.
(Written by OpenAI)

Problem
A benchmark harness on a shared host can't keep other work off the host while it measures. Two sessions ran rind's
admin/bench-report collectagainst the same host at once. The second wiped the first's build mid-compile, and gatedcargobuilds from other agents ran alongside the benchmarks, skewing about half the timings by over 10%. Load-based admission let all of it in.Behavior
quest gate --host <command>holds the whole host:host: true, held by its gate's process) at once, so no other caller is admitted while it waits.--hostcaller queues behind it.ps -o lstartin UTC), so a reused PID, as after a reboot, holds nothing.--hostconflicts with--quick, and Windows refuses it, since it has no cheap start time to tell a reused PID from a holder. A nested--hostruns at once, like any nested call.Validation
just checkandjust testpass.--hostcallers all wait on it; the holder waits out a running build and is then admitted; a dead holder, or one whose PID was reused, holds no one; a holder doesn't wait on an ordinary admission whose PID was reused; Windows refuses--host.ps -o lstartdiffered between time zones and locales, which the fixedTZ=UTC LC_ALL=Cremoves.--hostcommands and a--quickone: the second and the quick one waited until the first ended, then ran one at a time.Limitations
Review
Codex (gpt-6.1-sol, medium), 4 rounds; round 4 on head 07124a9 reported no findings.
--host. macOSps -o lstartdepended on the caller's time zone and locale. Fixed:TZ=UTC LC_ALL=C.(Written by Claude Opus 5.5)
🤖 Generated with Claude Code