value flow (producer -> consumer, typed view values)
==========================================================
entry inputs (seeded at the boundary):
  sample       = {}

activities (assembled inputs -> produced outputs):
  Measure [measure]
      in : {'plate': {}}
      out: {'plate_out': {}, 'reading': {'mean': 0.0, 'n': 0}}
  Az/A [analyze]
      in : {'reading': {'mean': 0.0, 'n': 0}}
      out: {'score': {'value': 0.0, 'ok': False}}
  Finish [finish]
      in : {'plate_in': {}, 'go': {'value': 0.0, 'ok': False}}
      out: (none)

whole-workflow outputs (returns):
  final_score  = {'value': 0.0, 'ok': False}   <- Az/A.score
