Covers the OMNY_SampleStorage widget, the real owner + measured-status EPICS channel, the otransfer_* CLI wrappers, and transfer reference-image saving -- so it can be pulled to a separate session/machine for testing. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018Mupip8x7Hean6E3FFvpbj
This commit is contained in:
1 parent
55f4638c78
commit
6291f6196b
1 file changed
+66
@@ -0,0 +1,66 @@
|
||||
# OMNY sample-storage testing checklist (as of 2026-09-04)
|
||||
|
||||
For live/sim testing of this branch's (`update-omny`) sample-storage work: the
|
||||
`OMNY_SampleStorage` widget's OMNY support, the real owner + measured-status EPICS
|
||||
channel, and the `omny.otransfer_*` CLI wrappers. Written so this can be pulled and
|
||||
run from a separate session/machine. See `OPEN_ISSUES.md` for the broader OMNY
|
||||
live-testing effort this is part of.
|
||||
|
||||
## Widget — `OMNY_SampleStorage`
|
||||
|
||||
- [ ] Open the widget in an OMNY session — header (stage+gripper) + fixed-O grid + 3
|
||||
shuttle group boxes render, no "no known setup" banner.
|
||||
- [ ] Occupied slots show names in legible text (not near-invisible — this was a
|
||||
dark-theme contrast bug, fixed).
|
||||
- [ ] Right-click an empty slot → **New sample…** → name + owner (both required,
|
||||
empty owner rejected) → slot fills in without an error (a `STATUS_NONE`
|
||||
crash here was fixed — client-side device proxies don't expose plain class
|
||||
attributes, only signals/USER_ACCESS methods).
|
||||
- [ ] Duplicate name (matching another occupied slot) → rejected with a clear
|
||||
message; renaming a slot to its own existing name is still fine.
|
||||
- [ ] Right-click an occupied slot → menu shows only **Change name…** / **Clear
|
||||
(set empty)** — no "Set measured status…" (removed; status is CLI-only now).
|
||||
- [ ] **Clear (set empty)** works without error.
|
||||
- [ ] Each shuttle's status line: right-click → **Set parking slot…** (1-6) /
|
||||
**Clear parking assignment** — shows "Slot N" / "not parked". The
|
||||
"● ACTIVE" badge needs `oparkz` sitting at a real target position (2-6);
|
||||
may not be easy to trigger from sim unless you drive that motor there.
|
||||
- [ ] **Print** button builds a PDF (expect a "printer not available" message
|
||||
unless you have a `WSLA_X12SA` CUPS queue locally — not a bug).
|
||||
|
||||
## CLI (`omny.otransfer_*`)
|
||||
|
||||
- [ ] Tab-complete `omny.otransfer_` — lists ~22 commands (`otransfer_show_all`,
|
||||
`otransfer_set_sample_status`, `otransfer_get_sample_owner`, etc.).
|
||||
- [ ] `omny.otransfer_help()` — prints the transfer commands **and then the full
|
||||
`dev.omny_samples.help()` reference** below it, in one call.
|
||||
- [ ] `omny.otransfer_show_all()` — table shows `(owner)` and
|
||||
`◐ started`/`✓ completed` suffixes on occupied slots.
|
||||
- [ ] `dev.omny_samples.set_sample_slot('A', 4, 'testsample', 'yourname')` then
|
||||
`dev.omny_samples.get_sample_name_and_owner('A', 4)` round-trips.
|
||||
- [ ] `omny.otransfer_set_sample_status('A', 1, 'started')` / `'completed'` /
|
||||
`'none'` — status is settable from the CLI (by design; not from the widget).
|
||||
- [ ] `omny.otransfer_park_loadlock_slot(6)` → answer **y** to "in back position"
|
||||
→ should now proceed (drive to the slot) instead of raising
|
||||
`OMNYTransferError` (was inverted — pre-existing bug, fixed); answer **n**
|
||||
→ should correctly abort with that error.
|
||||
|
||||
## Transfer reference-image saving
|
||||
|
||||
Depends on whether your session drives the Galil `MGconfirm`/`MGmntprgs`
|
||||
handshake (`_otransfer_confirm()`) — may not fire in a lightweight sim.
|
||||
|
||||
- [ ] Run `omny.otransfer_put_sample(...)` / `otransfer_get_sample(...)` through a
|
||||
confirm checkpoint → check `~/data/raw/logs/omny_sample_transfer_images/`
|
||||
for a new `.h5` file with both cameras of whichever pair was active
|
||||
(parking `cam200`/`cam203` vs stage `cam201`/`cam202`).
|
||||
- [ ] If the handshake doesn't fire: `omny._otransfer_save_reference_images(file_suffix='test')`
|
||||
after opening a camera view (e.g. `omny.otransfer_park_slot(3)`) to set
|
||||
`_omnycam_active_pair` — same effect, minus the physical move.
|
||||
|
||||
## X-ray eye alignment — known incomplete, not this branch's scope
|
||||
|
||||
The fit+image saving in `x_ray_eye_align.py` is shared code (also used by FlOMNI/LamNI)
|
||||
and should already work in principle, but it has pre-existing OMNY/LamNI method-name
|
||||
mismatches (e.g. `self.lfzp_in()`) that likely block the actual click-through run from
|
||||
completing for OMNY. Not fixed this pass — flag if you hit it.
|
||||
Reference in new issue
Block a user