PR Pipeline — Authorize → Validate → Review → Merge / auth (pull_request) Successful in 5s
PR Pipeline — Authorize → Validate → Review → Merge / validate (pull_request) Successful in 6s
PR Pipeline — Authorize → Validate → Review → Merge / lint (pull_request) Successful in 6s
PR Pipeline — Authorize → Validate → Review → Merge / ai-review (pull_request) Successful in 5s
PR Pipeline — Authorize → Validate → Review → Merge / gate (pull_request) Successful in 1s
- ZULIP_API_KEY: no longer SystemExit, now reports 'credential-missing: ZULIP_API_KEY' - EMAIL_PASSWORD: no longer sys.exit(1), now appends to DEGRADED_LEGS and returns success - PVE API: fixed None check in storage section - Summary: reports degraded legs before summary This allows the digest to be produced and emailed even when credentials are missing, while still explicitly logging which legs are degraded. Test: empty env produces JSON report + degraded leg labels, no SystemExit.