fix(mwpw-184989): send x-session-id to the LLM proxy and stop Feature QA failing silently - #600
fix(mwpw-184989): send x-session-id to the LLM proxy and stop Feature QA failing silently#600sanrai wants to merge 1 commit into
Conversation
… QA failing silently The proxy now rejects requests without x-session-id (HTTP 403 missing_required_header). Only qa-runner-v2.mjs sent it, so Agent QA Review kept working while every direct caller started 403ing. On PR #591 that killed feature-review.mjs at its first LLM call: three 403s, llm failed after retries, and the top-level catch exited 0. Green job, no comment - even though build-output-diff had already published NO_CHANGE and review-score-gate had auto-passed the PR. - add x-session-id to all eight direct proxy callers - feature-review.mjs: fall back to postNonInjectable when the triage model is unavailable, so the deterministic bundle-diff verdict is still reported (it is a REST status read, it never needed a model) - feature-review.mjs: write FEATURE_REVIEW_FAILED on an unhandled error - qa-feature-review.yml: log that marker to the shared monitor issue, mirroring qa-agent-review.yml, so a silent outage is visible Claude-Session: https://claude.ai/code/session_01QimdQaYPSvXAaSDAssrfK1
Agent QA review — interactive + visual diff (advisory, non-blocking)Last updated Aug 26, 2026, 1:54 AM PDT · PR opened · commit 0 open · 0 resolved · visual diff 0.00% · verdict PASS Open findings
What the agent checkedTested PR #600 against the live business.adobe.com/resources/main.html CaaS collection. Context: PR #600 is a CI/QA-tooling-only change (adds x-session-id header to internal LLM-proxy callers in .github/qa/*.mjs scripts and the qa-feature-review workflow). It does not touch any frontend/CaaS rendering code. This matches what I observed: the supplied pixel diff (diff.png) showed no magenta/colored regions and 0.00% pixel difference between PR build and stable build — i.e., no visual/functional change is expected on the actual page. What I did on the live page:
Conclusion: No visual or functional regressions were found on the live page attributable to PR #600. This is expected since the PR only modifies GitHub Actions QA/CI scripts (adding an x-session-id header to LLM proxy calls and fixing silent failure in feature-review.mjs) — it does not touch any block/component code that renders on business.adobe.com. The filter panel, search box, industry accordion, and card grid all function and render as expected, matching stable behavior. No layout breakage, no accessibility violations, no console errors introduced. Verdict: PASS — the PR's actual code changes are CI-tooling only and correctly produce zero rendering impact on the live page, consistent with the 0.00% pixel diff. All interactive elements tested (search, filter accordions, clear buttons, card grid) work as expected with no regressions. PR / stable / diff screenshots + console + axe artifacts in the workflow run. Review history (1 run)
|
🧪 Feature QA review — injected feature test (advisory, non-blocking)Last updated Aug 26, 2026, 1:56 AM PT · commit Overall: SKIPPED Not an injectable feature -- skipped.
This PR's change isn't driven by config/collection data the harness can force, and the build-output-diff verdict wasn't available to consult. (The visual/smoke review still applies.) Screenshot in the workflow run. Review history (1 run)
|
AI Code ReviewLast updated Aug 26, 2026 1:56 AM PDT · PR opened · commit 1 open · 0 resolved · this run: +1 new Open findings
Review history (1 run)
|
|

0 New Issues
0 Fixed Issues
0 Accepted Issues
No data about coverage (91.00% Estimated after merge)
What broke
On #591 the deterministic layer worked perfectly —
build-output-diffpublishedNO_CHANGEandreview-score-gateauto-passed the PR withauto-pass: deps-dev + build-output-diff NO_CHANGE (bundle byte-identical).No agent ever said so. Feature QA Review — the one wired to report exactly that — died at its first LLM call (run 32946357057, job
98107789143):The proxy started requiring
x-session-id. Onlyqa-runner-v2.mjsever sent it — which is why Agent QA Review kept working (it shells out to that runner) while every direct caller began 403ing.Then
.catch(e => { console.error(...); process.exit(0) })at the bottom offeature-review.mjsturned the crash into a green job with no comment and no notification. Nothing anywhere said the run had failed.What this changes
1. Send the header.
x-session-id(onerandomUUID()per process, same shape asqa-runner-v2.mjs) added to all eight direct proxy callers:feature-review.mjs·feature-backtest-worker.mjs·feature-backtest-batch.mjs·action-judge.mjs·ai-judge-test.mjs·mobile-probe.mjs·plan-probe.mjs·aggregate-report.mjs2. Stop gating a deterministic fact behind a model.
bundleDiffVerdict()is a commit-status read over the REST API — it needs no LLM at all. But it only runs after the triage LLM call, so a dead proxy took the bundle-diff report down with it. The triage call is now wrapped: on transport failure the agent falls through topostNonInjectable()and still reports SAFE (no bundle change) or NEEDS REVIEW (bundle changed).That alone would have given #591 the comment it should have had.
3. Make silent outages visible.
feature-review.mjsnow writes aFEATURE_REVIEW_FAILEDmarker on an unhandled error, andqa-feature-review.ymllogs it to the sharedCI: AI / Agent review tool failuresissue — the same monitorqa-agent-review.ymlhas had all along. The PR check still stays green; the failure just stops being invisible.Notes
.github/qa/and one workflow only..github/qa/is outside thenpm run lintpath (react/src/js/components/Consonant), so no lint impact.qa-feature-review.yml's explicit reviewer copy-list is unchanged.node --checkacross.github/qa/*.mjsand a YAML parse of the workflow.Testing
The real check is the next run of this workflow on any PR: Feature QA Review should post a comment again instead of finishing green and silent. Worth a
workflow_dispatchagainst #591 once this lands.