Commit d6cdeb7
feat(genome): resilient embedding batch pipeline with exponential backoff & circuit breaker
- New module src/genome/embedding-resilience.ts (~380 LOC):
- Exponential backoff (3–15s range) with full jitter, configurable max attempts (default 3)
- Per-backend circuit breaker with sliding window (10-req default), 50% failure threshold,
30s open duration, half-open probe pattern; auto-reset on success
- Fallback chain orchestration: skips open-breaker backends directly to next tier
- Adaptive timeout scaling: Ollama >8s → reduce to 12s; Anthropic >3s → prefer local-ultrafast
- Resilience profile persistence to .ashlrcode/genome/resilience-profile.jsonl
- Per-(backend, querySizeBucket) latency histograms with p95 computation
- PermanentEmbeddingError class; isPermanentError() guard (401/403 never retried)
- resilientGenerateEmbeddingWithFallback() and resilientRouterEmbed() wrappers
- EmbeddingResiliencePipeline class + createEmbeddingResiliencePipeline() factory
- src/genome/index.ts: export * from embedding-resilience.ts
- __tests__/embedding-resilience.test.ts (~440 LOC, 78 tests, all green):
- classifyQuerySize, computeBackoffDelay, circuit breaker transitions,
AdaptiveTimeoutTracker, pipeline embed, computeLatencyHistogram,
JSONL persistence, genome/index.ts export coverage
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent b279354 commit d6cdeb7
3 files changed
Lines changed: 1654 additions & 0 deletions
0 commit comments