IndexNow deployment discovery

Current implementation and verified gap

The public site already exposes robots.txt, a generated sitemap.xml, and the IndexNow key file 7c5062acbc32b8a88d2e6b627d65cbfa.txt. Before this change, no deployment workflow submitted updated URLs to an IndexNow endpoint, so participating search engines had to discover changes passively.

Goal

Notify participating search engines about every canonical URL in the generated sitemap after each successful publication commit to the site repository.

Boundaries

Protocol decision

The workflow uses the IndexNow batch endpoint after the site repository publish action succeeds. A Python standard-library module reads _publish/sitemap.xml, extracts unique HTTPS URLs owned by openprogram.io, and emits the documented JSON request. The request includes the host, public key, key location, and URL list. More than 10,000 URLs are split into multiple requests, matching the protocol's per-request limit.

Trust boundary and data flow

  1. The trusted documentation builder generates _publish/sitemap.xml.
  2. The payload builder reads only exact sitemap 0.9 loc elements and accepts only HTTPS URLs whose exact host is openprogram.io; empty and foreign-host inputs fail before network submission.
  3. The workflow writes validated request batches to an ephemeral runner directory.
  4. The standard-library HTTP client sends every batch to https://api.indexnow.org/indexnow with a bounded timeout and retries. A failed batch is recorded without skipping later batches; the step reports failure only after all batches have been attempted.

Alternatives considered

MechanismCoverageDecision
Passive sitemap discoveryAll sitemap-aware crawlersRetain; it does not notify crawlers when a deployment changes.
IndexNow batch submissionParticipating search enginesAdopt after every successful publication.
Google Search ConsoleGoogleRetain as a separately verified service; no deployment credential is added.

Failure handling

The submission step uses a bounded HTTP timeout and continue-on-error. Invalid sitemap URLs, payload construction errors, and endpoint failures fail the notification step without affecting the already completed site-repository publication. No repository secret is required because IndexNow ownership is proven by the public key file.

Compatibility and exclusions

Verification

Implementation evidence

Reviewed implementation commit f458791e8c245e642b563a5ffc9074c9758683ab adds the standard-library payload builder, batch submission, deployment hook, and eight focused regression cases. Independent specification and quality reviews both reached PASS after their recorded repair waves. Commands and final-gate results are recorded in the task ledger.