Skip to main content

Peirce and the Phaneron

Firstness, secondness, and thirdness as a working model for machine perception and machine-certainty.

The Architect••2 MIN READ

Charles Sanders Peirce defined the phaneron as “everything that appears to the mind in any sense whatsoever.” It is the widest possible definition of phenomenon: anything at all, before analysis separates it from noise.

Most machine learning systems quietly adopt a much narrower definition. They model perception as classification — you observe, the model sorts. Peirce’s trichotomy is more useful precisely because it refuses to collapse observation into judgement.

Firstness — sensation

The being of a thing as it is, without reference to anything else. In a machine this is the raw signal: the pixel block, the sample, the unlabelled tensor. Before it is a face or a word, it is just intensity.

Firstness is what the system absorbs before it has decided anything.

Secondness — collision

The mode of being of a thing as it is with respect to something else, but regardless of anything third. This is friction: the constraint, the resistance, the fact that the universe has mass and does not do what you want.

Secondness is what makes an interface honest. When you drag an object and it does not go where you pointed, you are encountering secondness — brute reality, unmediated.

Thirdness — law

The mode of being of a thing in bringing one thing and another into relation. This is meaning, covenant, consensus: the rule that makes two things comparable at all.

Thirdness is where the computational work usually gets done. It is also where systems fail most catastrophically, because a system that confuses firstness with thirdness will confidently report sensation as law.

Why this matters for perception

An architecture that keeps the three distinct can do something useful: it can report its own epistemic status. It can say “this is sensation,” or “this is collision,” or “this is a rule I am asserting.”

Most systems collapse all three into a single confidence number, which is why they fail confidently and fail silently. Keeping them separate is unglamorous, and it is the single highest-leverage change I have made to this codebase.