Pre-RC smoke matrix (v1.0.0-rc1)

Self-contained scenarios required before 1.0-RC packaging; all are implemented under internal/smoke with t.TempDir(), no external S3, and HTTP only via httptest (webhook rows).

Scenario Test (Go) Notes
Filesystem → local TestSmoke_filesystemLocal_minimal testdata/smoke/filesystem-local/
Encrypted filesystem → local TestSmoke_filesystemLocal_encrypted testdata/smoke/filesystem-local-encrypted/ + IOB_SMOKE_BK_KEY
Verify after successful run TestSmoke_Verify_afterRun VerifyArtifact after RunSuccess
Webhook success TestSmoke_Webhook_success httptest + on_success job-level hook
Webhook failure / timeout TestSmoke_Webhook_timeout_or_failure Non-2xx + client timeout; run still succeeds
Cancel TestSmoke_Cancel_blockingSource fault_smoke_test.go + fault source
Timeout TestSmoke_Timeout_slowStream Short job timeout + slow source
Destination failure TestSmoke_Failure_destFailBeforeWrite Fault destination before write
Recovery stale pending run TestSmoke_Recovery_stalePendingRun Pre-seeded DB + agent reopen
Idempotency replay TestSmoke_Idempotency_replaySameRun Same idempotency key → same run_id
Agent restart (same DB) TestSmoke_e2e_lab_agentRestartSameDB internal/smoke/e2e_lab_restart_test.go (E2E lab 0.58)

Gates: go test ./internal/smoke -count=1 and go test ./internal/smoke -count=10 (stability).

Related: docs/providers/provider-smoke-coverage.md, docs/internal/reports/examples-to-smoke-matrix.md.