ReviewOS

also looking at this

stacks/drone

test: exercise full host filesystem recovery

#58
Merged chris wants to merge codex/runtime-full-volume-recovery into main
13 files +644 -5
.github/workflows/ci.ymlmodified+40-0
Changes to .github/workflows/ci.yml
@@ -32,7 +32,27 @@ jobs:
3232 - run: python3 -m unittest discover -s tests/hardware
3333 - name: Verify a kernel-confirmed full input pipe on Linux
3434 run: bun test tests/unit/runtime.test.ts --test-name-pattern 'kernel-confirmed full input FIFO'
35 - name: Verify an actual partial host image write and fresh-process recovery
36 env:
37 RUNTIME_HOST_FILE_LIMIT_EVIDENCE: ${{ runner.temp }}/runtime-host-file-limit-evidence
38 run: bun test tests/unit/updates-host-writes.test.ts
39 - uses: actions/upload-artifact@v4
40 if: always()
41 with:
42 name: runtime-host-file-limit-evidence
43 if-no-files-found: ignore
44 retention-days: 7
45 path: ${{ runner.temp }}/runtime-host-file-limit-evidence
3546 - run: ./buddy test
47 env:
48 RUNTIME_HOST_FILE_LIMIT_EVIDENCE: ${{ runner.temp }}/runtime-host-file-limit-full-evidence
49 - uses: actions/upload-artifact@v4
50 if: always()
51 with:
52 name: runtime-host-file-limit-full-evidence
53 if-no-files-found: ignore
54 retention-days: 7
55 path: ${{ runner.temp }}/runtime-host-file-limit-full-evidence
3656 - run: bun run runtime:cli
3757 - name: Verify signed test-image staging through the portable CLI outside the checkout
3858 run: bun tests/fixtures/updates/qualify.ts "$RUNNER_TEMP/runtime-update-qualification" "$GITHUB_WORKSPACE/storage/runtime-build/cli/drone"
@@ -414,6 +434,26 @@ jobs:
414434 - run: bun install --frozen-lockfile
415435 - run: cp .env.example .env
416436 - run: ./buddy key:generate
437 - name: Qualify actual ENOSPC and fresh runtime recovery in a private filesystem
438 shell: bash
439 run: |
440 set -euo pipefail
441 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
442 - name: Make the owned filesystem campaign artifacts readable by the runner
443 if: always()
444 shell: bash
445 run: |
446 set -euo pipefail
447 if sudo --non-interactive test -d "$RUNNER_TEMP/runtime-host-enospc"; then
448 sudo --non-interactive chown -R --no-dereference "$(id -u):$(id -g)" "$RUNNER_TEMP/runtime-host-enospc"
449 fi
450 - uses: actions/upload-artifact@v4
451 if: always()
452 with:
453 name: runtime-host-enospc-evidence
454 if-no-files-found: ignore
455 retention-days: 7
456 path: ${{ runner.temp }}/runtime-host-enospc
417457 - name: Qualify accepted purge with real process and mount isolation
418458 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
419459 firmware: