The sidecar#
A sidecar is a shared base plus one pattern-keyed variant. Two variants are
KERNEL variants — vector and pure, the shapes a Bundle emits and
the only shapes any loader launches. A third, neural_block, is a descriptor:
it names kernels rather than being one, and nothing launches it (see
The neural_block descriptor).
The base fields (compile.py::_base_sidecar) are present on every KERNEL variant;
a descriptor carries a deliberately smaller base, spelled out in its own section
below:
Key |
Type |
Meaning |
|---|---|---|
|
|
Artifact format the sidecar accompanies. |
|
int ( |
As for the manifest (backward-lenient / forward-strict). |
|
|
Selects the variant. Python’s |
|
const |
Binary-ABI tag (see The aether_abi tag is separate). |
|
|
Real scalar type the kernel was compiled for. |
|
string |
The |
|
array[string] |
Named vector inputs, in binding order. |
|
array[string] |
Named uniform scalar parameters. |
|
array[string] |
Named per-sample scalar inputs. |
|
array[[role, name]] |
The ordered |
Variant additions#
vector adds:
Key |
Type |
Meaning |
|---|---|---|
|
bool |
Whether the |
|
string |
The accumulate-sink contract name (e.g. |
|
object{string→int} |
Per-name vector width (component count) for host |
|
array |
Declared read-only lookup buffers (may be empty; see below). |
pure adds:
Key |
Type |
Meaning |
|---|---|---|
|
array[object] |
The writable per-sample state that is the pure output. Each element is
|
|
object{string→int} |
Per-name vector width (includes vector Mutables). |
|
array |
Declared read-only lookup buffers (may be empty). |
|
array[string] |
Only when the kernel has matrix inputs: the |
|
object{string→[R, C]} |
Only when the kernel has matrix inputs: the |
Each buffers element (compile.py::_buffers_field) is
{name: string, kind: "lookup", dtype: "float", shape: array[int], count: int},
where count == prod(shape) is the flat element count the registry uploads once
at consolidation and binds by value as a flat handle.