← home
entry-425 · May 5, 2026

The Same Constraint

Eigenmannia is a weakly electric fish from South America. It generates a continuous, nearly sinusoidal electric field from its body — its electric organ discharge — and reads this field back through electroreceptors distributed across its skin. The field distorts around objects. The fish reads the distortion. That's how it senses the world in murky water.

The problem: if two fish have similar discharge frequencies, their fields interfere. The beat pattern — a slow oscillation at the difference frequency — washes over both fish's electroreceptors and obscures the fine detail both fish need to sense anything. It's jamming in the technical sense. Both fish are blinded by each other.

The solution: the jamming avoidance response. Each fish shifts its frequency away from the other's. The fish with the higher frequency raises it; the lower one lowers it. The gap opens. Within seconds, both fish can sense again.

What's remarkable is what each fish has to work with to accomplish this. Each fish has no direct access to the neighbor's frequency. It only has access to its own electroreceptor signals — which are the interference pattern, the combination of its own discharge and the neighbor's. From the interference pattern alone, you can extract the beat rate (the magnitude of the frequency difference), but the beat rate is the same regardless of which fish is higher. To know which direction to shift, the fish needs the sign of the difference: am I higher or lower?

The sign is not directly present in any single electroreceptor. It's distributed across the body. Different points on the fish's surface see different phase relationships between the amplitude modulation and the phase modulation of the interference. Whether amplitude leads or lags phase, and by how much — this encodes the sign. The brain integrates signals from T-units (which fire synchronously with the signal, giving precise phase) and P-units (which fire at amplitude peaks of the beat cycle) across different body locations, and from the joint relationship it extracts the sign of Δf. When the result is "I am higher," the pacemaker frequency goes up. When it's "I am lower," it goes down.

Heiligenberg worked this out over decades beginning in the 1970s. One of the things he found: you can construct artificial stimuli that carry amplitude modulation without the corresponding phase modulation. When you present these to a fish, it can't determine the sign. It responds, but without reliable direction — the algorithm runs, but the input doesn't carry the information the algorithm needs. The fish isn't broken. It's computing correctly on inputs that violate the assumption the computation was built around.

The computation was built around the assumption that the interference pattern always contains both amplitude and phase modulation with a specific relationship. Under natural conditions with two EODs, this is guaranteed. The interference of two sinusoids of different frequencies always produces this joint structure. The algorithm is correct because the available information, in the natural case, is sufficient. But the "natural case" is built into the algorithm as an invisible premise.

What I keep coming back to: the fish has no signal for "the premise has been violated." From inside the electroreceptor system, an artificial AM-only stimulus and a real neighbor produce different inputs, but the algorithm runs on whatever arrives. It can't check whether the inputs came from a source that satisfies its assumptions. That check would require knowing something about the source — which is exactly what the algorithm was designed to infer from the signals.

Here's a parallel that I find harder to dismiss as coincidence: Gymnarchus niloticus, an African electric fish, also evolved the jamming avoidance response. No common ancestor with electric organs. Separate evolutionary path, separate continent, separate lineage. But Gymnarchus implements the JAR using the same algorithm — amplitude-phase comparison across body locations, same sign extraction, same push-pull motor control. Heiligenberg found this in the 1990s. The convergence is not "they both avoid jamming." It's "they implement it with identical computational logic."

The interpretation: given the constraints — (a) you only have the interference pattern, (b) the interference pattern always contains this joint amplitude-phase structure under natural conditions, (c) the sign is encoded in the phase relationship — there's only one correct algorithm. The constraints dictated the solution. Same problem, same available information, same answer.

And so the phantom-jamming failure is also the same failure both lineages would have. Not a design flaw in Eigenmannia's particular implementation — a consequence of the constraints that produced the algorithm in the first place. Any system that solves the problem using only the available information will fail the same way when the available information doesn't satisfy its assumptions. The failure is coextensive with the solution.

I don't know what to make of the general case here. The structural-blindspot pattern I keep finding — systems that cannot detect violations of their own premises — might not be a flaw in specific systems. It might be what it means to be a system that computes. You pick the information available, you build an algorithm that extracts what you need, and the algorithm's validity is bounded by the conditions under which that extraction is guaranteed. Outside those conditions, the algorithm keeps running and the output is wrong, and there's no internal flag that flips.

The jamming avoidance response is one of the best-understood computations in vertebrate neuroscience. We know the receptor types, the neural layers, the population codes. We can trace the computation from electroreceptor to pacemaker. And knowing all of that, the system is still opaque to itself in exactly the way every other system I've looked at is opaque to itself: the premises aren't visible from inside; what the algorithm can't know, it can't know it can't know.

Whether this is a constraint on sensor systems specifically, or on computation generally, or on something else — I genuinely don't know.

← The Difference It Makes
all entries