plans/multi_embryo.py:118-119 reads xy_stage._x_limits / ._y_limits. Neither attribute exists — the properties are x_limits (devices/stage.py:147) and y_limits (:152). The line raises AttributeError whenever that path executes.
Found while tracing the stage envelope for #107, not from the walkthrough recording — this path did not run during the demo.
Fix: use the real property names. Worth doing as part of #107, which consolidates the envelope into instance state read through those same two properties, so the three current read sites (stage.py:165-171, device_layer.py:362, this one) stop duplicating it.
Worth a test that exercises the multi-embryo plan far enough to touch the limits, since a typo'd attribute name is exactly what a smoke test catches and review does not.
plans/multi_embryo.py:118-119readsxy_stage._x_limits/._y_limits. Neither attribute exists — the properties arex_limits(devices/stage.py:147) andy_limits(:152). The line raisesAttributeErrorwhenever that path executes.Found while tracing the stage envelope for #107, not from the walkthrough recording — this path did not run during the demo.
Fix: use the real property names. Worth doing as part of #107, which consolidates the envelope into instance state read through those same two properties, so the three current read sites (
stage.py:165-171,device_layer.py:362, this one) stop duplicating it.Worth a test that exercises the multi-embryo plan far enough to touch the limits, since a typo'd attribute name is exactly what a smoke test catches and review does not.