Setting a verdict string alongside a non-terminal stage move is refused by the merge-hook terminal guard:
$ spacedock status --workflow-dir <dir> --set <slug> status=<mid-stage> verdict=<label>
Error: entity <slug> cannot advance to terminal — workflow has merge hook(s) [pr-merge] that have not run (pr field is empty and mod-block is empty). Set mod-block=merge:pr-merge and invoke the hook.
The target stage was a mid-flow implementation stage (gated workflow with a later terminal stage) — nothing terminal about the transition. The whole --set was refused, so the FO had to drop the verdict write and carry the verdict in the entity body instead.
Expected: verdict is a recordable field at any stage (e.g. a feedback-cycle rejection label); the terminal guard should key on the target stage's terminal: true, not on the presence of a verdict value.
Sibling of #521 (worktree= clear read as terminal transition) — same guard, different innocent field; suggests the guard's trigger condition is field-presence-based rather than transition-based.
Scale: 7-stage linear flow, pr-merge mod registered. spacedock@0.26.0.
Setting a verdict string alongside a non-terminal stage move is refused by the merge-hook terminal guard:
The target stage was a mid-flow implementation stage (gated workflow with a later terminal stage) — nothing terminal about the transition. The whole
--setwas refused, so the FO had to drop theverdictwrite and carry the verdict in the entity body instead.Expected:
verdictis a recordable field at any stage (e.g. a feedback-cycle rejection label); the terminal guard should key on the target stage'sterminal: true, not on the presence of a verdict value.Sibling of #521 (
worktree=clear read as terminal transition) — same guard, different innocent field; suggests the guard's trigger condition is field-presence-based rather than transition-based.Scale: 7-stage linear flow,
pr-mergemod registered. spacedock@0.26.0.