embeint.htf
Station runtime

Upgrade a station

Move an existing jig to station runtime v0.3.0 with validated plans and durable reports.

The current released pair is HTF v0.1.4 and station runtime v0.3.0, released on 3 October 2026. Updating the HTF application or publishing a package does not update physical station installations. Existing station versions remain compatible with the new server.

1. Confirm server support

Upgrade a station to v0.3.0 after its server is on HTF v0.1.4. Older servers cannot acknowledge the new capture envelopes, so those reports would remain in the station outbox. Use the final HTTPS API URL directly; credential-bearing HTTP clients reject redirects.

2. Review and validate the plan

Keep a copy of the current application dependency lockfile and local/runtime YAML. Check both configurations with the v0.3.0 checker before switching the production process:

uvx --from embeint-htf-station==0.3.0 htf-station check-config config.yaml --runtime exported-runtime.yaml

Set the station's usual environment values and copy its saved runtime YAML into exported-runtime.yaml. See Validate configuration for limits and diagnostics.

Review these settings even if validation passes:

  • Runtime expressions: add interpolate: true to stages that expand ${dut_id}, ${run_id}, or context values such as ${provisioning.serial_number}. The default is false, so unmarked strings remain literal. Uppercase ${ENV_VAR} configuration-time expansion is separate.
  • Managed secrets: declare required_secrets: [NAME] on stages that need them. The runtime checks all declared secrets for a lane's plan before any stage executes. See Credentials and secrets.
  • Report storage: keep .htf-cache/report-outbox/<station-id> on persistent, writable storage and preserve it through application updates. Include its rejected/ and deferred/ directories when checking disk capacity.

The runtime preserves the legacy Programmer protocol and Settings.plugins for existing custom applications. Plugin names are metadata; your application still needs to import and register its custom stage implementations.

3. Pin and install the runtime

For a station application managed by uv, stop the listener at an idle point, then update its dependency:

uv add 'embeint-htf-station==0.3.0'
uv sync

For the repository-based sample in the first-run guide, use the v0.3.0 checkout. Preserve your custom Python code, credentials, and local configuration when updating a checkout.

4. Verify a pilot jig

Restart the listener and confirm its heartbeat, applied plan, and required secret availability. Run a known DUT and compare the hardware outcome, stage results, captures, and logs. On a bench, exercise a retest and disconnect/restart recovery to verify pending reports reach HTF. Enable explicit capture mappings on other jigs after the pilot passes.

Historical logs are not backfilled into captured DUT data. A hardware pass also does not guarantee capture delivery; inspect capture warnings and the report outbox if values are missing.

Read the changelog for the feature summaries and links to the released packages.