NodeInventory

What a node advertises through nodeInventoryUpdated events. See §3.6.

Field

Type

Repeated

Description

total_capacity

double

vCPUs (fractional): cluster workers advertise their cpuCount; cloud machine types declare their shape’s vCPUs.

utilization_cap

double

total_cores

uint32

gpus

GpuResource

capabilities

Capability

reserved_capacity

double

reserved_cores

uint32

reserved_capabilities

Capability

reachable

bool

last_seen

google.protobuf.Timestamp

cordoned

bool

Set true by an operator drain (§8.6); placement skips this node.

assigned_jobs

NodeAssignedJob

reserved_host_ports

string

Host sockets (canonical PORT/proto tokens) already claimed by jobs on this node. Producers that don’t track ports send nothing; AutoManager derives the set from its own placements, deferring to a non-empty wire value like the other reserved fields.

held_images

HeldImage

Images this node’s container engine holds — its WARMTH (Phase G of .ai/steve/tasks/90-job-migration-media.md). A launch on a node that already holds a job’s images took 7 s in the demo against 64–118 s on one that did not, so placement wants this on every candidate.

A repeated field of its own rather than attributes on a Capability: capabilities is matched by name + count with an attribute map consulted only for the entry that matched, whereas warmth is scored by SET OVERLAP over the whole list on every candidate node at every placement. As a first-class list that is an intersection of strings; folded into a capability’s map<string,string> it would be a parse per node per placement, and would have to dodge the count/name matching that every other capability goes through.

The worker refreshes this on the inventory cadence and immediately after a prefetch or a job start, excludes untagged/dangling images, and caps the list (most-recently-created first) so a long-lived node cannot grow the message without bound.