ci(webviews): isolate base comparison from react shards
Problem
react-apps-check (3) timed out after finishing the 249-file head suite because webviews-tests-new-reds.sh then installed dependencies and rebuilt the base checkout in the same 40-minute job. The head verdict was ready at 16:12:25, but the base setup still ran when the job was cancelled at 16:21:00.
Fix
PR shards now publish their per-shard head result JSON and finish without replaying the base. A separate four-way react-apps-base-check matrix checks out the PR base, installs/builds it, reruns only that shard's head-red files, and compares with guards_new_reds.py. The stable react-apps-check aggregate requires that comparison on pull requests while keeping push behavior unchanged.
This removes the base install/build from the head shard's timeout budget; shard 3 no longer loses its verdict to the in-job base replay.
Validation
python3 -m unittest tests/test_webviews_tests_new_reds.py(19 passed)actionlint .github/workflows/ci-web.ymlbash -n scripts/ci/webviews-tests-new-reds.shgit diff --check
agent-identity footer
Agent session: big-red
![View with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Need help on this PR? Tag @codesmith-bot with what you need.