-
Notifications
You must be signed in to change notification settings - Fork 5
docs: add PROCESS.md — QMS compliance workflow for GitHub/Jira/Ketryx/Confluence [PYSDK-81] #566
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||
|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,174 @@ | ||||||||
| # Engineering Process Guide | ||||||||
|
|
||||||||
| This document describes how the tools and processes used in this repository — GitHub, Jira, Ketryx, and the Confluence-based QMS — relate to each other and how to follow them correctly as an engineer or AI assistant. | ||||||||
|
|
||||||||
| ## Tool Roles | ||||||||
|
|
||||||||
| | Tool | Role | | ||||||||
| |------|------| | ||||||||
| | **GitHub** | Source code, pull requests, CI/CD, code review | | ||||||||
| | **Jira** | Ticket tracking for anomalies, change requests, tasks | | ||||||||
| | **Ketryx** | Regulated release management — links Jira tickets to releases, collects approvals, enforces traceability | | ||||||||
| | **Confluence (QMS)** | SOPs and work instructions that define the mandatory processes | | ||||||||
|
|
||||||||
| Ketryx sits on top of Jira: it reads Jira tickets of specific types (Anomaly, Change Request) and enforces that they are approved and linked before a release can be closed. A Ketryx release cannot be approved unless all linked items in Jira are in `Closed` status with the required approvals. | ||||||||
|
|
||||||||
| --- | ||||||||
|
|
||||||||
| ## Process 1: Fixing a Bug (Anomaly → PR) | ||||||||
|
|
||||||||
| Governed by [PR-SOP-01](https://aignx.atlassian.net/wiki/spaces/QMS/pages/1992786094) and [CC-WI-01](https://aignx.atlassian.net/wiki/spaces/QMSYSTEM/pages/2847604792). | ||||||||
|
|
||||||||
| ### When to open an Anomaly ticket | ||||||||
|
|
||||||||
| Open a Jira Anomaly ticket (type `Anomaly`) on the `PYSDK` board when: | ||||||||
|
|
||||||||
| - A bug is found in **Staging or Production** deployment environments | ||||||||
| - A known issue will be shipped to Production in an upcoming release | ||||||||
|
|
||||||||
| Issues found only during local development or in feature branches do **not** require an Anomaly ticket. | ||||||||
|
|
||||||||
| ### Step-by-step | ||||||||
|
|
||||||||
| ``` | ||||||||
| 1. Open Anomaly ticket in Jira (PYSDK board, type: Anomaly) | ||||||||
| - Fill: Description, Deployment Environment, Severity, Introduced in Version | ||||||||
| - Status: Entry → In Progress | ||||||||
|
|
||||||||
| 2. Investigate root cause | ||||||||
| - Determine Root Cause Category: | ||||||||
| a. Implementation Error → fix code, no Change Request needed | ||||||||
| b. Specification Defect or Requirement Defect → open a Change Request ticket (CC-WI-01) | ||||||||
| c. Duplicate → link to original, resolve | ||||||||
| d. No Change Required → document rationale, resolve | ||||||||
|
|
||||||||
| 3. Create a GitHub PR | ||||||||
| - Title: follow conventional commits (fix: ...) | ||||||||
| - PR body: include link to the Jira Anomaly ticket | ||||||||
| Example: "Resolves PYSDK-78: https://aignx.atlassian.net/browse/PYSDK-78" | ||||||||
| - Add label: skip:test:long_running | ||||||||
|
||||||||
| - Add label: skip:test:long_running | |
| - Add label: skip:test:long_running unless this PR needs long-running test coverage |
Copilot
AI
Apr 24, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the Change Request PR example, the ticket key in the text ("PYSDK-CR-XX") doesn’t match the Jira URL (currently points to /browse/PYSDK-XX). This makes the copy/paste example incorrect; align the URL with the same ticket key used in the example text (or change the example text to match the URL).
| Example: "Implements PYSDK-CR-XX: https://aignx.atlassian.net/browse/PYSDK-XX" | |
| Example: "Implements PYSDK-CR-XX: https://aignx.atlassian.net/browse/PYSDK-CR-XX" |
Copilot
AI
Apr 24, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same as Process 1: recommending skip:test:long_running as an unconditional step may lead to skipping needed long-running coverage. Consider mirroring the repo guidance (e.g. .github/CLAUDE.md:1008) by framing this as optional “unless you need long tests”, or by stating when it should/shouldn’t be applied.
| - Add label: skip:test:long_running | |
| - If long-running tests are not needed for this change, add label: skip:test:long_running | |
| - Do not add this label when the change requires long-running test coverage |
Copilot
AI
Apr 24, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For Change Requests, step 5 says the PR URL can be added to "Resolved by" or as a comment. Earlier the doc describes bidirectional traceability as a required mechanism via the dedicated field ("Resolved by"). To avoid ambiguity (and potential compliance/tooling gaps), please specify the single required location/field for CR → PR linking, or explicitly document which options are accepted and why.
| - Add PR URL to "Resolved by" or as a comment on the CR ticket | |
| - Add the PR URL to the CR ticket's "Resolved by" field | |
| - A Jira comment may be added for extra context, but it does not replace the required "Resolved by" link |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This line refers to Jira ticket types as “(Anomaly, Change Request)”, but later the document specifies the Jira issue type name as
Ketryx Change Request. To avoid confusion about the exact Jira issue type Ketryx expects, consider using consistent terminology here (e.g., “Anomaly” and “Ketryx Change Request (Jira issue type)”).