All releases
v2026-10-22
October 22, 2026
Patch
In this release
New44
Fixed39
Total83

server-authoritative deposit_succeeded event keyed by Stripe event id; browser purchase deduplicated

server-authoritative deposit_succeeded event keyed by Stripe event id; browser purchase deduplicated identity stitching — analytics.identify and hashed analytics user_id after login temp-mail MX browser compatibility and per-domain signup velocity limits for non-mainstream domains derive the anti-bot system device-check environment from the shared persona, plus a parity test against the real-browser capture passwordless email-code signup to replace the three-step password path

New Features

44

server-authoritative deposit_succeeded event keyed by Stripe event id; browser purchase deduplicated

server-authoritative deposit_succeeded event keyed by Stripe event id; browser purchase deduplicated

identity stitching — analytics.identify and hashed analytics user_id after login

identity stitching — analytics.identify and hashed analytics user_id after login

temp-mail MX browser compatibility and per-domain signup velocity limits for non-mainstream domains

temp-mail MX browser compatibility and per-domain signup velocity limits for non-mainstream domains

passwordless email-code signup to replace the three-step password path

passwordless email-code signup to replace the three-step password path

one canonical alternative page each for competitor, competitor and competitor, built on unique data

one canonical alternative page each for competitor, competitor and competitor, built on unique data

first-party analytics relay with server-side bot filtering, replacing the static screen-size exclusion

first-party analytics relay with server-side bot filtering, replacing the static screen-size exclusion

shared event registry with generated TS/Python constants and analytics reserved-param guard

shared event registry with generated TS/Python constants and analytics reserved-param guard

direct-answer pages for Bing's zero-click LLM fan-out queries, pushed via IndexNow

direct-answer pages for Bing's zero-click LLM fan-out queries, pushed via IndexNow

shared signup email assessor on every signup path with daily-synced disposable domain lists

shared signup email assessor on every signup path with daily-synced disposable domain lists

reproducible public success-rate benchmark page with methodology and raw data

reproducible public success-rate benchmark page with methodology and raw data

server-side bot classifier and analytics_events.is_bot excluded from Pathfinder rollups

server-side bot classifier and analytics_events.is_bot excluded from Pathfinder rollups

daily analytics reconciliation guard and signup-burst monitoring system

daily analytics reconciliation guard and signup-burst monitoring system

anti-bot system device-check differential capture: real-browser vs. QuickJS plaintext signals on the same sticky exit

anti-bot system device-check differential capture: real-browser vs. QuickJS plaintext signals on the same sticky exit

metric-exclusion flags and one canonical definition each of signup, activated and paying

metric-exclusion flags and one canonical definition each of signup, activated and paying

Sync: Update SDKs — code, message (from )

Sync: Update SDKs — code, message (from )

Sync: Update SDKs — fallback_on_block (from )

Sync: Update SDKs — fallback_on_block (from )

forward visitor ASN (and entitled bot signals) to origin for analytics classification

forward visitor ASN (and entitled bot signals) to origin for analytics classification

follow-up: 2 deferred item(s) (deferred from )

follow-up: 2 deferred item(s) (deferred from )

follow-up: 2 deferred item(s) (deferred from )

follow-up: 2 deferred item(s) (deferred from )

OFAC geo-block middleware is not mounted in production (OFAC_ENABLED off) and GeoLite2-City.mmdb is absent, so makes the caller IP visible but sanctioned MCP callers are still not blocked until both are provisioned (pre-existing, deploy prerequisite) (review finding — )

OFAC geo-block middleware is not mounted in production (OFAC_ENABLED off) and GeoLite2-City.mmdb is absent, so makes the caller IP visible but sanctioned MCP callers are still not blocked until both are provisioned (pre-existing, deploy prerequisite) (review finding — )

/vs-style comparison CTAs and a playground embed on the top 20 blog posts

/vs-style comparison CTAs and a playground embed on the top 20 blog posts

rebuild /best-web-scraping-api to reach page 1 and rewrite /alternative-to/oxylabs title and meta

rebuild /best-web-scraping-api to reach page 1 and rewrite /alternative-to/oxylabs title and meta

follow-up: 1 deferred item(s) (deferred from )

follow-up: 1 deferred item(s) (deferred from )

weekly 60-prompt, 5-engine AI share-of-voice panel with competitor and cited-domain capture

weekly 60-prompt, 5-engine AI share-of-voice panel with competitor and cited-domain capture

expand /vs comparison pages — missing competitors, pricing and FAQ tables, blog internal links

expand /vs comparison pages — missing competitors, pricing and FAQ tables, blog internal links

activation sprint — onboarding that is hard to skip and pre-fills a first scrape known to succeed

activation sprint — onboarding that is hard to skip and pre-fills a first scrape known to succeed

publish LangChain, LlamaIndex and CrewAI integrations under discoverable package names

publish LangChain, LlamaIndex and CrewAI integrations under discoverable package names

15-min status reports carry the digest section; replay 2026-10-21 alert mix

15-min status reports carry the digest section; replay 2026-10-21 alert mix

