Skip to content

Fleet status can remain available while a device is actively busy #24

Description

@hilaus-arm

Summary

I observed a mismatch between fleet-facing device status and the device’s actual runtime state.

A device can be actively handling work, while fleet discovery still reports it as availability="available".

This makes orchestration unreliable because callers can select a device that is already occupied.

Reproduction

  1. Start a device whose runtime status can change over time.
  2. Cause the device to enter a busy state.
  3. Check the device-specific runtime state and confirm it is busy.
  4. Check fleet discovery / list_devices(...).
  5. Observe that the device may still appear available.

Expected behavior

Fleet-facing status should reflect the device’s current runtime status closely enough for orchestrators to make correct scheduling decisions.

At minimum, a busy device should not continue to appear available in fleet discovery.

Actual behavior

The device can be actively busy while the registry / fleet view still shows it as available.

Suspected cause

The runtime appears to snapshot device status during initialization and reuse that stored payload for registration.

The heartbeat path appears to support dynamic fields through a heartbeat provider, but does not automatically propagate the device’s current status on each heartbeat.

That can leave the registry with stale status even if the device’s local runtime state has changed.

Why this matters

This can lead to:

  • double-dispatch onto a single busy device
  • misleading fleet state in tools and UIs
  • unnecessary compensating logic in orchestrators that should be able to trust fleet status

Notes

This appears to be a generic status propagation issue in the runtime / registration / heartbeat path, not a problem specific to one particular device implementation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions