also looking at this
feat: continue unresolved runtime update maintenance
#59
21 files
+1097
-40
| @@ -43,9 +43,21 @@ jobs: | ||
| 43 | 43 | if-no-files-found: ignore |
| 44 | 44 | retention-days: 7 |
| 45 | 45 | path: ${{ runner.temp }}/runtime-host-file-limit-evidence |
| 46 | - name: Verify explicit maintenance handoff interruption and fresh-process recovery | |
| 47 | env: | |
| 48 | RUNTIME_MAINTENANCE_EVIDENCE: ${{ runner.temp }}/runtime-maintenance-evidence | |
| 49 | run: bun test tests/unit/updates-maintenance-cuts.test.ts | |
| 50 | - uses: actions/upload-artifact@v4 | |
| 51 | if: always() | |
| 52 | with: | |
| 53 | name: runtime-maintenance-evidence | |
| 54 | if-no-files-found: ignore | |
| 55 | retention-days: 7 | |
| 56 | path: ${{ runner.temp }}/runtime-maintenance-evidence | |
| 46 | 57 | - run: ./buddy test |
| 47 | 58 | env: |
| 48 | 59 | RUNTIME_HOST_FILE_LIMIT_EVIDENCE: ${{ runner.temp }}/runtime-host-file-limit-full-evidence |
| 60 | RUNTIME_MAINTENANCE_EVIDENCE: ${{ runner.temp }}/runtime-maintenance-full-evidence | |
| 49 | 61 | - uses: actions/upload-artifact@v4 |
| 50 | 62 | if: always() |
| 51 | 63 | with: |
| @@ -53,6 +65,13 @@ jobs: | ||
| 53 | 65 | if-no-files-found: ignore |
| 54 | 66 | retention-days: 7 |
| 55 | 67 | path: ${{ runner.temp }}/runtime-host-file-limit-full-evidence |
| 68 | - uses: actions/upload-artifact@v4 | |
| 69 | if: always() | |
| 70 | with: | |
| 71 | name: runtime-maintenance-full-evidence | |
| 72 | if-no-files-found: ignore | |
| 73 | retention-days: 7 | |
| 74 | path: ${{ runner.temp }}/runtime-maintenance-full-evidence | |
| 56 | 75 | - run: bun run runtime:cli |
| 57 | 76 | - name: Verify signed test-image staging through the portable CLI outside the checkout |
| 58 | 77 | run: bun tests/fixtures/updates/qualify.ts "$RUNNER_TEMP/runtime-update-qualification" "$GITHUB_WORKSPACE/storage/runtime-build/cli/drone" |
| @@ -68,6 +87,18 @@ jobs: | ||
| 68 | 87 | run: bun tests/fixtures/updates/qualify-candidates.ts "$RUNNER_TEMP/runtime-candidates-qualification" "$GITHUB_WORKSPACE/storage/runtime-build/cli/drone" |
| 69 | 88 | - name: Verify host slots, observed health and interrupted recovery with a copied standalone CLI |
| 70 | 89 | run: bun tests/fixtures/updates/qualify-host-slots.ts "$RUNNER_TEMP/runtime-host-slots-qualification" "$GITHUB_WORKSPACE/storage/runtime-build/cli/drone" "$GITHUB_WORKSPACE" |
| 90 | - name: Verify explicit maintenance and format-4 runtime health through a copied CLI | |
| 91 | run: bun tests/fixtures/updates/qualify-maintenance.ts "$RUNNER_TEMP/runtime-maintenance-cli" "$GITHUB_WORKSPACE/storage/runtime-build/cli/drone" | |
| 92 | - uses: actions/upload-artifact@v4 | |
| 93 | if: always() | |
| 94 | with: | |
| 95 | name: runtime-maintenance-cli-evidence | |
| 96 | if-no-files-found: ignore | |
| 97 | include-hidden-files: true | |
| 98 | retention-days: 7 | |
| 99 | path: | | |
| 100 | ${{ runner.temp }}/runtime-maintenance-cli | |
| 101 | !${{ runner.temp }}/runtime-maintenance-cli/drone | |
| 71 | 102 | - uses: actions/upload-artifact@v4 |
| 72 | 103 | if: always() |
| 73 | 104 | with: |
| @@ -434,6 +465,26 @@ jobs: | ||
| 434 | 465 | - run: bun install --frozen-lockfile |
| 435 | 466 | - run: cp .env.example .env |
| 436 | 467 | - run: ./buddy key:generate |
| 468 | - name: Qualify actual ENOSPC and fresh runtime recovery in a private filesystem | |
| 469 | shell: bash | |
| 470 | run: | | |
| 471 | set -euo pipefail | |
| 472 | sudo --non-interactive env RUNTIME_HOST_ENOSPC_TEST=1 RUNTIME_HOST_ENOSPC_EVIDENCE="$RUNNER_TEMP/runtime-host-enospc" unshare --mount --propagation private --fork "$(command -v bun)" test ./tests/integration/runtime-host-storage.test.ts | |
| 473 | - name: Make the owned filesystem campaign artifacts readable by the runner | |
| 474 | if: always() | |
| 475 | shell: bash | |
| 476 | run: | | |
| 477 | set -euo pipefail | |
| 478 | if sudo --non-interactive test -d "$RUNNER_TEMP/runtime-host-enospc"; then | |
| 479 | sudo --non-interactive chown -R --no-dereference "$(id -u):$(id -g)" "$RUNNER_TEMP/runtime-host-enospc" | |
| 480 | fi | |
| 481 | - uses: actions/upload-artifact@v4 | |
| 482 | if: always() | |
| 483 | with: | |
| 484 | name: runtime-host-enospc-evidence | |
| 485 | if-no-files-found: ignore | |
| 486 | retention-days: 7 | |
| 487 | path: ${{ runner.temp }}/runtime-host-enospc | |
| 437 | 488 | - name: Qualify accepted purge with real process and mount isolation |
| 438 | 489 | run: sudo --non-interactive env PUBLIC_SAFETY_PURGE_NAMESPACE_TEST=1 unshare --fork --pid --mount-proc "$(command -v bun)" test ./tests/integration/public-safety-purge.test.ts |
| 439 | 490 | firmware: |