fix(merge-queue,docs): an untimed spawnSync on the request path, and a deploy doc its own test called stale #5496
ccantynzAI Reviewcommented 20d ago
AI Triage
(no summary)
Priority: medium Risk area: mixed
Suggested labels: (no label suggestions) Suggested reviewers: (no reviewer suggestions)
Suggestions only — nothing has been applied. The PR author stays in control.
gluecron[bot]🤖 botAI Reviewcommented 20d ago
AI review unavailable
The platform's AI balance is exhausted, so AI generation is temporarily unavailable. Nothing was lost. You can queue this as a repair for the internal agent from the repository's Health page, or try again once the balance is restored. The PR is otherwise unchanged.
Cross-repo impact
See what breaks downstream if this PR merges.
⮌ Merged
This pull request was merged into main.
c comment · e edit title · m merge · a approve · r request changes · ? shortcuts
Two failures the suite has been reporting, both real, neither reaching CI.
1.
Bun.spawnSyncwith no deadline in a route handlersrc/routes/merge-queue.tsx:1009.spawnSyncblocks the event loop — not just this request, the whole server — for as long as git takes.merge-base --is-ancestoris normally instant, but it walks history and has no upper bound on a corrupt or enormous object store.Now
timeout: 15_000, killSignal: "SIGKILL".On timeout the child is killed and
exitCodeis non-zero, routing tomergeWithAutoResolve— the conservative branch that treats ancestry as unproven. Failing that way is the correct direction: the INCIDENT 2026-08-08 guard immediately above exists to stop a stale branch REPLACING base, so "could not prove base is an ancestor" must never be read as "it is".2. CLAUDE.md still described the dormant deploy path ambiguously
docs-rule.test.tspins this wording because, as its own comment records, the drift "was corrected once and was still wrong afterwards". The section now says Not the deploy trigger and does not run, and names why it stays dormant —SELF_HOST_REPOis not set where the container can read it (/opt/gluecron/.env), which is the detail that made it look armed.That file is what every agent session reads first, so a stale claim there isn't a docs nit — it is the map. This session began by trusting its mirroring description and finding the mechanism dead.
Why CI was green while these failed
Both
src/lib/selfcheck/subprocess.test.tsanddocs-rule.test.tsare inscripts/ci-test-excludes.txt(issue #213). They're excluded for subprocess-PATH reasons unrelated to what they assert.Verification
merge-queue: 5 pass.
tsc --noEmitclean.