Context
prepare ios-runner --json returns durationMs, buildMs, connectMs, healthCheckMs where the parts exceed the whole (measured: durationMs 27337, buildMs 10642, connectMs 12635, healthCheckMs 14702 — sum 37.9s vs 27.3s total), because healthCheck subsumes connect. Anyone decomposing prepare time (humans and agents both did this week) has to reverse-engineer the containment.
Expectation
Either make the fields disjoint (build / connect / health-after-connect) or document the containment in the field names/help (healthCheckMs → healthCheckIncludingConnectMs, or a note in prepare --help and the typed client comment). Acceptance: sum of disjoint parts ≤ total in a unit test, or explicit doc of which field contains which.
Context
prepare ios-runner --jsonreturnsdurationMs,buildMs,connectMs,healthCheckMswhere the parts exceed the whole (measured: durationMs 27337, buildMs 10642, connectMs 12635, healthCheckMs 14702 — sum 37.9s vs 27.3s total), because healthCheck subsumes connect. Anyone decomposing prepare time (humans and agents both did this week) has to reverse-engineer the containment.Expectation
Either make the fields disjoint (build / connect / health-after-connect) or document the containment in the field names/help (
healthCheckMs→healthCheckIncludingConnectMs, or a note inprepare --helpand the typed client comment). Acceptance: sum of disjoint parts ≤ total in a unit test, or explicit doc of which field contains which.