What Changed (Migration)
This PR is a rewrite of one file, .github/workflows/sandbox-qa.yml, at +62 / −189 lines. It's a net deletion — the workflow got much smaller. This page is the before/after for reviewers.
Business view
Before, the QA agent lived entirely on the GitHub pull request. It offered five actions — review, plan, test, fix, and full-auto — plus a scope toggle to re-run only failures. Its output was: a review comment, a plan comment, a summary comment, and one GitHub issue per test case. You steered it by editing the review/plan comments; the next action read your edits back.
After, the QA work moved to Atlassian. The actions are now the four phases (prepare, test, retest, fix); the plan lives in a Jira epic, the review and results live in a Confluence page, and the pull request keeps just one summary comment with links. You steer it by editing the epic and commenting on tickets.
The full-auto "do everything unattended" option is gone — on purpose. So is the per-story GitHub issue machinery.
Technical view
Inputs
| Before | After |
|---|---|
action: review, plan, test, fix, full-auto (default test) | action: prepare, test, retest, fix (default prepare) |
scope: all / failed-only (test only) | (removed) |
.github/workflows/sandbox-qa.yml:33-42. retest is new; review, plan, and full-auto are gone; prepare roughly absorbs the old review + plan.
Steps removed
The diff deletes three substantial chunks:
- "Fetch edited review / plan comments" — a whole
github-scriptstep that, before runningplanortest, read the human-edited<!-- sandbox-qa-review -->and<!-- sandbox-qa-plan -->comments back off the PR into temp files for the agent. Gone entirely — the review/plan-as-PR-comments model is retired. - The env wiring for it —
QA_SCOPE,QA_REVIEW_FILE,QA_PLAN_FILEenv vars on the agent step. Gone; onlyGITHUB_TOKENremains (:60-61). - "Publish comments + story issues" — the ~130-line heart of the old workflow. It created labels (
ai-automated,pr-<n>), created/updated one GitHub issue per story (matching[QA-n]title prefixes onfixre-runs), opened extra "technical findings" issues, closed passed/fixed stories, and built a summary comment with per-story pass/fail counts. All deleted.
Steps kept but simplified
- "Update PR summary comment" (
:66-114) replaces the old publish step. It now only upserts one comment with the Jira/Confluence links and the agent summary — no issues, no labels, no counts. See Workflow Internals. - "Upload run artifacts" (
:116-123) is essentially unchanged — same state-dir archive, 14-day retention.
Comment-marker change
The summary marker stayed <!-- sandbox-qa-report -->, but the <!-- sandbox-qa-review --> and <!-- sandbox-qa-plan --> markers are no longer produced or consumed anywhere. If old PRs still carry those comments, nothing reads them now.
Permissions
Unchanged block — contents: write, pull-requests: write, issues: write (:48-51). Worth noting: issues: write was previously used heavily (creating story issues); now it's used only to post the one PR comment (a PR comment is an issue comment in the API). The permission is no longer over-exercised, but it's also no longer strictly minimal — it could arguably narrow, but PR comments still require it.
What did NOT change in this repo
sandbox.ymlandsandbox-ops.ymlare untouched by this PR. The sandbox deploy/teardown and the branch-docs generation still work exactly as before.- The
sandbox-qabinary andatlassian-qa.pyare not in this repo and thus not in this diff. The migration's real substance — teaching the agent to speak Jira and Confluence — happened on the homelab and is invisible here. This diff is only the GitHub-side rewiring.
Gaps between the PR description and the diff
Documented honestly, for reviewers:
- The PR body describes Stories, cross-links to PR/sandbox/docs, per-ticket screenshots, Bug tickets, and a Confluence results table. None of that is in the diff — it's all in the off-repo agent. The diff only links out to
JIRA_EPIC_URLandCONFLUENCE_URL. - The body says "GitHub story-issues are retired." ✅ True and verifiable — the entire issue-creation block is deleted.
- The body says the pipeline runs "Foreground with live agent streaming." ✅ Consistent with the workflow: one foreground
run:step,set -e, no--detach(contrastsandbox.yml:66which does detach the docs agent).
See also
- Workflow Internals — the after-state, line by line.
- For Quality — what to verify given these gaps.