Class IssueWorkflowResolutionResponse
One way an issue can end, declared by the team's workflow — Done, Won't do, and
whatever else a team needs.
public record IssueWorkflowResolutionResponse : IEquatable<IssueWorkflowResolutionResponse>
- Inheritance
-
IssueWorkflowResolutionResponse
- Implements
- Inherited Members
Remarks
A workflow has one exit rather than one per outcome: Todo → Doing → Closed, with the
reason held on the issue. That keeps "is this finished" a single question — a set of
terminal states has to be enumerated everywhere it is asked, and every place that forgets one
gives a silently wrong answer. Outcomes also multiply where states should not: adding
Duplicate as a resolution is one row, adding it as a state is a node plus a transition
from everything that can reach it.
The names are the team's own, for the same reason state names are. What is not the team's own is whether an ending counts as a delivery, and that is what IsSuccess carries: a roadmap has to draw an abandoned issue differently from a shipped one, and it cannot do that by recognising particular words without rendering every team with a different vocabulary as one flat colour. So the flag carries the meaning and the name carries the language.
Declared on the workflow rather than as a closed enum because an importer mirroring an external
tracker needs somewhere to put that tracker's term — GitHub's not_planned, Jira's
Won't Fix, a Trello list — and a closed set would force a Toolkit release for every new
source. Same reasoning as Kind.
Properties
IsSuccess
Whether ending here counts as having delivered the work. false is the case this type
exists for: an issue that was decided against is finished, but it did not ship, and a map
that draws the two alike is telling a reader something untrue.
public required bool IsSuccess { get; init; }
Property Value
Name
The resolution's name, unique within the workflow, and what an issue stores.
public required string Name { get; init; }
Property Value
Order
Display order, ascending.
public required int Order { get; init; }