transcoding: fresh gateway manifest after five refused pushes
transcoding: a stream moves to a fresh gateway manifest after five refused pushes in a row. Production stopped transcoding with every push answered 503 "No sessions available" on both live streams, while the same gateway, at the same time, transcoded our TS of those very streams under a fresh manifest with the same profiles (all renditions, all 200). A go-livepeer gateway keeps per-manifest state (its orchestrator sessions and suspensions) for as long as segments keep arriving under that manifest, so a manifest that has fallen over stays fallen over for the life of the stream, and pushing to it forever keeps it alive. Now RotateAfterFailures consecutive refusals (a non-200 or a failed request) pick a new manifest trailer and restart the sequence at 0; a success resets the run; streamplace_transcode_manifest_rotations_total counts it. The manifest and sequence are now claimed under a lock when the push slot is taken (the sequence used to race between the two in-flight pushes, which showed as out-of-order pushes in the gateway log), and a malformed multipart response no longer dereferences a nil part before its error is checked Claude-Session: https://claude.ai/code/session_014aPQ5yqG9QFxKnbwQfCYKa (cherry picked from commit 633c0531f1470ff4f552987dece1b54a215b1ece)