route Alertmanager warnings to the status-report digest instead of Discord

route Alertmanager warnings to the status-report digest instead of Discord

page standing conditions once per state transition, not per cycle

page standing conditions once per state transition, not per cycle

expected-class registry with escalation guards (plan-limiter 429s, origin-side 5xx, DNS 503, customer-capped)

expected-class registry with escalation guards (plan-limiter 429s, origin-side 5xx, DNS 503, customer-capped)

execute the interstitial's wasm-bindgen module in the anti-bot system QuickJS device check (FeRLcb)

execute the interstitial's wasm-bindgen module in the anti-bot system QuickJS device check (FeRLcb)

Growth & Health owner page with weekly KPIs and the unused internal service analytics snapshots

Growth & Health owner page with weekly KPIs and the unused internal service analytics snapshots

wire error-trigger.sh and log-monitor.sh Discord sends through the alert router (hotspot wiring only)

wire error-trigger.sh and log-monitor.sh Discord sends through the alert router (hotspot wiring only)

analytics_daily rollup and v_user_ltv_by_source view as the single query surface

analytics_daily rollup and v_user_ltv_by_source view as the single query surface

route data-plane/backup senders through the alert router (pg-*, wal, amcheck, backup scripts, restore drills)

route data-plane/backup senders through the alert router (pg-*, wal, amcheck, backup scripts, restore drills)

referral prompt at first successful scrape, under the cluster grant cap

referral prompt at first successful scrape, under the cluster grant cap

route host/container/edge senders through the alert router (memory, redis, uptime, ssl, cloud provider-health, heartbeat, etc.)

route host/container/edge senders through the alert router (memory, redis, uptime, ssl, cloud provider-health, heartbeat, etc.)

full UTM capture, first- and last-touch attribution, and one ai_assistant channel

full UTM capture, first- and last-touch attribution, and one ai_assistant channel

retroactive temp-mail account sweep as an owner-approved production action

retroactive temp-mail account sweep as an owner-approved production action

shared Discord alert router and ALERT_ROUTING.md policy

shared Discord alert router and ALERT_ROUTING.md policy

route GitHub workflow Discord posts through the alert policy and widen the sender-classification guard

route GitHub workflow Discord posts through the alert policy and widen the sender-classification guard

route internal service Discord alerts through the page/digest/suppress policy

route internal service Discord alerts through the page/digest/suppress policy

cloud provider 15-min report shows paid success per tier via an cloud provider-published cache status key

cloud provider 15-min report shows paid success per tier via an cloud provider-published cache status key

Bug Fixes

39

derive the anti-bot system device-check environment from the shared persona, plus a parity test against the real-browser capture

derive the anti-bot system device-check environment from the shared persona, plus a parity test against the real-browser capture

paid_success_slo per-tier and TierSuccessRateLow count dead-origin/404 outcomes as T3/T4 failures (T3 reads 21-38%, ~83% excluding origin-side)

paid_success_slo per-tier and TierSuccessRateLow count dead-origin/404 outcomes as T3/T4 failures (T3 reads 21-38%, ~83% excluding origin-side)

base-backup.sh writes a new dated, ownerless P1 internal tooling every night and never closes it

base-backup.sh writes a new dated, ownerless P1 internal tooling every night and never closes it

refresh growth materialized views daily, base activation on usage data, fix capped overview count

refresh growth materialized views daily, base activation on usage data, fix capped overview count

storage trend alerts read nightly backup peaks and deploy pulls as growth (StorageCategoryDaysToBudgetLow, DiskGrowthWarning)

storage trend alerts read nightly backup peaks and deploy pulls as growth (StorageCategoryDaysToBudgetLow, DiskGrowthWarning)

pg-error-monitor vacuum-stale prefers an old autovacuum over a newer manual VACUUM and never closes its internal tooling

pg-error-monitor vacuum-stale prefers an old autovacuum over a newer manual VACUUM and never closes its internal tooling

anti-bot system rejects the QuickJS device-check payload 19/19 and each failed check burns the exit — shadow the check, then fix the persona by differential capture

anti-bot system rejects the QuickJS device-check payload 19/19 and each failed check burns the exit — shadow the check, then fix the persona by differential capture

follow-up: 3 deferred item(s) (deferred from )

follow-up: 3 deferred item(s) (deferred from )

follow-up: 5 deferred item(s) (deferred from )

follow-up: 5 deferred item(s) (deferred from )

0 LLM successes since 6e90e2a — primary nemotron-3-super:free removed (404) and remaining free pool 429s; consecutive_failures=109

0 LLM successes since 6e90e2a — primary nemotron-3-super:free removed (404) and remaining free pool 429s; consecutive_failures=109

follow-up: 1 deferred item(s) (deferred from )

follow-up: 1 deferred item(s) (deferred from )

failed T4 browser runs record no proxy bytes (basis=unknown), keeping ValidResultEconomicsCoverageDegraded firing after

failed T4 browser runs record no proxy bytes (basis=unknown), keeping ValidResultEconomicsCoverageDegraded firing after

