§01The six, in the order they were written
Every one was written by somebody who had just been told not to.
The job was one loop: three participants on a call, one rate, no negotiation. Here is what the reflex produced instead — each mistake named by its shape, because the shapes recur far beyond video.
Mistake 01Two controllers on one variable
Each end measured its inbound rate and wrote a request to the other. Two ends doing that on matched two-second windows is a control loop with no damping. It hunted for an hour at 23.8 of 24 frames a second with zero drops — nothing was failing; the two controllers were arguing.
How you spot itTwo writers steering the same outcome. The tell is a system where nothing is failing and the value still will not sit still.
Mistake 02A durable fact kept privately
Removed the request; each end capped itself on its own measurement. No loop — but a sender now knows only about the link to the peer it happens to be receiving from, and on a three-way call it needs the slowest. The fact others needed was computed, then kept local.
How you spot itA local variable that another participant would need in order to derive correctly. If it matters to the call, it belongs in the memory.
Mistake 03Absence read as evidence
So each end published what it could take and senders read the minimum. Better — and still a protocol in the read direction: a headless publisher with no viewers became "the slowest consumer" on its own call and walked a good link down to 160×120 on evidence that did not exist.
How you spot itA rule that fires when a row is missing. Absence of a fact is not a fact; derive only from what is asserted.
Mistake 04A role stamp that made a participant invisible to itself
So: two roles, producer and consumer. Which stamped a label on a participant — and writing a receive report relabelled a two-way end as "consumer," so its own send rate stopped counting. The one end nobody could be bounded by was the one that both sends and receives.
How you spot itA branch on role deciding whose facts count. Participants publish facts, not identities; the moment a label filters the rows, someone has vanished.
Mistake 05Requests wearing tuple clothes
So a request tuple — "I want 640×360" — written by a consumer and honoured by a sender. Which is a negotiation with the word filed off: two parties, a message, and one waiting on the other. Putting a request in the memory does not stop it being a request.
How you spot itA tuple whose meaning is "please do X." It names another party and something waits on it being honoured. That is a message with a tuple's syntax.
Mistake 06A derivation reading its own output
And underneath several of the five: a loop whose input was influenced by its own last decision — a cap set from a measurement the cap itself had shaped. A controller that eats its own exhaust converges on nothing in particular, and looks like a flaky link while it does it.
How you spot itRemove your own write. If your input changes, your derivation was reading its own output — split the observed fact from the derived answer.