Commit Graph

3 Commits (e054b0afbbcaa1f626787aaf65b215f1936e97f4)

Author SHA1 Message Date
Kálmán „KAMI” Szalai e054b0afbb Only fail the PR channel check on channels the PR itself broke
check_channels.py's exit code reflects every dead channel across the
whole list file it was pointed at, not just the ones a PR added or
changed. Since pr_check.yml ran the checker directly and let its exit
code decide the job's pass/fail, any PR touching a list that already
had pre-existing dead entries (which is most of them - dozens of
already-known-broken channels exist across these lists) got a red X
for something it never caused, even though the workflow's own summary
step already computed the right "touched vs already broken" split.

Fixes this by:
- letting the check step run to completion regardless of its exit
  code (the checker's own verdict on the whole file isn't this job's
  call to make)
- moving pass/fail into the summarize step, which already has the
  touched/others split: the job now fails only when a channel this PR
  itself added or changed comes back `dead`
- deliberately not failing on `blocked`/`unreachable`/`flaky` for
  touched channels either - these have real false-positive rates from
  the runner's own network (geo-blocks, a datacenter IP some providers
  reject, one slow probe), which is exactly why the *Channel check
  (deep)* workflow exists to give `dead`-looking channels a second
  opinion before anyone acts on them

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Enus8N247jHM5r5Som5JuU
2026-09-06 14:24:16 +02:00
Kálmán „KAMI” Szalai 708fd34750 Check the whole touched list at PR time, not just changed lines
Replaces iptv-checker (npm + ffmpeg) with check_channels.py:

- Checks every channel in a list a PR touches, existing and new, not just
  the added/changed rows - a PR editing italy.md now surfaces already-dead
  channels in italy.md too, not only the one line it changed.
- Uses check_channels.py's dead/blocked/unreachable/flaky states instead
  of a binary online/failed, so the summary no longer needs the "some of
  these failures are geo-blocks, use your judgment" disclaimer without
  telling reviewers which failures those are - blocked channels are now
  named as such.
- Summary separates what the PR actually added/changed from what was
  already broken in the same file, so a reviewer isn't left guessing
  whether a failure is theirs to fix.
- No ffprobe pass here (kept fast for a PR gate) - anything this flags as
  dead gets a second opinion from the scheduled Channel check (deep)
  workflow before anyone acts on it.

Verified end to end against a simulated PR diff.
2026-09-05 04:40:49 +02:00
Kálmán „KAMI” Szalai 988f3a768b Add weekly channel health trend report and per-PR link checker
Weekly trend workflow: runs the full iptv-checker weekly, keeps a
snapshot of failed URLs in .github/checker-history/failed.txt, and
reports newly-broken vs newly-recovered channels since the last run
in the job summary.

PR check workflow: on any PR touching lists/*.md, extracts only the
added/changed stream links from the diff and checks just those (not
the whole 2000+ channel playlist), reporting online/failed results
directly in the PR's Checks summary.
2026-08-18 12:47:38 +02:00