diff --git a/quest/m0/queue-watcher/base-merge-keeps.md b/quest/m0/queue-watcher/base-merge-keeps.md new file mode 100644 index 00000000..4d0d03bb --- /dev/null +++ b/quest/m0/queue-watcher/base-merge-keeps.md @@ -0,0 +1,34 @@ +# [M] The tested-base merge keeps the base's content + +## Goal + +`mergeBase` (`src/cli/land.ts`) never removes content that both the PR head +and the base still have. The commit it pushes to a PR's branch differs from +the base only by the PR's own changes, plus the links it drops to quests the +base finished. A test merges a base that finished one quest into a head that +touches an unrelated README, and finds every other line of every quest file +unchanged. + +## Plan + +Planned 2026-11-10 (maintainer, /quest-complete in moq-dev/moq). Milestone: +✅ m0, in this epic (rejected: m0 standalone, m1), since it hit moq-dev/moq's +queue today. + +On [moq-dev/moq#8429](https://github.com/moq-dev/moq/pull/8429), the bot's +`quest land: merge tested base` commit `74d26316c6` has parents `8f0fee87e5` +(the PR head) and `5e962fc7f1` (the base, on `main`). Against that base it +deletes 669 lines in 45 files: every quest README's `## Required` list +(`quest/README.md`, `quest/m0` through `quest/m5`, and epic READMEs), plus +the PR's own changes. The head, the base, and their merge base `cd560bde5e` +all have those lists, so no conflict explains it. The base had just finished +one quest ([moq-dev/moq#8427](https://github.com/moq-dev/moq/pull/8427) +deleted `quest/m0/nightly/qmux-bench-handshake.md`), so `prune` ran; it is +the prime suspect, with the `quest resolve` merge driver next. Reproduce from +those three commits before fixing. + +An iterating agent caught it by hand and restored `quest/` from `main`. A +head like this one can otherwise land, since `quest check` passes on a tree +whose READMEs list nothing. + +Public API: none. Wire: none. diff --git a/quest/m0/queue-watcher/fixer-broken-pipe.md b/quest/m0/queue-watcher/fixer-broken-pipe.md new file mode 100644 index 00000000..9d53ee1e --- /dev/null +++ b/quest/m0/queue-watcher/fixer-broken-pipe.md @@ -0,0 +1,28 @@ +# [S] The land fixer survives a closed pipe + +## Goal + +A fixer run on a dropped PR finishes with a fix, a flaky verdict, or a +handback that names a decision, never a crash from a closed pipe. A test +closes the reader of the step that crashed and finds the run still reports. + +## Plan + +Planned 2026-11-10 (maintainer, /quest-complete in moq-dev/moq). Milestone: +✅ m0, in this epic (rejected: m0 standalone, m1). + +On moq-dev/moq the fixer handed back two ordinary drops with +`fixer crashed (exit 1); run /quest-iterate` and the output +`quest land check: [Errno 32] Broken pipe`: +[moq-dev/moq#8406](https://github.com/moq-dev/moq/pull/8406) (a failed +`merge_group` build, caused by a dead quest link) and +[moq-dev/moq#8429](https://github.com/moq-dev/moq/pull/8429) (a merge +conflict). Each then needed a person. `[Errno 32]` is Python's wording, so +the crash may be in a script the fixer runs rather than in Quest's +TypeScript; find which process prints it from the host's fixer logs first. +If it is moq-dev/moq's own check script, fix it there instead (its +`sh/migrate.sh` had the same `grep -q` under `pipefail` bug, fixed in +[moq-dev/moq#8424](https://github.com/moq-dev/moq/pull/8424)) and delete +this quest. + +Public API: none. Wire: none.