Skip to content

Rebuild the landmark data every week, and put it on the site - #108

Merged
octopranav merged 1 commit into
mainfrom
landmarks-schedule
Oct 4, 2026
Merged

octopranav merged 1 commit into
mainfrom
landmarks-schedule

Conversation

@octopranav

Copy link
Copy Markdown
Owner

The landmark archive, the name index and the app's place-name packs were rebuilt only when somebody ran the Landmarks workflow by hand, though GeoNames rewrites its dump every day.

Landmarks workflow

  • Runs on Mondays at 05:43 UTC (43 5 * * 1). GeoNames writes the day's dump at about 03:35 UTC. It still runs by hand too.
  • A scheduled run has no inputs, so level and slices fall back to 4 and 8 where they are used. They now go through env rather than into the script.
  • New step, "Compare with what is published", before anything is uploaded. It reads the published manifest.json (from landmarks.tar.gz) and packs.json. It refuses to publish if the landmarks, the shards or the packed names fall by more than 5%, or if a country loses its pack. A dump cut short builds without an error, so this is what would catch it. A failed check publishes nothing. If the data really did shrink, run it by hand with the new Publish even if the data shrank box ticked.

Pages workflow

  • The site downloads the archive from the release, so a new archive changed nothing in the tree and never deployed. Pages now has a workflow_run trigger on Landmarks and builds only when that run succeeded, so the site and the packs move together.

Checked

  • I pulled the guard step's script out of the YAML and ran it with a stand-in gh against the published data (6,556,364 landmarks, 82,251 shards, 7,361,276 packed names, 251 countries). A normal week passes. 10% fewer landmarks fails. Losing one country (LI) fails. A 4.9% drop in shards passes. With nothing published yet, it publishes. The summary table renders.
  • audit/deploys.py, audit/publishes.py and their tests pass. Both workflows parse.

Not covered here: GitHub turns off a public repository's schedule after 60 days with no activity, and sends an email first. The workflow header says where to turn it back on.

Docs: the workflow README table, web/README.md and android/PLAY.md now say when it runs.

GeoNames rewrites its dump every day, and the landmark archive, the name
index and the app's place-name packs were only rebuilt when somebody ran the
Landmarks workflow. It now also runs on Mondays at 05:43 UTC, two hours
after the day's dump is written. A scheduled run has no inputs, so the level
and slice defaults are given again where they are used, now through the
environment rather than pasted into the script.

Nobody reads a scheduled run before it publishes, so a new step does: it
measures what was built against what is published, the landmarks, their
shards, the packed names and the countries with a pack, and refuses to
publish a fall of more than one part in twenty or a country with no pack.
A dump cut short builds without an error, and this is what would catch it.
A smaller archive on purpose is published by hand, with the new "Publish
even if the data shrank" box ticked. Tried against the published data: a
normal week passes, a tenth fewer landmarks and one lost country are
refused, a fall of 4.9% passes, and a repository with nothing published yet
publishes.

The site fetches the archive from the release, so a new one changed nothing
in the tree and never deployed. The Pages workflow now follows every
Landmarks run and builds after one that published, so the site and the packs
move together.

The workflow README, web/README.md and PLAY.md say when it runs.
@octopranav
octopranav merged commit ace585f into main Oct 4, 2026
22 checks passed
@octopranav
octopranav deleted the landmarks-schedule branch October 4, 2026 20:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant