docs: audit the Devices tab components - #155
Merged
pskeshu merged 1 commit intoSep 5, 2026
Merged
Conversation
A read of every surface from the bottom camera through to starting an experiment, judged against docs/architecture/PANELS.md. Done from the code, without hardware; anything needing the rig is marked. Three findings are workflow correctness rather than presentation. The first is fixed separately; the other two are recorded here. **Nothing checks that calibration has been done.** Fixed in its own change — see the preflight. Recorded here because it is the finding that reorders the rest of the list. **`Start` is four different verbs behind one label.** `startRun` branches on `_mode`: `single` acquires one volume and finishes, `adaptive` starts a timelapse, `library` runs a tactic, `agent` hands over a prompt. The label never changes, and the mode selector lives in a different block above it. In `single` mode the primary button is not starting an experiment at all. **`single` mode silently ignores the roster.** Every other mode passes `subjectIds()`; `single` uses `_selected` alone. So the roster the whole preceding workflow exists to produce matters or does not depending on a segmented control, with nothing saying so. Related: `subjectIds()` falls back to every embryo when all of them are references, so a roster of nothing but reference embryos would be imaged as subjects. Also recorded: three renderings of one roster (`renderEmbryoRail`, `renderRoster`, and the `embryos.js` badge) with arbitrarily different action sets — delete on one pane, Centre and role on the other, for no reason either pane justifies. That is the root of gently-project#129 and the last duplicated surface in the tab. And a smaller one worth its own line: the actionable empty state ("Go to Bottom cam") is on Acquisition, while Bottom cam — the pane you are already on — describes the fix without offering it. The issue cache that was in an earlier draft of this commit is gitignored instead. ruff 0.16 formats Python code blocks inside markdown, so committing a verbatim mirror of issue bodies means the formatter rewrites the snippets people quoted in them. It is regenerable local convenience, not source. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Read of every surface from the bottom camera through to starting an experiment, judged against
docs/architecture/PANELS.md. From the code, without hardware; anything needing the rig is marked.The calibration finding is fixed in #154. The other two workflow-correctness findings are recorded here and fixed next:
Startis four different verbs behind one label —singleacquires one volume and finishes,adaptivestarts a timelapse,libraryruns a tactic,agenthands over a prompt. Label never changes; the mode selector is in a different block.singlemode silently ignores the roster — every other mode passessubjectIds(). AndsubjectIds()falls back to every embryo when all are references, so a roster of pure references would be imaged as subjects.Also recorded: three renderings of one roster with arbitrarily different action sets (delete on one pane, Centre and role on the other) — #129's root and the last duplicated surface in the tab. And the actionable empty state sits on the pane you reach second.
The issue cache from an earlier draft is gitignored instead: ruff 0.16 formats Python code blocks inside markdown, so committing verbatim issue bodies means the formatter rewrites the snippets people quoted.