Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions config.default.toml
Original file line number Diff line number Diff line change
@@ -1,9 +1,23 @@
[server]
host = "0.0.0.0"
port = 3000
# Tower outer timeout. Issue #35: when
# `request.auto_extend_deadline_for_ladder = true` (default), this baseline is
# auto-widened at startup to cover the longest legitimate handler runtime
# (auto-extended scrape, search enrichment fan-out, map's 300s ceiling). Set
# this above 305s only if you also raised request.deadline_ms_default beyond
# the default ladder_min.
request_timeout_secs = 120
rate_limit_rps = 10 # Max requests/second (global). 0 = unlimited.

# [request]
# deadline_ms_default = 8000
# auto_extend_deadline_for_ladder = true
# Issue #35: when an implicit request omits `deadlineMs`, auto-extend the
# effective deadline to max(deadline_ms_default, ladder_min). Prevents
# chrome_timeout_ms = 30000 from appearing inert when deadline_ms_default
# is small. Set to false to enforce a strict SLO regardless of tier sizing.

[renderer]
mode = "auto" # auto | lightpanda | playwright | chrome | none
page_timeout_ms = 30000
Expand Down
7 changes: 7 additions & 0 deletions config.docker.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@
# deadline yields a 264kb response. 15s is the budget that recovers the
# stragglers without ballooning p50 on healthy pages.
deadline_ms_default = 15000
# Issue #35: when an implicit request omits `deadlineMs`, auto-extend the
# effective deadline to `max(deadline_ms_default, ladder_min)` where
# ladder_min = sum(per-tier timeouts) + N_cdp_tiers * 28s. Prevents
# `chrome_timeout_ms = 30000` from appearing inert when this default is
# small. Set to false to enforce the strict 15s SLO regardless of tier
# sizing — explicit per-request `deadlineMs` always wins either way.
auto_extend_deadline_for_ladder = true

[server]
# Disable global rps cap for benchmark + production load — the bench fires
Expand Down
9 changes: 9 additions & 0 deletions crates/crw-core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,15 @@ keywords.workspace = true
categories.workspace = true
description = "Core types, config, and error handling for the CRW web scraper"

[features]
# Mirrors the `cdp` feature of `crw-renderer` / `crw-server`. When the
# downstream binary is built without CDP support, no JS renderers are
# constructable and the ladder collapses to HTTP-only — the deadline
# auto-extension policy (`AppConfig::effective_deadline_ms`) gates on this so
# CDP-less builds keep their strict `deadline_ms_default`. The workspace
# binary enables this transitively via `crw-renderer/cdp`.
cdp = []

[dependencies]
crw-mcp-proto = { path = "../crw-mcp-proto", version = "0.6.1" }
serde = { workspace = true }
Expand Down
Loading
Loading