- Kind: Observation (Fleet Manager also writes: the partition moves are its own workflows, so this page is filed under the state Fleet Manager derives from the fabric)
- Version: 1
- Fleet Manager owner: Fleet Manager squad, #fleet-manager-chat (individual claimant pending)
- Counterpart owner: unassigned (the NMX-M controllers are site networking infrastructure)
- Last reviewed: 2026-09-09
What flows
NvLinkIsolateWorkflow and NvLinkReturnWorkflow (src/fleet_manager/temporal/activities/nvlink.py) move a returned
break-fix tray’s GPUs between the default NVLink partition and a repair partition on the rack’s NMX-M controller. The
worker resolves the controller per Fleet Manager rack name from nmx_hosts and talks to https://<host>/nmx/v1
through the vendor-isolated client in src/fleet_manager/core/datacenter/nmx/vendors/nmxm/client.py (read the
domain, GPUs and partitions, replace or create or delete a partition, poll the operation). Partition membership is
read back from /nmx/v1/gpus after every move and recorded on the device as the durable
NvLinkGpusInRepairPartition condition, source nvlink-fabric (src/fleet_manager/core/conditions/registry.py).
That condition does not move operational status; eligibility reads it and release to the customer pool refuses while
it is asserted (release_to_customer_pool in src/fleet_manager/core/eligibility/policies.py, failure code
RELEASE_PARTITION_LATCH_REFUSED).
Real writes are gated per site: temporalWorker.nvlinkPartitionAllowed in the satellite chart defaults false and
nmx_activity_args_ready defaults false, so a deployment on chart defaults runs the moves against the simulated
fabric and never contacts a controller. Where a site enables them, nmx_hosts must carry the controller’s
domain_uuid and the move fails closed if the controller reports a different domain.
What breaks if this changes
An NMX-M API change (the client is pinned to the 4.021.34 shapes) or an unreachable controller fails the move workflows before mutation; a move that mutates but cannot be verified leaves the latch atUnknown, which blocks
release until the same move is re-run. A wrong nmx_hosts entry points a rack’s moves at another rack’s controller,
which the domain_uuid check is there to catch. If the latch write to Fleet Manager fails after the fabric moved, the
activity fails and the operator re-runs the move, which no-ops on the fabric and records the latch.
Enforcement
- Principal: the satellite
temporal-worker(towards Fleet Manager) and the NMX-M service account (towards the controller). - Mechanism: towards Fleet Manager, the
temporal-workerFM OAuth client (private-key JWT) in the satellite roster writingdevice-condition:create; towards NMX-M, HTTPS with the service account from the site’s networking 1Password vault item named bytemporalWorker.nmxCredentialsItem(defaultsvc-nmx-login,src/fleet_manager/settings/agents/temporal_worker.py), read only when real writes are enabled. - Settings:
src/fleet_manager/settings/agents/workflow.py(nvlink_partition_allowed,nmx_hosts,nmx_activity_args_ready).
Gaps
- No counterpart owner: nobody outside Fleet Manager is named for the controllers, their firmware or the service account.
- No contract test against a real NMX-M; the client shapes were captured by hand from one firmware version.
Change log
- 2026-09-09 v1: created after the repair-partition latch landed on main (#2818); describes present behaviour.