shipper block
shipper block
Section titled “shipper block”Usage: shipper block [options]
Record that an issue is blocked by other issues/PRs
Arguments
Section titled “Arguments”| Argument | Required | Description | Choices |
|---|---|---|---|
| yes | target Shipper issue ID, gh: | - | |
| <blockers…> | yes | one or more blocker Shipper IDs, gh: | - |
| Long | Short | Value | Default | Description | Choices |
|---|---|---|---|---|---|
| —reason | - | - | optional free-text reason | - |
Examples
Section titled “Examples”Record that S#42 is blocked by S#17.
shipper block S#42 S#17Record multiple external GitHub blockers with an explanatory reason.
shipper block S#42 gh:17 gh:29 --reason "Waiting for both dependencies."Exit Codes
Section titled “Exit Codes”| Code | When |
|---|---|
| 0 | The local store records blocked state and blockers, then GitHub label/comment mirrors are repaired. |
| 1 | Validation, issue lookup, blocker lookup, store update, label mutation, or comment creation fails. |
Constraints
Section titled “Constraints”- At least one blocker reference is required.
- Blocker references must be same-repository issues or pull requests expressed as
S#<n>,gh:<n>, or GitHub URLs. - Bare numbers resolve as Shipper issues first; use
gh:<n>,#<n>, or a GitHub URL for an external GitHub issue or PR. - Native dependencies created by grooming are stored as the same ordinary local Shipper blockers created by
shipper block; both use local-ID-first semantics for bare references. - The target cannot block itself, and each blocker must exist and still be unresolved.
- Blocked reasons and blocker sets are stored in the local workflow event log; the GitHub blocked comment is a projection that reconcile can repair.
- When a managed blocker later closes as not planned, a dependent at Groomed, Designed, or Planned returns to New while remaining blocked with every blocker preserved. New dependents need no move, and PR Open, Rework, Ready, and failed dependents remain at their current stage. Legacy reviewed labels receive the same preservation as PR Open.
- A return is durably deferred while the dependent has an active issue lock or unresolved closure hold, then applied at the next explicit issue synchronization or a reopen resolution.