Ticket Workflow¶
PIPE: Feature / Bug / Epic Ticket¶
Applies to the following PIPE issue types: Feature, Bug, Epic, and Sub-task. Engineering and Research Request tickets follow similar but simplified workflows — see below.
States¶
Open: Initial state of a new ticket.
Reviewed: Accepted into the backlog “To-Do” list based on scientific or operational priority and available resources; not yet actively worked. Tickets targeting a specific release are labeled accordingly.
Input Required: Awaiting requirements or clarifying information from a stakeholder or developer.
Implementing: Actively being developed; a branch exists. Can transition to Verifying, directly to Validating, Input Required, or Reviewed.
Note
Open a Draft/WIP Pull Request as early as the prototyping stage to allow team feedback on algorithm and implementation choices. Use a descriptive title such as
WIP: PIPE-1234: implementing bugfix for task.Maintain a clear PR description and informative inline comments to surface design questions, explain rationale, and aid both the developer and reviewer.
Tip
A draft PR or a temporary branch used to demonstrate code capability is a legitimate and encouraged collaboration tool — our distributed team relies on asynchronous discussion and co-development. Repository settings are in place to prevent accidental merges into
mainor direct commits to the remotemainbranch.Verifying: Assigned to other developer(s) for code review and cross-check changes before stakeholder validation. Do not advance to Validating until the development team is satisfied — a single code review approval is sufficient for narrow, well-scoped changes; broader changes should have wider review. A ticket may cycle through Implementing, Verifying, and Validating multiple times before merging.
Note
Weblog storage: Post PR testing results to the observatory’s internal weblog storage so reviewers and stakeholders can assess impact without needing raw data or deep familiarity with the issue. Use
<PIPE-1234>as the subdirectory name; weblogs and log files are typically sufficient — avoid large data files. Organize results into labeled sub-directories (e.g.PIPE-1234/main,PIPE-1234/pipe1234-v1-attempt1,PIPE-1234/pipe1234-v2-attempt2). Directories may be removed after the code is released.Early merge exception: If both the stakeholder and technical lead agree, a narrow, well-scoped change may be merged into
mainafter verification and before formal validation. This still requires at least one developer approval, all PR tasks resolved, and all automated tests passing. TheValidating-MAINlabel must be applied and a merge comment posted with the commit tag (e.g.,2026.1.1.1); the ticket then advances to Validating, where validation occurs onmain.
Validating: Assigned to a stakeholder to validate against the ticket branch, or against
mainif theValidating-MAINlabel is set. On acceptance, moves to Pending Release; if issues are found, returns to Implementing and may cycle through Verifying and Validating again.Note
Independent validation: For code changes directly contributed by a scientist, the validator must be someone other than the original contributor and should be selected from the stakeholder group to ensure independent validation.
Pending Release: Implementation complete; branch ready to merge into
mainpending release. If unexpected issues arise after merging, the ticket can return to Implementing.Closed / Released: Set in bulk via the Jira bulk change tool once a software version is officially released.
flowchart TD
START(( )) --> OPEN
OPEN <--> INPUT_REQUIRED
OPEN --> IMPLEMENTING
OPEN --> CLOSED_RELEASED
OPEN --> REVIEWED
INPUT_REQUIRED <--> REVIEWED
INPUT_REQUIRED --> IMPLEMENTING
REVIEWED --> IMPLEMENTING
REVIEWED --> CLOSED_RELEASED
IMPLEMENTING --> VERIFYING
IMPLEMENTING --> INPUT_REQUIRED
IMPLEMENTING --> VALIDATING
IMPLEMENTING --> REVIEWED
VERIFYING --> VALIDATING
VALIDATING --> IMPLEMENTING
VALIDATING --> PENDING_RELEASE
PENDING_RELEASE --> IMPLEMENTING
PENDING_RELEASE --> CLOSED_RELEASED
INPUT_REQUIRED(INPUT REQUIRED)
PENDING_RELEASE(PENDING RELEASE)
CLOSED_RELEASED(CLOSED / RELEASED)
OPEN(OPEN)
REVIEWED(REVIEWED)
IMPLEMENTING(IMPLEMENTING)
VERIFYING(VERIFYING)
VALIDATING(VALIDATING)
classDef navy fill:#1e3264,stroke:#1e3264,color:#fff
classDef blue fill:#1a5fbf,stroke:#1a5fbf,color:#fff
classDef green fill:#15803d,stroke:#15803d,color:#fff
classDef gray fill:#9ca3af,stroke:#9ca3af,color:#9ca3af
class OPEN,INPUT_REQUIRED,REVIEWED navy
class IMPLEMENTING,VERIFYING,VALIDATING blue
class PENDING_RELEASE,CLOSED_RELEASED green
class START gray
PIPE: Engineering Task Ticket¶
Applies to the Engineering Task issue type. Covers internal infrastructure work — build system changes, CI/CD improvements, tooling, and dependency updates — with no direct scientific impact and no stakeholder validation. The Validating state is omitted. Minor non-production changes (documentation fixes, CI/CD updates) may be merged without formal review after contacting the technical lead for a repository permission override.
flowchart TD
START(( )) --> OPEN
OPEN <--> INPUT_REQUIRED
OPEN --> REVIEWED
OPEN --> IMPLEMENTING
OPEN --> CLOSED_RELEASED
INPUT_REQUIRED <--> REVIEWED
INPUT_REQUIRED --> IMPLEMENTING
REVIEWED --> IMPLEMENTING
REVIEWED --> CLOSED_RELEASED
IMPLEMENTING <--> VERIFYING
IMPLEMENTING --> INPUT_REQUIRED
IMPLEMENTING --> REVIEWED
VERIFYING --> PENDING_RELEASE
PENDING_RELEASE --> IMPLEMENTING
PENDING_RELEASE --> CLOSED_RELEASED
INPUT_REQUIRED(INPUT REQUIRED)
PENDING_RELEASE(PENDING RELEASE)
CLOSED_RELEASED(CLOSED / RELEASED)
OPEN(OPEN)
REVIEWED(REVIEWED)
IMPLEMENTING(IMPLEMENTING)
VERIFYING(VERIFYING)
classDef navy fill:#1e3264,stroke:#1e3264,color:#fff
classDef blue fill:#1a5fbf,stroke:#1a5fbf,color:#fff
classDef green fill:#15803d,stroke:#15803d,color:#fff
classDef gray fill:#9ca3af,stroke:#9ca3af,color:#9ca3af
class OPEN,INPUT_REQUIRED,REVIEWED navy
class IMPLEMENTING,VERIFYING blue
class PENDING_RELEASE,CLOSED_RELEASED green
class START gray
PIPE: Research Request Ticket¶
Applies to the Research Request issue type. Tracks investigative or exploratory work — data analysis, feasibility studies, or algorithm evaluations. No Verifying state; Implementing and Pending Release are bidirectional to support iterative research cycles.
flowchart TD
START(( )) --> OPEN
OPEN <--> INPUT_REQUIRED
OPEN --> REVIEWED
OPEN --> IMPLEMENTING
OPEN --> CLOSED_RELEASED
INPUT_REQUIRED <--> REVIEWED
INPUT_REQUIRED <--> IMPLEMENTING
REVIEWED <--> IMPLEMENTING
REVIEWED --> CLOSED_RELEASED
IMPLEMENTING <--> PENDING_RELEASE
PENDING_RELEASE --> CLOSED_RELEASED
INPUT_REQUIRED(INPUT REQUIRED)
PENDING_RELEASE(PENDING RELEASE)
CLOSED_RELEASED(CLOSED / RELEASED)
OPEN(OPEN)
REVIEWED(REVIEWED)
IMPLEMENTING(IMPLEMENTING)
classDef navy fill:#1e3264,stroke:#1e3264,color:#fff
classDef blue fill:#1a5fbf,stroke:#1a5fbf,color:#fff
classDef green fill:#15803d,stroke:#15803d,color:#fff
classDef gray fill:#9ca3af,stroke:#9ca3af,color:#9ca3af
class OPEN,INPUT_REQUIRED,REVIEWED navy
class IMPLEMENTING blue
class PENDING_RELEASE,CLOSED_RELEASED green
class START gray
PIPEREQ: Epic / Improvement / Research Request Ticket¶
Applies to the following PIPEREQ issue types: Epic, Improvement, and Research Request. These tickets follow a separate, less formalized workflow.
flowchart TD
START(( )) --> IN_REVIEW
ALL1([All]) --> IN_REVIEW
ALL2([All]) --> DONE
IN_REVIEW --> SCHEDULED
SCHEDULED --> READY_TO_VALIDATE
READY_TO_VALIDATE --> DONE
IN_REVIEW(IN REVIEW)
SCHEDULED(SCHEDULED)
READY_TO_VALIDATE(READY TO VALIDATE)
DONE(DONE)
classDef lightblue fill:#93c5fd,stroke:#93c5fd,color:#1e3264
classDef blue fill:#1a5fbf,stroke:#1a5fbf,color:#fff
classDef mint fill:#a7f3d0,stroke:#a7f3d0,color:#065f46
classDef gray fill:#9ca3af,stroke:#9ca3af,color:#9ca3af
classDef dark fill:#1f2937,stroke:#1f2937,color:#fff
class IN_REVIEW,READY_TO_VALIDATE lightblue
class SCHEDULED blue
class DONE mint
class START gray
class ALL1,ALL2 dark
States¶
In Review: Research in progress, discussion ongoing; not yet ready for a PIPE ticket.
Scheduled: Requirements converged; PIPE ticket(s) created and linked.
Ready to Validate: Rarely used in practice.
Done: Linked PIPE ticket(s) closed.