Skip to content

status --set treats a verdict= value as a terminal transition — blocks non-terminal stage moves #623

Description

@nnunley

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions