ci: run QA smoke profile in CI#94291
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed June 24, 2026, 12:43 PM ET / 16:43 UTC. Summary PR surface: Tests +35, Config +26. Total +61 across 2 files. Reproducibility: not applicable. as a bug reproduction; the relevant proof path is the latest exact-head GitHub Actions Review metrics: 1 noteworthy metric.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Keep the split Do we have a high-confidence way to reproduce the issue? Not applicable as a bug reproduction; the relevant proof path is the latest exact-head GitHub Actions Is this the best way to solve the issue? Yes conditionally: splitting smoke into its own matrix task is the safer shape compared with folding it into AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against c5f10b5f7c00. Label changesLabel justifications:
Evidence reviewedPR surface: Tests +35, Config +26. Total +61 across 2 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
There was a problem hiding this comment.
Pull request overview
Adds a manually-dispatched GitHub Actions workflow for running QA Lab smoke evidence on Ubuntu runners, and introduces a QA Lab Evidence Archive surface (server endpoints + UI) for browsing qa-evidence.json bundles and declared artifacts.
Changes:
- Add dispatch-only
QA Lab Smoke Profileworkflow to runsmoke-ci(or a specificscenario_id) and upload.artifacts/qa-e2e/. - Add QA Lab Evidence Archive API routes (
/api/evidence,/api/evidence/artifact) plus an evidence gallery model for resolving/previewing declared artifacts. - Add QA Lab web UI tab + styling + tests for Evidence Archive rendering and UX Matrix mini-grid linking.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/qa-lab-smoke-profile.yml | New workflow_dispatch action to run QA Lab smoke profile/suite and upload evidence artifacts. |
| scripts/check-no-raw-channel-fetch.mjs | Updates allowlisted raw fetch callsite line numbers for QA Lab web app. |
| extensions/qa-lab/src/lab-server.ts | Adds evidence gallery API endpoints and artifact streaming with headers. |
| extensions/qa-lab/src/lab-server.test.ts | Adds server test coverage for evidence artifact HEAD/GET behavior and auth errors. |
| extensions/qa-lab/src/evidence-gallery.ts | New evidence gallery model + artifact resolution/containment logic + previews + UX Matrix context parsing. |
| extensions/qa-lab/src/evidence-gallery.test.ts | New tests for evidence gallery model building, containment, symlink defense, and producer context detection. |
| extensions/qa-lab/web/src/app.ts | Adds Evidence Archive state, URL parsing, loading behavior, and UI event handlers. |
| extensions/qa-lab/web/src/ui-render.ts | Adds Evidence Archive tab rendering, filtering, matrix mini-grid, and “Open evidence” affordance. |
| extensions/qa-lab/web/src/ui-render.test.ts | New render tests for evidence status tone mapping and UX Matrix cell linking behavior. |
| extensions/qa-lab/web/src/styles.css | Adds Evidence Archive layout/styles and evidence-focused shell mode. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d02aab0854
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
d02aab0 to
5ad7ca5
Compare
5ad7ca5 to
7510ca3
Compare
|
@clawsweeper re-review Updated this draft PR to do the cleanup ClawSweeper requested where possible:
This keeps the PR draft and documents the remaining maintainer decision: keep this as a dedicated workflow with first dispatch proof after/default-branch, or fold the command shape into an existing smoke-ci workflow so runner proof can happen pre-merge. |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
a668f3b to
21bebd4
Compare
What Problem This Solves
PR #95880 generalized QA profile evidence generation, but this smoke proof should run through normal CI planning rather than a separate manual wrapper or a category fanout. This PR folds the mock-backed
smoke-ciQA profile into the existingchecks-fast-bundled-protocolCI shard.Why This Change Was Made
smoke-ciuses mock-provider mode, so it does not needOPENAI_API_KEY. The CI workflow now builds the private QA runtime and runspnpm openclaw qa run --qa-profile smoke-ci --concurrency 8from the existingbundled-protocolfast-core task, then uploads.artifacts/qa-e2e/smoke-ci-profile/from that same job.The workflow does not re-list smoke category IDs from
taxonomy.yaml, does not addqa_categorymatrix entries, and does not createchecks-fast-qa-smoke-profile-*checks. The guard test asserts those constraints so category taxonomy stays single-sourced intaxonomy.yaml.The explicit
--concurrency 8is intentional:smoke-ciuses the Crabline-backed channel driver, and #95944 preserves Crabline unified-suite serial execution unless concurrency is explicitly overridden. The previous no-fanout CI run proved the shape but took 12m51s because it loggedrun start: scenarios=52 concurrency=1and then ran the isolated flow partitions one at a time.This branch is rebased over #96320, so the smoke profile cleanup lives separately and this PR remains scoped to the CI integration.
User Impact
No product runtime behavior changes. Full Node CI now produces QA smoke evidence from an existing fast-core shard without registering one runner per QA category. Scenario failures preserve the QA exit code while the
always()artifact upload still keeps evidence for debugging.Evidence
Current PR head:
e520229d2e7c8e095c6ec5aee16b39e432a780aa.Local checks on the rebased branch:
git diff --checknode scripts/run-vitest.mjs test/scripts/ci-workflow-guards.test.tsgo run github.com/rhysd/actionlint/cmd/[email protected] .github/workflows/ci.ymlsmokeCategoryCount=30,smokeScenarioCount=80,selectedSlowScenarios=[]Prior local and CI smoke timings/proof:
smoke-ci: 1631s, selected 34 categories / 86 scenarios, produced evidence but failed 59 passed / 27 failed before the perf(qa-lab): speed up unified QA suites #95944 optimizer work and test(qa): clean up smoke taxonomy profile #96320 taxonomy cleanup were folded in.28080234325after it created one check per QA category.checks-fast-bundled-protocolin run28080594830succeeded, uploadedqa-smoke-profile-28080594830-1, and took 12m51s because Crabline defaulted toconcurrency=1.gateway-runtime.websocket-connection, no--allow-failures, includingqaRuntimebuild: 14s and passed. This proves nativeexecution.kind=vitestQA scenarios work through this profile path.Linked Context
Related #94276
Related #94283
Related #94306
Related #95880
Related #95944
Related #95971
Related #96320
Risk Checklist
bundled-protocol, required-check failure on scenario failure, and a guard test tying the workflow to thesmoke-citaxonomy profile without duplicating category IDs.