Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 2 additions & 8 deletions .github/workflows/canary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# Two jobs, because the site has two answers and both are claims the README
# makes:
#
# datacentre DATACENTRE REFUSAL EXPECTED. No secrets, daily. A
# datacentre DATACENTRE REFUSAL EXPECTED. No secrets, weekly. A
# GitHub runner is a datacentre address, and from one
# (a netcup VPS, 2026-09-24, and every scheduled run of
# this job since) Akamai refused every client, real
Expand All @@ -18,8 +18,7 @@
#
# scraping-browser the path measured to work, and the one that reads real
# rows: a Scraping Browser profile with an Indian exit,
# weekly (Mondays) and on dispatch, since every run
# bills a session. It FAILS, with an error naming
# on the same schedule. It FAILS, with an error naming
# the secret, when MAKEMYTRIP_CDP_ENDPOINT is not set,
# and it fails on a refusal, on "never obtained" (a 401
# is a refused endpoint: set a fresh secret) and on too
Expand All @@ -39,9 +38,6 @@ name: canary
on:
schedule:
# 05:50 UTC. Not on the hour: every scheduled workflow fires at :00.
- cron: "50 5 * * *"
# Mondays only: the paid job (scraping-browser) runs on this
# schedule (each run bills); the free jobs keep the daily one above.
- cron: "50 5 * * 1"
workflow_dispatch:

Expand Down Expand Up @@ -101,8 +97,6 @@ jobs:
if-no-files-found: ignore

scraping-browser:
# Paid path: weekly schedule or a manual dispatch only.
if: github.event_name != 'schedule' || github.event.schedule == '50 5 * * 1'
runs-on: ubuntu-latest
timeout-minutes: 20
env:
Expand Down
3 changes: 1 addition & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ said so at the top of its release notes.

### Changed

- CI only: the canary's paid `scraping-browser` job now runs weekly (Mondays
05:50 UTC) and on a manual dispatch; the free `datacentre` job still runs daily.
- CI only: the whole canary, free and paid jobs alike, now runs weekly (Mondays 05:50 UTC) and on a manual dispatch; the daily schedule is removed.

## [0.2.0] — 2026-10-15

Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ history needs a decision, not a red check on every push.
Then the rest of the presentation, in the order that matters:

1. `python3 smoke_test.py` green, and the canary dispatched at least once,
both halves. The daily job needs no secrets: it runs from a GitHub runner
both halves. The weekly (Monday) `datacentre` job needs no secrets: it runs from a GitHub runner
(a datacentre address) and asserts that Akamai's refusal is reported as
exit 3, not as an empty or a crashed run, and if the runner is ever
served it checks the rows strictly instead. The second job runs on the
Expand Down
5 changes: 2 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -260,11 +260,10 @@ site's own end, a refused parameter, each of Akamai's three refusals, a
landing that timed out, an empty listing, a throttle and a city name that is
no city.

The [canary](.github/workflows/canary.yml) runs twice over. Daily, with no
The [canary](.github/workflows/canary.yml) runs twice over, weekly (Mondays). With no
secrets, from a GitHub runner: a datacentre, so it asserts the refusal is
REPORTED as one (exit 3, never a crash or an "empty listing"); that job
tests the refusal path, not extraction. Weekly (Mondays), because each run
bills a session, through a Scraping Browser profile: a real 3-page Goa scrape, checked for prices,
tests the refusal path, not extraction. Through a Scraping Browser profile: a real 3-page Goa scrape, checked for prices,
currency, duplicates and zero ratings. That job fails when its secret is
missing or refused, so the badge is green only when real rows were read.

Expand Down
Loading