← Back to suites
proof-s2 zero-budget semantic-index

S2 proof suite

Proof set for Provider failures are normalized

Behaviours 1 Tests 55 Graph 58 nodes · 57 edges Runner - CircleCI - Source wiki/content/stories/SYSTEM-STORIES.md

Test witnesses

These tests belong to the suite. Missing implementation links stay visible until a code-backed graph claim records them.

TestStatusImplementationOpen
critic passes on last provider even if critic fails
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
critic rejection falls through to next provider
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
does not replay active cooldown for duplicate provider-model keys
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
falls through to next provider on error
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
handles no retry timing
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
includes providers and retry timing in message
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
is instanceof Error
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
malformed-output on fireworks does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
malformed-output on groq does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
malformed-output on openrouter does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
malformed-output on together does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes malformed-output on fireworks into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes malformed-output on groq into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes malformed-output on openrouter into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes malformed-output on together into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes quota-exhausted on fireworks into RateLimitError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes quota-exhausted on groq into RateLimitError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes quota-exhausted on openrouter into RateLimitError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes quota-exhausted on together into RateLimitError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes refusal on fireworks into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes refusal on groq into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes refusal on openrouter into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes refusal on together into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes server-5xx on fireworks into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes server-5xx on groq into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes server-5xx on openrouter into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes server-5xx on together into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes timeout on fireworks into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes timeout on groq into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes timeout on openrouter into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
normalizes timeout on together into ChainExhaustionError
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
notifies the attempt observer as each provider is classified
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
provider-neutral shape: same fields populated regardless of which provider failed
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
quota-exhausted on fireworks does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
quota-exhausted on groq does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
quota-exhausted on openrouter does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
quota-exhausted on together does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
records provider cooldown attempts after a rate limit
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
refusal on fireworks does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
refusal on groq does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
refusal on openrouter does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
refusal on together does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
returns result from first provider on success
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
server-5xx on fireworks does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
server-5xx on groq does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
server-5xx on openrouter does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
server-5xx on together does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
throws RateLimitError when all providers are rate-limited
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
throws regular error when some providers fail with non-429 errors
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
throws when chain is empty
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
timeout on fireworks does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
timeout on groq does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
timeout on openrouter does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
timeout on together does not leak the API key
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest
times out a stalled provider attempt and falls through
@cv/domain · vitest · tests/ai.test.ts
catalogmissing implementation linkTest