diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml index db7afd0..924167c 100644 --- a/.github/workflows/canary.yml +++ b/.github/workflows/canary.yml @@ -8,7 +8,7 @@ # datacentre address, listings and product pages answered HTTP 200 to a plain # `curl`, to `python-requests` and to a request with no User-Agent header at # all, with no challenge of any kind. A GitHub runner is a datacentre address -# too, so this workflow re-measures that claim every morning. +# too, so this workflow re-measures that claim every Monday. # # **A canary that CAN pass without a credential must never be gated on one.** # If Kosé ever puts its catalogue behind a key or a bot manager, this badge @@ -16,8 +16,7 @@ # remembering to. # # The last job exercises the PAID path (the Scraping Browser API over CDP), -# which cannot run without a secret, and bills a session, so it runs on the -# weekly (Monday) schedule and on a manual dispatch only. It does not pass by skipping: with no +# which cannot run without a secret. It does not pass by skipping: with no # secret it FAILS with an ::error:: naming the secret, because a green check # that tested nothing reads exactly like one that tested something. # @@ -32,9 +31,6 @@ on: schedule: # 05:40 UTC. Not on the hour: every scheduled workflow on GitHub fires at # :00 and the queue there is long. - - cron: "40 5 * * *" - # Mondays only: the paid job (scraping_browser) runs on this - # schedule (each run bills); the free jobs keep the daily one above. - cron: "40 5 * * 1" workflow_dispatch: @@ -381,8 +377,6 @@ jobs: scraping_browser: name: Scraping Browser API (needs the KOSE_CDP_ENDPOINT secret) - # Paid path: weekly schedule or a manual dispatch only. - if: github.event_name != 'schedule' || github.event.schedule == '40 5 * * 1' runs-on: ubuntu-latest timeout-minutes: 20 env: diff --git a/CHANGELOG.md b/CHANGELOG.md index db5bd7b..f3be8db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,9 +12,7 @@ existing user would notice, the release notes lead with it. ### Changed -- CI only: the canary's paid `scraping_browser` job now runs weekly (Mondays - 05:40 UTC) and on a manual dispatch; the free `listing`, `http_vs_browser` and - `product` jobs still run daily. +- CI only: the whole canary, free and paid jobs alike, now runs weekly (Mondays 05:40 UTC) and on a manual dispatch; the daily schedule is removed. ## [0.3.0] — 2026-10-15 diff --git a/README.md b/README.md index 176c8d6..7ce7534 100644 --- a/README.md +++ b/README.md @@ -249,7 +249,7 @@ So until this repo had a browserless engine, every long title came back short — **10 of 72 rows** on one live 3-page run — and nothing could see it, because there was nothing to disagree with. The parser now recovers the full name from the thumbnail's `alt`, which the rewrite does not touch and which -is present on 171 of 171 measured tiles. The canary runs both engines daily +is present on 171 of 171 measured tiles. The canary runs both engines weekly (Mondays) and fails if any field differs. **The brand in a URL selects nothing.** `/site/xyz/c/c15/` returns diff --git a/smoke_test.py b/smoke_test.py index b4b2278..9ace717 100644 --- a/smoke_test.py +++ b/smoke_test.py @@ -2156,14 +2156,14 @@ def check_captcha_capability_claims_match_the_code(): # rots the moment the site switches a bot manager on. # # So the claim has to be PAIRED with the thing that would retest it — the - # daily canary — rather than left as a sentence nobody re-measures. + # scheduled canary — rather than left as a sentence nobody re-measures. claims_no_key = ("no, and it would be dishonest" in low or "do i need a 2captcha account" in low) if claims_no_key: check("README pairs 'no key needed' with the canary that retests it", "canary" in low, "a claim that the site is ungated goes stale silently; the " - "daily canary is what turns it back into a measurement") + "scheduled canary is what turns it back into a measurement") check("...and dates the measurement it rests on", re.search(r"20\d\d-\d\d-\d\d", readme) is not None, "a number describing a living thing needs its moment")