deploy never delivers CF_WORKERS_ANALYTICS_TOKEN — new cf-workers-quota cron fails every 15 min after promotes

deploy never delivers CF_WORKERS_ANALYTICS_TOKEN — new cf-workers-quota cron fails every 15 min after promotes

real lastmod dates in place of the build-date stamp, and a sitemap index split by page type

real lastmod dates in place of the build-date stamp, and a sitemap index split by page type

DDG Lite challenged (202 anomaly) on 100% of attempts after proxy egress; every search falls back

DDG Lite challenged (202 anomaly) on 100% of attempts after proxy egress; every search falls back

rotate CLOUDFLARE_API_TOKEN to the scope manifest

rotate CLOUDFLARE_API_TOKEN to the scope manifest

cache pool 'Too many connections' fails structure handoff of completed scrapes; jobs hang ~20 min until stuck-recovery (since 2026-10-20)

cache pool 'Too many connections' fails structure handoff of completed scrapes; jobs hang ~20 min until stuck-recovery (since 2026-10-20)

replace '5,000 free scrapes' with an honest '$1 free credit' offer and per-tier request counts

replace '5,000 free scrapes' with an honest '$1 free credit' offer and per-tier request counts

zero-organic SERP pages fail as parse_error 504 with no escalation or logging (~15% of /v1/search)

zero-organic SERP pages fail as parse_error 504 with no escalation or logging (~15% of /v1/search)

GEO citation monitor has never written a row in production

GEO citation monitor has never written a row in production

honest "up to 5,000 free requests" copy in llms/agent/API/herald/email surfaces + repo-wide guard

honest "up to 5,000 free requests" copy in llms/agent/API/herald/email surfaces + repo-wide guard

honest "up to 5,000 free requests" copy in guides, docs, app pages and root metadata

honest "up to 5,000 free requests" copy in guides, docs, app pages and root metadata

honest "up to 5,000 free requests" copy in programmatic comparison/SEO data and pages

honest "up to 5,000 free requests" copy in programmatic comparison/SEO data and pages

lead the free offer with "Up to 5,000 free requests" in shared CTAs and constants

lead the free offer with "Up to 5,000 free requests" in shared CTAs and constants

derive the window-global presence bitmap per persona family in the anti-bot system QuickJS device check (oX2m3T)

derive the window-global presence bitmap per persona family in the anti-bot system QuickJS device check (oX2m3T)

emulate Function.caller through hooked natives in the anti-bot system QuickJS device check (cyZ0R9, uwUbv3)

emulate Function.caller through hooked natives in the anti-bot system QuickJS device check (cyZ0R9, uwUbv3)

answer the font-metric probe from persona text metrics in the anti-bot system QuickJS device check (jlHREb)

answer the font-metric probe from persona text metrics in the anti-bot system QuickJS device check (jlHREb)

emulate the CSS animation timeline in the anti-bot system QuickJS device check (zi4P5h and second animation-frame samples)

emulate the CSS animation timeline in the anti-bot system QuickJS device check (zi4P5h and second animation-frame samples)

populate document.fonts from the interstitial's linked font-face stylesheet in the anti-bot system QuickJS device check (i1Yjh2)

populate document.fonts from the interstitial's linked font-face stylesheet in the anti-bot system QuickJS device check (i1Yjh2)

P1: backup restore drill failed (2026-10-22)

P1: backup restore drill failed (2026-10-22)

daily_rollup delivery overwrites one S3 object per job; deliver one file per bulk submission

daily_rollup delivery overwrites one S3 object per job; deliver one file per bulk submission

re-engagement bonus must check fraud, disposable and cluster eligibility before email and grant

re-engagement bonus must check fraud, disposable and cluster eligibility before email and grant

cap welcome grants per signup cluster (email domain + IP /24 + device), not per IP alone

cap welcome grants per signup cluster (email domain + IP /24 + device), not per IP alone

repin production-action executor past

repin production-action executor past

cut routed pages in the 2026-10-21 replay toward ~10 without reclassifying genuine incidents

cut routed pages in the 2026-10-21 replay toward ~10 without reclassifying genuine incidents

follow-up: 1 deferred item(s) (deferred from )

follow-up: 1 deferred item(s) (deferred from )

T4 bills the bot protection system Edge deny page as success — nav-status tracker keeps an aborted 3xx reload status; edge-deny body gate can't read a marked-up reference ID

T4 bills the bot protection system Edge deny page as success — nav-status tracker keeps an aborted 3xx reload status; edge-deny body gate can't read a marked-up reference ID

country fences without region wording never classify as geo_restricted — CF per-request beacon token breaks body fingerprints; invariance only runs inside the bot protection system/CF identity rotation

country fences without region wording never classify as geo_restricted — CF per-request beacon token breaks body fingerprints; invariance only runs inside the bot protection system/CF identity rotation

OAuth authorize/consent redirect to the standalone bind origin http://[server]:3000 — browser OAuth flow broken in prod

OAuth authorize/consent redirect to the standalone bind origin http://[server]:3000 — browser OAuth flow broken in prod