mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-14 12:27:18 +01:00
Make the ship queue fetch the latest main before it checks a pull request (GST-2232) (#4256)
* Make ship-queue ready fetch the base before it checks the receipt (GST-2232) ready read origin/<base> as the clone last fetched it, so a lane a few landings behind measured the PR from an older merge base and refused a good receipt with a false RECEIPT_INVALID field=review_exclude. ready now fetches the base first and refuses QUEUE_BASE_UNFETCHED when it cannot; the stamp path of land refuses the same way instead of ignoring a failed fetch. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * Regenerate the doctor component list for the new queue refusal code (GST-2232) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * Keep the new ready test off the Windows-safe set and say which land path uses the new refusal (GST-2232) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --------- Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
This commit is contained in:
1 parent
dfdaea2efd
commit
00cb80cce8
10 files changed
+162
-3
No files matched your search
+10
-2
@@ -732,7 +732,13 @@ slot. The queue enforces this at every step from the PR body alone:
|
||||
`REVIEW_TARGETED:` line) when a targeted class the head needs has no done
|
||||
targeted pass in the receipt, and `QUEUE_RECEIPT_EXCEPTION_INVALID` when an
|
||||
owner exception it records does not stand ([the ship receipt](#ship-receipt)).
|
||||
There is no flag around it.
|
||||
There is no flag around it. Before any of these checks, `ready` fetches
|
||||
`origin/<base>` and reads the policy and every receipt field against that
|
||||
fresh ref, so a lane clone whose base is behind the remote never turns a good
|
||||
receipt into `RECEIPT_INVALID` (GST-2232); a failed fetch refuses with
|
||||
`QUEUE_BASE_UNFETCHED` before anything is compared. The stamp path of `land`
|
||||
refuses the same way; `land --pin` (`merge: direct`) refuses a failed fetch
|
||||
with `QUEUE_NOT_READY`, as it already did.
|
||||
- `train build` refuses a pin whose PR has no current receipt with the same
|
||||
codes, naming the PR, before anything is written, pushed or dispatched,
|
||||
`--dry-run` included.
|
||||
@@ -1546,7 +1552,9 @@ same one (a mixed set makes it `VERIFY: dirty`). `gstack-ship-receipt write
|
||||
--review-exclude <d>`, with that digest, records `review_exclude` (source, patterns, counts, the gate-tagged kept
|
||||
paths and three hashes). The `digest` hashes the declared patterns and the
|
||||
excluded and kept lists; `source` is provenance only. Write, carry and the queue
|
||||
each recompute the digest at the current base and compare it, so a base merge
|
||||
each recompute the digest at the current base and compare it (the queue fetches
|
||||
that base first), over the PR's own files: the diff from the head's merge base
|
||||
with that base, never a two-dot diff against the base tip, so a base merge
|
||||
or a moved base that leaves the patterns and the lists unchanged still carries
|
||||
and binds. A different digest means the digest write was given (or the receipt recorded) names another selection than the head has now:
|
||||
write refuses with `RECEIPT_INVALID field=review_exclude`, carry with
|
||||
|
||||
@@ -5490,6 +5490,20 @@ the same `train land` command; it adopts its own journaled stamp commit. For an
|
||||
unreadable land lock, rerun the same `land` command once origin answers; it
|
||||
resumes its own lock.
|
||||
|
||||
<a id="queue-base-unfetched"></a>
|
||||
### `QUEUE_BASE_UNFETCHED`
|
||||
|
||||
**Meaning.** `gstack-ship-queue ready` (or the stamp path of `land`) could not
|
||||
fetch `origin/<base>`, so it stopped before reading the policy or comparing
|
||||
any receipt field. Both compare the receipt's recorded selection, depth and
|
||||
targeted classes with what the current base gives the head; a local
|
||||
`origin/<base>` a few landings old measures the PR from an older merge base,
|
||||
pulls in files of PRs that already landed, and reports a false
|
||||
`RECEIPT_INVALID field=review_exclude` (GST-2232). Nothing was written.
|
||||
|
||||
**Fix.** Make `git fetch origin <base>` work in this clone (network, remote
|
||||
URL, credentials), then rerun the same command.
|
||||
|
||||
<a id="queue-proof-missing"></a>
|
||||
### `QUEUE_PROOF_MISSING`
|
||||
|
||||
|
||||
Reference in new issue
Block a user