feagi-structures 0.0.39

The most core library, defines the basic data types used by FEAGI, as well as some processors to modify them
Documentation
# Genome Classifiers

First-class genome object stored under the top-level `classifiers` key, parallel to `brain_regions`.

A classifier is not a brain region and is not exportable as a circuit. It records:

- assembly properties (`name`, `parent_region_id`, `coordinates_3d`)
- referenced inputs (`kernel_area_id`, `class_area_id`, `field_area_id`)

- owned internals (`kernel_memory_id`, `class_memory_id`, `scan_twin_id`)

## Class maps are one layer

Kernel-mode `class_area_id` must be `1×1×n`: depth index `z` is class `z`.

Scanner mode stores an explicit `class_count` (required; `1..=9999`). The scanner mask is
`field_w × field_h × 1`; each labeled pixel's potential is `(class_id + 1) / class_count`
and zero means unlabeled.

Every detection twin is `field_w × field_h × 1` in both modes (`detection_twin_shape`).
The classifier writes each detected pixel once, with the winning class (highest summed vote,
ties to the lower id) as its exact potential, using a force-fire that bypasses threshold and
leak. Twins are created with `mp_driven_psp` on, so a 1:1 mapping from a twin (weight 1,
uniform PSP, target threshold at or below `1 / class_count`, no leak or accumulation) hands
the class value to an OPU unchanged. Encode and decode through
`neuron_voxels::class_potential`.

A genome that needs one neuron per class downstream expands the twin itself: a mapping into
a `W×H×C` area whose firing threshold increments along Z.

Neuroembryogenesis loads this map onto the connectome. Area delete and mapping edits update the record and the mappings it requires.