docs(flomni): document edit-mode queue-add, hard Submit block, and scilog fix
CI for csaxs_bec / test (push) Successful in 1m33s

Updates plan section 6.1 (marks the two-write-paths rule as actually
implemented now) and the GUI test checklist (section 1 item 8, and
flags section 3 item 4 as needing re-testing since its old passing
result was against the since-replaced soft-warn Submit behaviour).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
x01dc
2026-07-13 15:58:37 +02:00
co-authored by Claude Sonnet 5
parent cf38a9a691
commit 7f7106c944
2 changed files with 48 additions and 16 deletions
@@ -391,6 +391,15 @@ doesn't expose, so the snapshot is still a complete `_TOMO_QUEUE_PARAM_NAMES` se
Gate "Done" on the same busy signal `TomoParamsWidget` already computes (tomo heartbeat
OR BEC scan-queue status).
**Implemented as designed, eventually.** The first GUI iteration shipped "Done" (named
`Submit` in the actual widget) as a soft warn — a Yes/Cancel confirmation dialog while
busy, not a block — because there was no "Add to queue" path yet for an in-progress
edit, and blocking Submit outright with nowhere else to put those edits would have been
a pure regression. A later pass added `TomoParamsWidget.add_edited_to_queue()` (a new
"Add to queue" button next to Submit, visible only in edit mode) that assembles the job
dict from the current form fields — exactly per this section's "must assemble the job
dict itself" rule — and only then did `submit_params()` become the intended hard block.
### 6.2 No in-place row editing
Editing a queued job = **delete it, add a new one, reorder into place**. One
@@ -9,11 +9,15 @@ session/chat.
validated**. It compiles, imports cleanly, and its non-Qt-rendering logic
(dynamic form building, step ordering, idempotent-default computation, job
dict assembly) was exercised with a scripted fake-client smoke test.
Section 3 (baseline regression) items 14 have been clicked through against
a live session and passed; item 5 (opening the queue dialog) onward, and
everything in sections 46a — including the sort-mode reorder buttons and
row tooltips added after the first pass — have **not** been clicked through
yet. That's what this document is for. Companion docs:
Section 3 (baseline regression) items 13 have been clicked through against
a live session and passed. **Item 4 needs re-testing** — it passed against
the *old* Submit behaviour (a Yes/Cancel confirmation dialog while busy),
which has since been replaced with a hard block plus a new "Add to queue"
button (section 1 item 8); the step-4 instructions below already describe
the new behaviour. Item 5 onward, and everything in sections 46a —
including the sort-mode reorder buttons and row tooltips added after the
first pass — have **not** been clicked through yet. That's what this
document is for. Companion docs:
`TOMO_QUEUE_COMMAND_JOBS_PLAN.md` section 6 (the design this implements),
`TOMO_QUEUE_TESTING.md` (Steps 1 & 2, already sim-validated).
@@ -74,6 +78,20 @@ support on top of it:
columns like Type/Exp (s)/Step (µm), which now auto-fit their content
instead. The "Added at" column was dropped — that value is still in the
row tooltip (item 6).
8. **"Add to queue" while editing, and a real Submit block.** Edit mode now
shows an **"Add to queue"** button next to Submit. It packages the
current (possibly unsubmitted) form fields as a new `pending` tomo job
and writes only `tomo_queue` — never the live param vars — so it's
always allowed, scan running or not (plan section 6.1). `Submit` is now
a real hard block while the beamline is busy instead of a Yes/Cancel
confirmation dialog, since there's finally somewhere else to put an
in-progress edit. `flomni.py` also got a small, unrelated robustness fix
in the same pass: `tomo_scan()`/`scilog_last_ptycho_scans()`/the
alignment-scan scilog entry now go through a new `_scilog_write()`
helper that tolerates scilog being disabled instead of raising
`RuntimeError` and pausing the whole queue over a logging side effect
(mirrors the existing enabled-check already used for the PDF report
entry).
---
@@ -106,8 +124,14 @@ file is exactly how a regression sneaks in.
field reverts to the last-submitted value, not your edit.
4. Start a real (or fast/sim) tomo scan from the CLI
(`flomni.tomo_scan()`), then open the widget while it's running. Confirm
the busy banner appears with a reason. Try **Submit** — confirm you get
the "scan appears to be running" confirmation dialog, not a silent write.
the busy banner appears with a reason and now says Submit is blocked.
Click **Edit**, change a value, click **Submit** — confirm it's refused
outright (a plain warning dialog, no Yes/Cancel choice) and nothing gets
written (`flomni.<param>` in the CLI still shows the old value). Then
click **"Add to queue"** instead — confirm it prompts for a label, adds a
new `pending` tomo job with your edited values (check via
`flomni.tomo_queue_show()` or the queue dialog), and does **not** change
any live param (`flomni.<param>` still shows the pre-edit value).
5. Click **☰ Queue control…**. Confirm the dialog opens and the table
reflects the current `tomo_queue` (including anything you added earlier
via CLI in prior testing sessions).
@@ -242,15 +266,14 @@ Worth knowing before you file something as broken:
`_queue_action_move()` is still the actual safety boundary regardless
(two-layer validation, plan section 3.3), so this is a UX gap, not a
safety gap.
- **`Done` is a soft warn, not a hard block, while a scan runs** (existing
pre-Step-3 behaviour, not something this iteration touched). The plan's
section 6.1 literally says "must be blocked"; the actual implementation
allows submitting with a confirmation dialog instead, on the reasoning
that some live params (e.g. counting time) safely take effect on the next
projection while others are already baked into the current run's
trajectory. Worth a deliberate decision (keep as documented nuance, or
tighten to match the plan literally) rather than silently "fixing" — flag
it if a real submit-while-running mistake actually happens during testing.
- **Resolved: `Submit` is now a hard block while the beamline is busy**,
matching plan section 6.1 literally instead of the earlier soft-warn
confirmation dialog. The gap that made the soft warn tempting in the first
place -- wanting to prepare a parameter set while a scan runs -- is now
covered by a new **"Add to queue"** button that appears next to Submit in
edit mode: it packages the current (possibly unsubmitted) form fields as
a new `pending` tomo-queue job and writes only to `tomo_queue`, never the
live param vars, so it's always allowed. See test step 4 in section 3.
- **No automated widget tests.** `pytest-qt` isn't a dependency of this
repo, so there's no `qtbot`-driven test suite here — the smoke test that
validated the builder's logic (dynamic fields, step ordering, idempotent