@amykit/workflow-ticket-to-qa
v0.4.0
Published
The ticket-to-QA workflow: its states, its typed port contracts, and a pure plan().
Readme
@amykit/workflow-ticket-to-qa
The ticket-to-QA workflow: its states, its typed port contracts, and a pure plan().
A workflow for amy: a pure plan() that says what
happens next, and a runtime that says how each step is done. The engine drives it without
knowing what any of its states mean.
Install
npm install -g @amykit/workflow-ticket-to-qaThen name it in ~/.amy/config.yaml:
workflows:
ticket-to-qa:
workflow: "@amykit/workflow-ticket-to-qa"The lifecycle
| State | Kind |
| :-- | :-- |
| DISCOVERED | initial |
| CLARIFYING | waiting |
| READY | working |
| IMPLEMENTING | working |
| CHECKED | working |
| SELF_REVIEW | working |
| PR_OPEN | working |
| COPILOT_WAIT | waiting |
| COPILOT_FIX | working |
| REVIEWER_ASSIGNED | working |
| HUMAN_REVIEW | waiting |
| HUMAN_FIX | working |
| ESCALATED | waiting |
| RE_REVIEW | working |
| APPROVED | working |
| QA_HANDOFF | working |
| DONE | terminal |
It emits address-threads, announce, ask-question, assign-reviewer, escalate, hand-off-to-qa, implement, open-pull-request, request-rereview, resolve-review-thread, run-gate, self-review and triage.
Configuration
plugins:
"@amykit/workflow-ticket-to-qa":
baseBranch: {}
defaultBranch: "main"
policy: {}
qaStatusName: <string>
repos: <string[]>| Setting | Type | Required | Default | What it is |
| :-- | :-- | :-- | :-- | :-- |
| baseBranch | record | no | {} | where one repository's base branch is, instead of the fallback. A repository named here has its work cut from, and its pull requests opened against, that branch |
| defaultBranch | string | no | main | the branch new work is cut from, for a repository that named none, which is not always main |
| policy | record | no | {} | maxImplementAttempts, maxGateAttempts, pollBackoffMs, rosterBackoffMs, maxOpenReviewsPerReviewer, maxPullRequestFiles and maxPullRequestLines. Anything left out keeps its default |
| qaStatusName | string | yes | | the status a ticket moves to when it is handed to QA |
| repos | string[] | yes | | every repository review load is counted across |
Every field is checked at boot against the schema this package declares. A key that is not one of the above is a refusal naming the plugin and the key, not a setting that silently never applied.
Where the reasoning is
Licence
MIT
