Table of Contents

Class IssueWorkflowResolutionResponse

Namespace
Quilt4Net.Toolkit.Features.Issue
Assembly
Quilt4Net.Toolkit.dll

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

bool

Name

The resolution's name, unique within the workflow, and what an issue stores.

public required string Name { get; init; }

Property Value

string

Order

Display order, ascending.

public required int Order { get; init; }

Property Value

int