Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions quest/m0/land-fixer/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ resolves itself and what it hands back; that docs update finishes the epic.
- [Batch triage](/quest/m0/land-fixer/triage.md) - the fixer blames the failing PR before ejection, and a red base halts the queue
- [CI failures park](/quest/m0/land-fixer/ci-park.md) - a PR whose own required CI fails is parked for the fixer with the failing log, not ejected
- [Queue status in the required check](/quest/m0/land-fixer/check-status.md) - the gate shows each PR's queue state in its required check run, never completing it
- [PR CI as a signal](/quest/m0/land-fixer/pr-signal.md) - `/quest-merge` and the fixer read a PR's own CI without gating on it; public repos may run it, private ones need not
- [Flaky tests](/quest/m0/land-fixer/flaky.md) - the gate reruns a failed module, disables a flaky test on the batch's base PR, and files a follow-up
- [Local mergeability](/quest/m0/land-fixer/mergeability.md) - `quest land` merges with the quest driver instead of ejecting on GitHub's conflict flag
- [Protected edits](/quest/m0/land-fixer/protected.md) - the fixer edits protected paths when it judges the edit mechanical, and the fix lands
Expand Down
40 changes: 40 additions & 0 deletions quest/m0/land-fixer/pr-signal.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# [S] The fixer and /quest-merge read a PR's own CI as a signal

## Goal

A PR's own GitHub CI results inform the people and agents that land it,
without gating anything. `/quest-merge` shows the head's non-required check
results to whoever picks the PR, and the land fixer receives each batch PR's
check results, with the failing runs' logs, as extra context when it triages a
failing batch. Quest's landing docs state the policy: a public repository may
run PR CI as a free signal, and a private one relies on the host gate alone.

## Plan

Decided 2026-11-01 (maintainer, /quest-plan): "I think for moq we should
re-enable Check being run on PRs [...] maybe could at least gate the PR making
it to the fixer? Or not gate at all, and would just be a signal to the fixer
(or whoever decided to quest-merge in the first place). (open source repos do
this because it's free, closed source do not)". moq-dev/moq plans its side in
`quest/m0/ci/pr-check.md`.

- The PR CI's role:
- ✅ A signal only
- Gate the fixer: a queued PR sits out batches until its CI finishes
- A required check
- Record the public/private policy:
- ✅ In quest's landing docs
- In moq only

`quest status` already lists a PR's checks. `/quest-merge` should say when a
non-required check failed on the head it is about to pick, without refusing.
The fixer gets a summary per PR (check name, conclusion, run URL, and a
trimmed log of each failure) in its job input, next to the batch log. A
failing non-required check never parks or ejects a PR on its own; the parked
case is only for required checks, in
CI failures park (`quest/m0/land-fixer/ci-park.md`), which
[moq-dev/quest#363](https://github.com/moq-dev/quest/pull/363) plans.

## Related

- [Batch triage](/quest/m0/land-fixer/triage.md) - where the fixer uses the signal
Loading