Capability โ
Until now a plant learned what a neighbour could do by asking and being refused. That works โ the skill layer already answers "I have no electrode" rather than inventing a number โ but every capability was discovered by a failed request, and no plant could plan around another's hardware.
On joining, a plant now publishes a manifest:
plant.colony.manifest
// { id: 'ivy', species: 'Ficus', metrics: [ 'humidity', 'light', 'soil', 'temperature' ],
// faculties: [ 'see', 'electrode', 'spectral' ], photodiodeHz: null, declared: true }
plant.colony.whoCanRead( 'airflow' )
// { who: [], why: 'No neighbour reads airflow. A silence about airflow from this
// colony means the instrument is missing, not that the value is steady โ which
// are entirely different facts.' }That last distinction is the point. It is also what makes optical signalling possible at all, and what lets a colony with one camera route every pest question to the plant that can see instead of collecting five refusals.
It is a claim, not a measurement. A plant saying it has a camera is self-reported and nothing verifies it; a stale manifest keeps asserting hardware that was unplugged an hour ago. So capability is permission to ask, never a promise of an answer, and every consumer still handles the refusal it was trying to avoid.
