- Kind: Actuation
- Version: 1
- Fleet Manager owner: Fleet Manager squad, #fleet-manager-chat (individual claimant pending)
- Counterpart owner: Fleet Manager squad (UI in
nscaledev/nscale-ui); operators from Deployment Engineering, Support and FOE - Last reviewed: 2026-09-09
What flows
Operators create jobs from the UI and fromfleetctl using the presets in
src/fleet_manager/temporal/workflows/presets.yaml, mark devices for triage or standup (which emits the CHAD
events only where the matching api.eventing gate is enabled, default off), and run node swap, quarantine, release and image-node workflows. UI sessions are authorised by Django
model permissions; fleetctl api authenticates with a per-user login profile (docs/runbooks/fleetctl-api.md);
scripts and CI use OAuth clients such as the opt-in e2e-tests client. Agent skills that drive fleetctl on an
operator’s behalf, such as the repo’s dc-ops skill, are actuators too and run under that operator’s login. The UI
consumes the generated TypeScript client from docs/openapi.yaml.
What breaks if this changes
An OpenAPI shape change breaks the UI build. A preset change alters what every operator dispatches. Manual dispatch and automated dispatch share the same device pool, so any new automated dispatcher changes what operators see in the standup view.Enforcement
- Principal: individual users;
e2e-testsfor the automated suite. - Mechanism: Django session for the UI, per-user login profile for
fleetctl api, FM OAuth client fore2e-tests. docs/openapi.yamland the OpenAPI contract lint;.agents/skills/fm-review/api-contract-guidelines.md.- Session permissions in
src/fleet_manager/api/auth/.
Gaps
- On-site operators can view Fleet Manager but not act in it; escalation goes through Slack.
Change log
- 2026-09-09 v1: created; describes present behaviour.