magus v0.4.3 is out. See what's new
¶ View markdown source · ✎ Suggest an edit
2 min read

MGS3028: queue plan unverified

magus queue apply checked the plan against facts it reads itself and found a disagreement, so it stopped before merging anything that rests on it.

[MGS3028] the plan's stack of #2: stack base 5e1a2b3c4d5e is not 9f2e8d7c6b5a,
the head #1 was reviewed at

Why

The plan comes from validation's run, and validation runs every change's code. Apply trusts none of it that it can read for itself:

  • Base and remote. The plan must name apply's own --base and the URL of apply's own --remote.
  • Base commit. Every candidate was built on the plan's base commit, so the base must carry it. A base that does not was rewritten, or the plan was made for another one.
  • Stack base. A stacked change merges as its own delta, measured from its stack base. That base must be beneath the change's head, not already on the base, and the head the provider confirmed for the change beneath it (with merges of the base into that head peeled off). For a change stacked on one that already merged, it must be the newest commit it carries of a change the provider lists as merged onto the base. A stack base anywhere else merges a delta nobody reviewed: one whose tree is the base's makes the merge carry the head's own tree, reverting everything the base gained since the change forked.

A stack the provider now declares differently than the plan does is not this error: the stack may have changed after planning, so that change waits instead.

Resolution

A plan magus queue plan wrote against the same base and remote passes these checks, so this error means the plan came from somewhere else, the base was rewritten after planning, or apply was given another --base or --remote than planning used. Plan again from the base's current tip; if the error repeats with a plan you made yourself, report it as a bug.

See the merge queue's trust model.

MGS3028merge queuemagus queuestackssecurity
Last updated (a5d2c3f4)
Glossary

Op

A single tool-native command a target composes (long form: operation); the middle of the work hierarchy (Spell to Op to Target). See operations.

Run

One target executing under one magus invocation, such as magus run test web or magus affected ci. A run keeps its captured output behind an output reference. Every magus run is a run whether or not any job asked for it; see Job for how the two relate.

Conventions

This page uses none of the site's convention markers. The full set is on the conventions page.