From e3ff3f15875645c07a057d2c084680a7ff1ede54 Mon Sep 17 00:00:00 2001 From: Vijay Janapa Reddi Date: Wed, 28 Jan 2026 09:31:49 -0500 Subject: [PATCH] chore: swap Stage 6/7 order - Fresh Install before User Journey --- .github/workflows/tinytorch-validate-dev.yml | 108 +++++++++---------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/.github/workflows/tinytorch-validate-dev.yml b/.github/workflows/tinytorch-validate-dev.yml index ac0822087..815e22410 100644 --- a/.github/workflows/tinytorch-validate-dev.yml +++ b/.github/workflows/tinytorch-validate-dev.yml @@ -419,10 +419,39 @@ jobs: ./bin/tito dev test --e2e --ci # =========================================================================== - # STAGE 6: RELEASE VALIDATION - Destructive full journey (after all stages) + # STAGE 6: FRESH INSTALL - Simulates real student experience # =========================================================================== - stage-6-release: - name: ๐ŸŽ“ Stage 6 ยท User Journey + # Note: Skipped for fork PRs because the branch doesn't exist in main repo + stage-6-fresh-install: + name: ๐Ÿ“ฆ Stage 6 ยท Fresh Install + runs-on: ubuntu-latest + needs: [configure, stage-5-e2e] + # Run on standard/all/release test types, after stage 5 passes + # Skip for fork PRs (branch doesn't exist in main repo for install script) + if: | + always() && + (needs.configure.outputs.run_e2e == 'true' || needs.configure.outputs.run_release == 'true') && + (needs.stage-5-e2e.result == 'success' || needs.stage-5-e2e.result == 'skipped') && + (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) + timeout-minutes: 30 + + steps: + - name: Checkout (for test script only) + uses: actions/checkout@v4 + with: + sparse-checkout: | + tinytorch/scripts/test-fresh-install.sh + + - name: Run Fresh Install Test (Docker) + run: | + chmod +x tinytorch/scripts/test-fresh-install.sh + ./tinytorch/scripts/test-fresh-install.sh --branch ${{ github.ref_name }} + + # =========================================================================== + # STAGE 7: USER JOURNEY - Destructive full journey (after all stages) + # =========================================================================== + stage-7-user-journey: + name: ๐ŸŽ“ Stage 7 ยท User Journey runs-on: ubuntu-latest needs: [configure, stage-5-e2e] # Only run if: release enabled AND all previous stages passed @@ -450,48 +479,19 @@ jobs: python -m pip install --upgrade pip pip install -r requirements.txt - - name: Run Release Validation + - name: Run User Journey Validation run: | - echo "๐Ÿš€ Running DESTRUCTIVE release validation..." - echo " This resets all modules and runs the full student journey." + echo "๐ŸŽ“ Running user journey validation..." + echo " This resets all modules and runs the full user journey." ./bin/tito dev test --user-journey --ci - # =========================================================================== - # STAGE 7: FRESH INSTALL - Simulates real student experience - # =========================================================================== - # Note: Skipped for fork PRs because the branch doesn't exist in main repo - stage-7-fresh-install: - name: ๐Ÿ“ฆ Stage 7 ยท Fresh Install - runs-on: ubuntu-latest - needs: [configure, stage-5-e2e] - # Run on standard/all/release test types, after stage 5 passes - # Skip for fork PRs (branch doesn't exist in main repo for install script) - if: | - always() && - (needs.configure.outputs.run_e2e == 'true' || needs.configure.outputs.run_release == 'true') && - (needs.stage-5-e2e.result == 'success' || needs.stage-5-e2e.result == 'skipped') && - (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) - timeout-minutes: 30 - - steps: - - name: Checkout (for test script only) - uses: actions/checkout@v4 - with: - sparse-checkout: | - tinytorch/scripts/test-fresh-install.sh - - - name: Run Fresh Install Test (Docker) - run: | - chmod +x tinytorch/scripts/test-fresh-install.sh - ./tinytorch/scripts/test-fresh-install.sh --branch ${{ github.ref_name }} - # =========================================================================== # Summary: Collect and report all results # =========================================================================== summary: name: ๐Ÿ“Š Summary runs-on: ubuntu-latest - needs: [configure, stage-1-inline, stage-2-unit, stage-3-integration, stage-4-cli, stage-5-e2e, stage-6-release, stage-7-fresh-install] + needs: [configure, stage-1-inline, stage-2-unit, stage-3-integration, stage-4-cli, stage-5-e2e, stage-6-fresh-install, stage-7-user-journey] if: always() steps: @@ -566,26 +566,26 @@ jobs: echo "| 5 | ๐ŸŒ E2E Tests | โญ๏ธ Skipped |" >> $GITHUB_STEP_SUMMARY fi - # Stage 6: User Journey - if [ "${{ needs.configure.outputs.run_release }}" = "true" ]; then - case "${{ needs.stage-6-release.result }}" in - success) echo "| 6 | ๐Ÿš€ Release | โœ… Passed |" >> $GITHUB_STEP_SUMMARY ;; - failure) echo "| 6 | ๐Ÿš€ Release | โŒ Failed |" >> $GITHUB_STEP_SUMMARY ;; - *) echo "| 6 | ๐Ÿš€ Release | โญ๏ธ ${{ needs.stage-6-release.result }} |" >> $GITHUB_STEP_SUMMARY ;; + # Stage 6: Fresh Install + if [ "${{ needs.configure.outputs.run_e2e }}" = "true" ] || [ "${{ needs.configure.outputs.run_release }}" = "true" ]; then + case "${{ needs.stage-6-fresh-install.result }}" in + success) echo "| 6 | ๐Ÿ“ฆ Fresh Install | โœ… Passed |" >> $GITHUB_STEP_SUMMARY ;; + failure) echo "| 6 | ๐Ÿ“ฆ Fresh Install | โŒ Failed |" >> $GITHUB_STEP_SUMMARY ;; + *) echo "| 6 | ๐Ÿ“ฆ Fresh Install | โญ๏ธ ${{ needs.stage-6-fresh-install.result }} |" >> $GITHUB_STEP_SUMMARY ;; esac else - echo "| 6 | ๐Ÿš€ Release | โญ๏ธ Skipped |" >> $GITHUB_STEP_SUMMARY + echo "| 6 | ๐Ÿ“ฆ Fresh Install | โญ๏ธ Skipped |" >> $GITHUB_STEP_SUMMARY fi - # Stage 7: Fresh Install - if [ "${{ needs.configure.outputs.run_e2e }}" = "true" ] || [ "${{ needs.configure.outputs.run_release }}" = "true" ]; then - case "${{ needs.stage-7-fresh-install.result }}" in - success) echo "| 7 | ๐Ÿ“ฆ Fresh Install | โœ… Passed |" >> $GITHUB_STEP_SUMMARY ;; - failure) echo "| 7 | ๐Ÿ“ฆ Fresh Install | โŒ Failed |" >> $GITHUB_STEP_SUMMARY ;; - *) echo "| 7 | ๐Ÿ“ฆ Fresh Install | โญ๏ธ ${{ needs.stage-7-fresh-install.result }} |" >> $GITHUB_STEP_SUMMARY ;; + # Stage 7: User Journey + if [ "${{ needs.configure.outputs.run_release }}" = "true" ]; then + case "${{ needs.stage-7-user-journey.result }}" in + success) echo "| 7 | ๐ŸŽ“ User Journey | โœ… Passed |" >> $GITHUB_STEP_SUMMARY ;; + failure) echo "| 7 | ๐ŸŽ“ User Journey | โŒ Failed |" >> $GITHUB_STEP_SUMMARY ;; + *) echo "| 7 | ๐ŸŽ“ User Journey | โญ๏ธ ${{ needs.stage-7-user-journey.result }} |" >> $GITHUB_STEP_SUMMARY ;; esac else - echo "| 7 | ๐Ÿ“ฆ Fresh Install | โญ๏ธ Skipped |" >> $GITHUB_STEP_SUMMARY + echo "| 7 | ๐ŸŽ“ User Journey | โญ๏ธ Skipped |" >> $GITHUB_STEP_SUMMARY fi - name: Check for failures @@ -613,12 +613,12 @@ jobs: echo "โŒ Stage 5 (E2E Tests) failed" FAILED=true fi - if [ "${{ needs.configure.outputs.run_release }}" = "true" ] && [ "${{ needs.stage-6-release.result }}" = "failure" ]; then - echo "โŒ Stage 6 (User Journey) failed" + if { [ "${{ needs.configure.outputs.run_e2e }}" = "true" ] || [ "${{ needs.configure.outputs.run_release }}" = "true" ]; } && [ "${{ needs.stage-6-fresh-install.result }}" = "failure" ]; then + echo "โŒ Stage 6 (Fresh Install) failed" FAILED=true fi - if { [ "${{ needs.configure.outputs.run_e2e }}" = "true" ] || [ "${{ needs.configure.outputs.run_release }}" = "true" ]; } && [ "${{ needs.stage-7-fresh-install.result }}" = "failure" ]; then - echo "โŒ Stage 7 (Fresh Install) failed" + if [ "${{ needs.configure.outputs.run_release }}" = "true" ] && [ "${{ needs.stage-7-user-journey.result }}" = "failure" ]; then + echo "โŒ Stage 7 (User Journey) failed" FAILED=true fi