From 241eebfd9fdadb755ef2744f542124f0fbd36d3c Mon Sep 17 00:00:00 2001 From: Mathias Date: Sat, 6 Jun 2026 11:31:11 +0200 Subject: [PATCH] docs(homelab): add TAPIR_FETCH_BACKOFF config, update snapshot date --- docs/homelab-integration.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/homelab-integration.md b/docs/homelab-integration.md index defddd4..4901f20 100644 --- a/docs/homelab-integration.md +++ b/docs/homelab-integration.md @@ -2,7 +2,7 @@ The concrete endpoints, conventions, and identifiers Tapir depends on, so an independent session doesn't have to rediscover them. **Verify anything marked "confirm" before relying on -it** — endpoints and aliases drift, and this file is a snapshot (2026-06-02), not a live source. +it** — endpoints and aliases drift, and this file is a snapshot (2026-06-06), not a live source. ## Local AI (the Primary in `llm.Router`) @@ -160,7 +160,7 @@ allow per-provider when a user connects one. --- -_Snapshot date 2026-06-02. Items marked **confirm** were not verified to a pinned source at +_Snapshot date 2026-06-06. Items marked **confirm** were not verified to a pinned source at snapshot time — check brain or the live cluster before depending on them._ ## Stage 1 — multi-user facts (verified 2026-06-03) @@ -194,7 +194,7 @@ snapshot time — check brain or the live cluster before depending on them._ ## Scheduled discovery (ADR-018, verified 2026-06-05) -`tapir serve` runs discovery for **all users** in-process on a timer (no CronJob). Two env +`tapir serve` runs discovery for **all users** in-process on a timer (no CronJob). Three env knobs plus one load-bearing deployment constraint: - `TAPIR_DISCOVERY_INTERVAL` — Go duration, e.g. `2h`. The cadence the serve process runs a @@ -205,6 +205,11 @@ knobs plus one load-bearing deployment constraint: click-path — serialises through this one limiter so the pod cannot collectively trip 429s. `0` = unlimited (dev/tests). This is the precondition that makes auto-summarize-on-a-schedule safe; do not raise it aggressively without watching for 429s. +- `TAPIR_FETCH_BACKOFF=4h` — per-video rate-limit retry window; default `1h`. A video that + returns HTTP 429 on a caption fetch is skipped for this duration before being retried. The + scheduler checks `NOW() - rate_limited_at > TAPIR_FETCH_BACKOFF` before attempting to fetch + a video marked `transcript_status = rate_limited`. Longer values reduce 429 pressure at the + cost of slower recovery after a throttling episode. - **SINGLE-REPLICA WARNING (load-bearing).** The scheduler lives in the web process, so `replicas: 1` in the deployment manifest is load-bearing: running `tapir serve` at >1 replica makes **every** replica run the discovery loop → every user fetched in parallel from the same