feat(skills): design.md integration, shared video references, Claude Design gaps #4137
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: regression | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - main | |
| jobs: | |
| changes: | |
| name: Detect changes | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 2 | |
| outputs: | |
| code: ${{ steps.filter.outputs.code }} | |
| steps: | |
| # Force git-based change detection instead of the pull_request REST API. | |
| # The API path can fail the whole workflow on transient listFiles | |
| # timeouts before any regression shard even starts. | |
| - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| with: | |
| fetch-depth: 0 | |
| - uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4 | |
| id: filter | |
| with: | |
| token: "" | |
| filters: | | |
| code: | |
| - "packages/core/**" | |
| - "packages/producer/**" | |
| - "packages/engine/**" | |
| - "Dockerfile*" | |
| regression-shards: | |
| needs: changes | |
| if: needs.changes.outputs.code == 'true' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - shard: fast | |
| args: "--sequential --exclude-tags slow,render-compat,hdr" | |
| - shard: render-compat | |
| args: "--sequential gsap-letters-render-compat css-spinner-render-compat raf-ball-render-compat iframe-render-compat" | |
| - shard: hdr | |
| args: "--sequential hdr-regression hdr-hlg-regression" | |
| - shard: styles-a | |
| args: "style-1-prod style-2-prod style-3-prod" | |
| - shard: styles-b | |
| args: "style-4-prod style-5-prod style-6-prod" | |
| - shard: styles-c | |
| args: "style-7-prod style-8-prod style-9-prod" | |
| - shard: styles-d | |
| args: "style-10-prod style-11-prod style-12-prod" | |
| - shard: styles-e | |
| args: "style-13-prod style-15-prod style-16-prod" | |
| - shard: styles-f | |
| args: "style-17-prod style-18-prod" | |
| - shard: styles-g | |
| args: "overlay-montage-prod" | |
| steps: | |
| - name: Checkout (with LFS) | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| with: | |
| lfs: true | |
| - name: Validate LFS files | |
| run: | | |
| echo "Checking golden baseline MP4s are real files (not LFS pointers)..." | |
| for mp4 in packages/producer/tests/*/output/output.mp4; do | |
| if [ -f "$mp4" ]; then | |
| size=$(stat --format=%s "$mp4") | |
| if [ "$size" -lt 1000 ]; then | |
| echo "ERROR: $mp4 appears to be an LFS pointer ($size bytes)" | |
| exit 1 | |
| fi | |
| echo "OK: $mp4 ($size bytes)" | |
| fi | |
| done | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3 | |
| - name: Build test Docker image (cached) | |
| uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6 | |
| with: | |
| context: . | |
| file: Dockerfile.test | |
| load: true | |
| tags: hyperframes-producer:test | |
| cache-from: type=gha,scope=regression-test-image | |
| cache-to: type=gha,mode=min,scope=regression-test-image | |
| - name: "Run regression shard: ${{ matrix.shard }}" | |
| run: | | |
| echo "Shard: ${{ matrix.shard }}" | |
| echo "Args: ${{ matrix.args }}" | |
| docker run --rm \ | |
| --security-opt seccomp=unconfined \ | |
| --shm-size=4g \ | |
| -v ${{ github.workspace }}/packages/producer/tests:/app/packages/producer/tests \ | |
| hyperframes-producer:test \ | |
| ${{ matrix.args }} | |
| - name: Upload failure artifacts | |
| if: failure() | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 | |
| with: | |
| name: regression-failures-${{ matrix.shard }} | |
| path: packages/producer/tests/*/failures/ | |
| if-no-files-found: ignore | |
| # Summary job — matches the required check name in branch protection | |
| regression: | |
| runs-on: ubuntu-latest | |
| needs: [changes, regression-shards] | |
| if: always() | |
| steps: | |
| - name: Check results | |
| run: | | |
| if [ "${{ needs.changes.outputs.code }}" != "true" ]; then | |
| echo "No code changes — skipping regression (auto-pass)" | |
| exit 0 | |
| fi | |
| if [ "${{ needs.regression-shards.result }}" != "success" ]; then | |
| echo "One or more regression shards failed" | |
| exit 1 | |
| fi |