Guardrails persist on series profiles and episode templates, so a
generation request carries stable editorial instructions as its system
prompt rather than depending on whoever composed the call. Changing the
guardrail changes every subsequent run from one place, under the same
change history and optimistic locking as the rest of the profile.
Budgets use reservation semantics around each billable call: reserve,
then commit on success or release on failure. A run that cannot reserve
does not make the call. Cost line items pin the provider pricing
snapshot in force at the time, so a later price change does not rewrite
what an episode cost.
-
Malformed structured output from a model
Available
- The run stops. Nothing partially parsed reaches the canonical episode.
-
Chapter-marker timing that does not match segment transitions
Available
- Validation rejects the payload. Starts must be ordered, integer-only, and in PT#H#M#S form.
-
Optimistic-locking conflict on a profile or template
Available
- The write is refused so a concurrent edit is never silently overwritten.
-
Repeated request with a matching idempotency key
Available
- The stored response replays. The same key with a different canonical body returns 409 Conflict.
-
Per-episode budget exhausted
In progress
- The reservation is refused before the billable call is made.