Repository navigation
Conversation
The old module submitted 143k pages and never recorded what IndexNow accepted. These tables hold the accepted fingerprint per URL, a batch ledger for the daily cap, and the backoff clock.
A URL is a candidate only when new or its sitemap lastmod moved. One run and one day have hard caps, so a bulk lastmod bump drains slowly. A 429 stores a retry time, and three failures halt the task with a reason.
The task reuses the existing :10 trigger. Production smoke now requires the key file to answer 200 with the key, since IndexNow answers 403 without it.
🤖 BLOCKED
Selected findings run after merge and open separate pull requests. |
Experiment D links harlanzw.com posts to two skilld pages. Both need to be indexable whatever their quality score, so a probe row waives the score and nothing else. Renumber the migration to 0129, because the IndexNow PR (#320) takes 0128.
A thrown send or a D1 failure after an accepted batch now counts against the caps and adds a strike. A 400 or 422 halves the next request. Retry-After is honoured up to seven days. Response bodies reach the halt reason.
| @@ -0,0 +1,29 @@ | |||
| -- IndexNow submission memory. | |||
There was a problem hiding this comment.
Open (82/100): The new migration duplicates number 0128, which the base already uses, failing the repository's own migration-naming gate and the deploy that depends on it.
Proof: The base already carries migrations/0128_skill_trending_admissions.sql (present in 1a6e81f), so this head has two 0128_* files. Running the repo's own verifier on the directory returns {"_tag":"fail","issues":[{"_tag":"duplicate_number","nu.
Next: Rename 0128_indexnow.sql to the next free number, coordinating with the #322 claim recorded in RESERVED_MIGRATION_NUMBERS (scripts/lib/d1-schema-verifier.ts:251-254), and update that map.
Harlan Agent Kit posted this automated review. It is not Harlan's personal review or approval. AI open source policy.
There was a problem hiding this comment.
Harlan Agent Kit posted this automated review. AI open source policy.
Automated Review: BLOCKED.
❓ Type of change
📚 Description
Experiment A (Bing as a control) needs IndexNow back.
nuxt-ai-ready2.x dropped its IndexNow support in #53, so nothing submits today. The old submitter sent 424k submissions for 143k pages and drew HTTP 429 for eight days.This adds a small submitter that cannot flood by design:
flowchart LR T[indexnow-submit, hourly at :10] --> K{key file 200?} K -->|no| X[log reason, send nothing] K -->|yes| G{gate open?} G -->|closed| L[log reason, send nothing] G -->|open| S[curated sitemaps via SELF] S --> P[new or lastmod moved; run cap 200, day cap 1000] P --> W[write ledger row and pending strike] W --> I[POST api.indexnow.org] I -->|200 or 202| R[settle: record fingerprints, clear strikes] I -->|429, 5xx, thrown| B[settle: keep strike, store retry time] I -->|400 or 422| Q[halve next request, skip a lone bad URL] B -->|3 strikes| H[halt 24h or Retry-After, max 7 days]lastmodmoved. A bulklastmodbump drains over days because of the caps.Retry-After). Three failures halt the task for 24 hours. The reason goes toconsole.error, a wide event andsync_jobs.lastmodmoves. Other 4xx halt for 24 hours. A 200 character excerpt of the response body reaches the log and halt reason.Retry-Afteris honoured up to 7 days, on a backoff and on a halt.server/handlers/indexnow-key.ts, registered fromINDEXNOW_KEY), so the Worker serves it whether or not the assets router runs. The staticpublic/copy is gone. The task and production smoke both require 200 with the key.10 * * * *trigger. Migration0128adds three small tables.Not tried: a live submission to
api.indexnow.org. After deploy, readindexnow_batchesand theindexnow-submitrow insync_jobsonce the first :10 tick has run.