Per-unit measurements
Print one complete JSON line when your command finishes a logical unit of work:
import json
print("nodus.unit_done " + json.dumps({"id": "batch-42", "ms": 125.5}), flush=True)
Keep each unit ID stable if recovery repeats the same work. IDs must contain at most 128 UTF-8 bytes. Durations must be finite, nonnegative milliseconds.
Read measurements from the workload returned by the service:
workload = client.get(workload_id)
metrics = workload.unit_metrics
if metrics is not None:
print(metrics.units_completed, metrics.p50_ms, metrics.p95_ms)
print(metrics.cost_per_unit_usd, metrics.dropped_observations)
Cost per unit uses posted workload charges. It can change while charges settle.
It is not a final price estimate. Missing measurements remain None.
Measurements arrive periodically. A host failure can lose observations that have not reached the service. A full local queue reports dropped observations, so these measurements do not prove that every completed unit was counted.
These lines report performance only. They do not save application state or advance the recovery position.