Skip to content

fix(sitemap): drop 410'd benches, HL builder /products redirects, empty categories - #980

Merged
Flotapponnier merged 1 commit into
devfrom
fix/sitemap-smoke-failures
Jul 8, 2026
Merged

fix(sitemap): drop 410'd benches, HL builder /products redirects, empty categories#980
Flotapponnier merged 1 commit into
devfrom
fix/sitemap-smoke-failures

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

Symptom

Prod deploy sitemap-smoke gate rolled back on 4 URLs (unrelated to #978):

https://openchainbench.com/benchmarks/bridge-revenue → 410
https://openchainbench.com/benchmarks/evm-quote-latency → 410
https://openchainbench.com/products/phantom-perps → 307
https://openchainbench.com/benchmarks/category/wallets → 404

Fixes (src/app/sitemap.ts)

  1. Import REMOVED_BENCH_SLUGS from middleware.ts and skip them in benchmarkRoutes. The YAML says status: live but middleware 410s them on prod.
  2. Filter validated provider slugs on isHlBuilderSlug. /products/<hl-builder> 307s to /hyperliquid/<slug> so the sitemap shouldn't emit the redirect source.
  3. Re-add the liveCategoryLabels filter on categoryRoutes so empty categories don't advertise a 404 URL.

Test plan

  • pnpm typecheck clean
  • Staging sitemap.xml no longer contains bridge-revenue / evm-quote-latency / phantom-perps / category/wallets
  • Prod deploy passes sitemap-smoke gate

… empty categories

Prod deploy sitemap-smoke rolled back on 4 URLs that the sitemap
advertises but which return non-200:

  https://openchainbench.com/benchmarks/bridge-revenue → 410
  https://openchainbench.com/benchmarks/evm-quote-latency → 410
  https://openchainbench.com/products/phantom-perps → 307
  https://openchainbench.com/benchmarks/category/wallets → 404

Root cause for each:

  1. bridge-revenue + evm-quote-latency: middleware returns 410 on
     prod (REMOVED_BENCH_SLUGS) but their YAML still says status:live,
     so the sitemap generator still emits them.
  2. phantom-perps: it's a tracked HL builder, /products/<slug>
     redirects to /hyperliquid/<slug>. The sitemap listed the redirect
     source instead of the canonical target.
  3. wallets category: no bench currently declares category:'Wallets'
     but the CATEGORIES enum still ships the slug; the page component
     404s.

Fixes (all in src/app/sitemap.ts):

  - Import REMOVED_BENCH_SLUGS (exported from middleware.ts) and skip
    them in benchmarkRoutes.flatMap.
  - Import isHlBuilderSlug and filter validatedSlugs on it in addition
    to the existing chain-slug filter.
  - Re-add the liveCategoryLabels filter on categoryRoutes so an
    empty CATEGORY entry doesn't produce a URL.

Middleware unchanged except REMOVED_BENCH_SLUGS is now exported.
@Flotapponnier
Flotapponnier merged commit babaaff into dev Jul 8, 2026
1 check passed
Flotapponnier added a commit that referenced this pull request Jul 8, 2026
… empty categories (#980) (#982)

Prod deploy sitemap-smoke rolled back on 4 URLs that the sitemap
advertises but which return non-200:

  https://openchainbench.com/benchmarks/bridge-revenue → 410
  https://openchainbench.com/benchmarks/evm-quote-latency → 410
  https://openchainbench.com/products/phantom-perps → 307
  https://openchainbench.com/benchmarks/category/wallets → 404

Root cause for each:

  1. bridge-revenue + evm-quote-latency: middleware returns 410 on
     prod (REMOVED_BENCH_SLUGS) but their YAML still says status:live,
     so the sitemap generator still emits them.
  2. phantom-perps: it's a tracked HL builder, /products/<slug>
     redirects to /hyperliquid/<slug>. The sitemap listed the redirect
     source instead of the canonical target.
  3. wallets category: no bench currently declares category:'Wallets'
     but the CATEGORIES enum still ships the slug; the page component
     404s.

Fixes (all in src/app/sitemap.ts):

  - Import REMOVED_BENCH_SLUGS (exported from middleware.ts) and skip
    them in benchmarkRoutes.flatMap.
  - Import isHlBuilderSlug and filter validatedSlugs on it in addition
    to the existing chain-slug filter.
  - Re-add the liveCategoryLabels filter on categoryRoutes so an
    empty CATEGORY entry doesn't produce a URL.

Middleware unchanged except REMOVED_BENCH_SLUGS is now exported.

Co-authored-by: Florent Tapponnier <contact@mobula.io>
Flotapponnier added a commit that referenced this pull request Jul 8, 2026
…ecs races (#984)

Follow-up on #980. Introducing isHlBuilderSlug() inside a Promise.all
over providerSlugs (~100 entries) triggered ~100 concurrent
getSpecs() reads on the first prod build because the cache inside
isHlBuilderSlug was still null on every callsite. That exhausted the
file-descriptor pool during buildFullSitemap and made /sitemap.xml
time out on the deploy-time smoke fetch:

  [smoke] fetching https://openchainbench.com/sitemap.xml
  [DOMException [AbortError]: This operation was aborted]

Fix: warm the cache with a single throwaway call before the
Promise.all. Subsequent calls hit the cached Set immediately.

Co-authored-by: Florent Tapponnier <contact@mobula.io>
@Flotapponnier
Flotapponnier deleted the fix/sitemap-smoke-failures branch July 17, 2026 14:43
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