From 20258edffe39d196535d91aa9fcb08b2b276f435 Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Fri, 30 Oct 2026 21:10:46 -0700 Subject: [PATCH 1/2] fix(land): requeue comments say why, without a blanket flaky follow-up Every requeue suggested stabilizing flaky checks, even when the batch failed on another PR (the live canary, #308). The fixer's reason already says why; the prompt now asks it to name a flaky test when that is the cause. Co-Authored-By: Claude Opus 5.5 --- assets/land-fix.md | 3 ++- src/cli/land-fixer.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/assets/land-fix.md b/assets/land-fix.md index 6b6acdf1..b541a35a 100644 --- a/assets/land-fix.md +++ b/assets/land-fix.md @@ -14,7 +14,8 @@ result—hand back that PR, quoting the attempt and its location in the diagnosi ## Mechanical fixes The repository has `batch`, `base`, and one `pr-` branch per pinned PR. -For each PR, requeue it unchanged if healthy (including a flaky failure), commit a +For each PR, requeue it unchanged if healthy (if the failure was flaky, name the +flaky test in the reason so it can be followed up), commit a mechanical fix on its own branch, or hand it back with diagnosis and recommendation. Allowed fixes: preserve both sides' intent in conflicts, format/lint, regenerate lockfiles/generated files, or follow a base rename. Merge base where practical. diff --git a/src/cli/land-fixer.ts b/src/cli/land-fixer.ts index 35611921..c2a544e0 100644 --- a/src/cli/land-fixer.ts +++ b/src/cli/land-fixer.ts @@ -443,7 +443,8 @@ async function collectJob( github, job.plan, entry, - `Requeued unchanged: ${result.reason.slice(0, 200)}. Suggested follow-up: investigate the batch failure and stabilize any flaky checks.`, + // The reason says why: another PR in the batch, or a flaky check worth a follow-up. + `Requeued unchanged: ${result.reason.slice(0, 200)}`, "requeue", author(result), ); From ddb682eb5c826837d9922a401c39aadc75a245b0 Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Fri, 30 Oct 2026 21:14:06 -0700 Subject: [PATCH 2/2] test(land): a requeue comment carries the fixer's reason Co-Authored-By: Claude Opus 5.5 --- test/land.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/land.test.ts b/test/land.test.ts index 9e8afe6e..8c522b4b 100644 --- a/test/land.test.ts +++ b/test/land.test.ts @@ -1667,14 +1667,14 @@ printf '[{"number":1,"action":"fixed","head":"%s","reason":"preserve both confli describe("asynchronous land fixer", () => { afterEach(() => vi.unstubAllEnvs()); - test("requeues unchanged, suggests follow-up, and hands back a second ejection in the same pick", async () => { + test("requeues unchanged with its reason, and hands back a second ejection in the same pick", async () => { const fixture = await fixerFixture(requeueScript); await fixture.finished; expect(await fixture.collect()).toEqual(["requeued 1"]); expect(fixture.pull.head).toBe(fixture.plan.queue[0].head); expect(fixture.pull.autoMerge?.commitBody).toBe(pin(fixture.pull.head!)); expect(fixture.pull.labels).toContain("quest:merge"); - expect(fixture.forge.comment(1)).toContain("Suggested follow-up"); + expect(fixture.forge.comment(1)).toContain("Requeued unchanged:"); const next = await resolveQueue(REPOSITORY, undefined, fixture.deps); await serveBatch( fixture.root,