Skip to content

Retiring an entity with status --archive is undocumented and leaves the move uncommittable #790

Description

@clkao

Problem

status --archive <slug> exists and works, but it is not listed in status --help's flag list, and after it runs the retirement cannot be committed through state commit:

spacedock status --workflow-dir <wf> --archive <slug>
  archived: <state>/_archive/<slug>

spacedock state commit <slug> --workflow-dir <wf>
  state commit: archived entity "<slug>" is dirty; archived scope is publish-only and
  will not stage or commit it:
  D  <slug>/index.md
  ?? _archive/<slug>/index.md

So the move only becomes durable with a manual path-scoped git add -A <slug> _archive/<slug> && git commit in the state checkout. The dangerous part is not the extra command, it is that the verb reports success while leaving the state checkout dirty; an FO that trusts the output walks away with an uncommitted retirement.

Reproduction

  1. Entity at <slug>/index.md in a split-root state checkout (no origin).
  2. spacedock status --workflow-dir <wf> --archive <slug> → prints archived: …/_archive/<slug>.
  3. spacedock state commit <slug> --workflow-dir <wf> → prints the refusal above, exit 0, nothing committed.
  4. git -C <state> status --porcelain → deletion of the active path plus untracked archive path.

Expected

List the verb in status --help, and make the retirement durable: either --archive commits the move itself, or state commit learns the archived scope. A success message should not be followed by silently uncommitted state.

Context

Observed on spacedock 0.28.0-pre2+dev (contract 3, pi host) on 2026-09-14, four retirements in one session (superseded, never-delivered entities). merge guard --rework correctly clears a pending terminal approval and the mod-block, but it does not archive, so retiring an entity always ends in this hand-rolled commit.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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