Deployment engineering11 min read

Safe remote machine updates require more than a rollback button

A rollback control in the UI is useful. It is not a recovery system until the controller can authenticate, reject, survive, and prove each transition.

Factory technician working beside an industrial machine control panel
Photo by Bulat843 on Pexels

About the author

Dr. Mehran Kiani-Oshtorjani

Industrial software and simulation engineer

Mehran Kiani-Oshtorjani is a mechanical engineer and software developer working across real-time simulation, fluid-power systems, industrial control, and connected software. His doctoral research at LUT University focused on computational approaches for real-time industrial systems.

Engineering takeaways

  • Separate artifact authenticity, deployment authorisation, machine compatibility, and operational readiness; one signature cannot prove all four.
  • A controller must retain a bootable known-good state and recover when the new service never becomes healthy.
  • Roll out by machine cohort with explicit hold points, not by pressing deploy across an entire customer fleet.

An update is four decisions, not one upload

The server must prove which artifact it offers; the operator must be authorised to target this machine; the controller must decide whether hardware, operating system, runtime, configuration, and schema are compatible; and the machine must decide whether the process is in a safe state to change. Collapsing those checks into a single "deploy" permission creates an impressive demo and a fragile product.[2][3][1]

  • Authenticity: signed metadata binds artifact digest, size, version, and expiry.
  • Authorisation: policy binds an approved release to explicit organisations, sites, machines, and time windows.
  • Compatibility: the controller checks hardware model, architecture, OS, runtime API, storage, and configuration schema.
  • Readiness: local interlocks and operating state decide when installation and restart are allowed.

Sign metadata, not just a binary

A bare code signature proves that a key signed some bytes. It does not prevent an attacker or broken server from replaying an old but valid release, mixing metadata from different versions, or withholding current information. TUF and Uptane use signed roles, versions, hashes, and expiry to address rollback, freeze, arbitrary-software, and mix-and-match attacks.[2][3]

Treat installation as a recoverable transaction

Power can fail after download, during extraction, between schema migration and service restart, or before the cloud sees the new health state. The controller should download to an inactive area, verify before activation, make the switch atomic where possible, and keep the previous bootable release until the new one satisfies a local health contract.[4][1]

PhaseEvidence before advancingRecovery on failure
DownloadDigest, size, free spaceDelete partial artifact
StageSignature, metadata, compatibilityKeep active release untouched
ActivateAtomic pointer or boot slot switchBoot previous slot
ProveLocal process and I/O health within deadlineAutomatic rollback
CommitStable health and remote acknowledgementRetain audit record

A running process is not necessarily a healthy machine

Systemd saying "active" is weak evidence. A useful post-update contract checks the cyclic runtime, configuration load, expected I/O adapters, watchdog, telemetry age, resource limits, and machine-specific invariants. For a pump skid, that might include valid pressure input, no contradictory valve outputs, and a controlled stopped state before automatic operation is enabled.[1]

Keep the decisive checks local. A lost cloud connection during reboot must not cause an otherwise healthy machine to roll back repeatedly, and a green cloud connection must not override failed local interlocks.

Use cohorts, observation windows, and stop conditions

  1. Deploy to an internal hardware twin with production-like I/O and data volume.
  2. Release to one non-critical customer machine with an agreed maintenance window.
  3. Hold until the observation window covers starts, stops, reconnects, and expected load.
  4. Expand to a small cohort that represents different hardware revisions and site networks.
  5. Stop automatically when health, rollback, timing, or support thresholds fail.
  6. Require a new approval before the remaining fleet.

Progressive deployment is not merely a percentage slider. Cohorts should be selected to expose diversity, and the decision to continue should use release-specific evidence. A fleet that is 99% green can still hide the only controller revision that matters.[1][5]

Keep the evidence for the life of the product

For each machine, preserve the requested and installed version, artifact digest, metadata version, approver, timestamps, compatibility result, preflight result, activation outcome, health evidence, and rollback reason. This helps service teams diagnose incidents and supports the product-security obligations that European manufacturers are now formalising under the Cyber Resilience Act.[5][6]

  • Exercise key compromise and emergency revocation.
  • Test expired metadata and a controller with a badly wrong clock.
  • Pull power at every state transition.
  • Test a full disk, corrupt download, incompatible schema, and absent I/O adapter.
  • Measure rollback success without relying on remote access.

Frequently asked questions

Is container image signing enough for machine updates?

No. It helps authenticate content, but you still need freshness, rollback protection, target authorisation, compatibility checks, safe activation, health gates, and local recovery.

Should a machine update automatically?

Download and verification can often be automatic. Activation should follow machine-specific readiness policy, an approved window, and local safety conditions.

How long should the previous version remain available?

At least until the new version has passed its local and remote observation contract. Higher-risk machines may retain multiple recovery images or a factory-rescue path.

Sources and standards

  1. NIST SP 800-82 Rev. 3: Guide to Operational Technology SecurityNational Institute of Standards and Technology, September 2023
  2. The Update Framework specificationThe Update Framework
  3. Uptane Standard for Design and Implementation 1.1.0Uptane
  4. IoT Security Verification Standard: Software Platform RequirementsOWASP Foundation
  5. NIST SP 800-218: Secure Software Development FrameworkNational Institute of Standards and Technology, February 2022
  6. Regulation (EU) 2024/2847: Cyber Resilience ActEUR-Lex

BootCtrl Engineering last reviewed the technical claims and source links on 26 July 2026. Product statements are checked against the current implementation repositories; roadmap work is not presented as released capability.

Prove the recovery path before the first remote release

We can map your machine states, controller constraints, and release evidence into a staged update pilot.

Review an update workflow