Skip to content

Status Mapping

GuideMode normalizes status values from all connected providers (GitHub, Jira, Linear, Notion) into a unified workflow model. This enables consistent metrics, WIP tracking, and time-in-status analytics across your entire organization.

Different tools represent workflow states differently:

  • GitHub: Open/Closed states, with optional GitHub Projects v2 columns
  • Jira: Custom workflow statuses like “In Progress”, “Code Review”, “QA”
  • Linear: State types (unstarted, started, completed) with custom states
  • Notion: Database status properties with custom options

GuideMode maps all of these to a canonical model with:

  • 9 SubStatus values for fine-grained workflow tracking
  • 3 Issue States derived from SubStatus for high-level filtering

SubStatus provides granular workflow state tracking:

SubStatusDescriptionStateIn WIP?
backlogNot started, not prioritizedopenNo
readyReady to start, prioritizedopenNo
discoveryResearch, spike, or design workin_progressYes
deliveryActive developmentin_progressYes
reviewCode review, testing, QAin_progressYes
blockedWaiting on external dependencyopenNo
parkedIntentionally pausedopenNo
doneCompleted successfullyclosedNo
canceledClosed without completionclosedNo

The three high-level states are derived from SubStatus:

Diagram
StateDerived From SubStatuses
openbacklog, ready, blocked, parked
in_progressdiscovery, delivery, review
closeddone, canceled

The full workflow state machine showing all valid transitions:

Diagram
FromToWhen
backlogreadyIssue is prioritized for upcoming work
readydiscoveryResearch or design phase begins
readydeliveryDevelopment starts (no discovery needed)
discoverydeliveryResearch complete, development begins
deliveryreviewCode complete, ready for review/testing
reviewdoneReview approved, issue complete
Any → blockedWaiting on external dependency
Any → parkedIntentionally paused
Any → canceledClosed without completion

When mapping provider status to SubStatus, GuideMode uses this priority:

Diagram
  1. Project + Repository specific (highest)
  2. Project specific
  3. Repository specific
  4. Global (lowest)

This allows different projects or repositories to have different status mappings.

GuideMode includes built-in heuristics for common status names:

GitHub issues have simple Open/Closed states, but GitHub Projects v2 provides custom column statuses:

Status PatternSubStatus
closed:COMPLETEDdone
closed:NOT_PLANNEDcanceled
closed (default)done
Backlog, No Status, Newbacklog
Todo, To Do, Readyready
Spike, Research, Discoverydiscovery
In Progress, In Developmentdelivery
In Review, Code Review, Testing, QAreview
Blocked, Waiting, Awaitingblocked
On Hold, Parkedparked
Done, Complete, Shippeddone
Canceled, Won't Fixcanceled
Status PatternSubStatus
Backlog, To Do, Open, Newbacklog
Ready, Selected for Developmentready
Discovery, Spike, Research, Analysisdiscovery
In Progress, Development, Codingdelivery
In Review, Code Review, Testing, QAreview
Blocked, On Hold, Waiting, Pendingblocked
Parked, Deferred, Postponedparked
Done, Closed, Resolved, Shippeddone
Canceled, Won't Do, Duplicate, Rejectedcanceled
Status PatternSubStatus
Backlog, Triage, Unstartedbacklog
Todo, To Do, Ready, Up Nextready
Discovery, Spike, Researchdiscovery
In Progress, Started, Doing, Activedelivery
In Review, Review, Testing, QAreview
Blocked, Waiting, On Holdblocked
Parkedparked
Done, Complete, Completed, Mergeddone
Canceled, Duplicatecanceled
Status PatternSubStatus
Not Started, Backlog, Newbacklog
To Do, Ready, Plannedready
Discovery, Research, Exploringdiscovery
In Progress, Doing, Active, Workingdelivery
Review, In Review, Testingreview
Blocked, On Hold, Waitingblocked
Parked, Pausedparked
Done, Complete, Finished, Shippeddone
Canceled, Archived, Droppedcanceled

Work In Progress (WIP) metrics only count issues that are actively being worked on:

SubStatusIncluded in WIP?Reason
backlogNoNot started
readyNoWaiting to start
discoveryYesActive research
deliveryYesActive development
reviewYesActive review/testing
blockedNoWaiting on dependency
parkedNoIntentionally paused
doneNoCompleted
canceledNoClosed

This ensures WIP metrics accurately reflect work that is actively consuming team capacity.

GuideMode tracks comprehensive timestamps for time-in-status analytics:

Diagram
TimestampDescriptionSet When
createdAtWhen issue was createdInitial creation
startedAtWhen work beganFirst transition to in_progress (legacy)
updatedAtLast modificationAny update
closedAtWhen issue was closedState → closed
firstResponseAtFirst comment or reviewFirst engagement

Each SubStatus transition is tracked with a dedicated timestamp:

Diagram
TimestampDescriptionTriggered By
readyAtWhen issue became prioritizedSubStatus → ready
discoveryStartedAtWhen research/spike beganSubStatus → discovery
deliveryStartedAtWhen active development beganSubStatus → delivery
reviewStartedAtWhen entered review/QASubStatus → review
blockedAtWhen became blockedSubStatus → blocked
parkedAtWhen intentionally pausedSubStatus → parked

Notes:

  • backlog has no timestamp (initial state)
  • done and canceled use closedAt
  • Timestamps are set on transition TO the state, not FROM it
Diagram

These timestamps enable powerful metrics:

MetricCalculation
Lead TimeclosedAt - createdAt
Cycle TimeclosedAt - startedAt (or deliveryStartedAt)
Discovery DurationdeliveryStartedAt - discoveryStartedAt
Development DurationreviewStartedAt - deliveryStartedAt
Review DurationclosedAt - reviewStartedAt
Time to ReadyreadyAt - createdAt
Time BlockedSum of periods in blocked state

Configure custom mappings in Settings → Integrations → Status Mappings.

FieldDescription
externalStatusThe status name from the provider
internalSubStatusThe GuideMode SubStatus to map to
projectIdOptional - scope to specific project
repositoryIdOptional - scope to specific repository
External StatusSubStatusScope
In DevelopmentdeliveryGlobal
Awaiting PR ReviewreviewGlobal
Customer Validationreviewfrontend-project
Sprint Backlogreadymobile-repo

GuideMode stores the original provider status in the nativeStatus field. This allows:

  • Debugging mapping issues
  • Reconfiguring mappings without data loss
  • Provider-specific filtering in advanced queries