v3.22.4: the proactive-drain pending exemption
The runner's unexpected-pending-command guard fired for any non-expect step,
so a proactive-drain after a step that answered 91XX failed with
"unexpected proactive command pending (SW 91XX) - add an expect step or a
status action" - contradicting the drain's own doc ("consume whatever the
card announces") and the v3.22.2 RAM recipe ("an expect or a proactive-drain").
The guard now exempts a proactive-drain step: its STATUS poll re-announces
the unfetched command, fetches and answers it, and the drain's final-SW and
pending handling is unchanged (a still-pending card is handed to the next
step, an idle card passes). No pending-length plumbing: STATUS-first keeps
the drain's attempts/log semantics and tolerates a card that dropped the
command. The guard note now names the drain instead of the misleading
"status action" (a status action in that position also trips the guard).
Docs: the drain section in test-scripts.md, api.md's action list and the
help EN/RU drain bullet. Tests: 839 frontend + 819 Python; sw cache
simple-v408.
This commit is contained in:
+3
-1
@@ -743,7 +743,9 @@ mask `91??`, i.e. poll until the card announces a command) or `proactive-drain`
|
||||
optional `require` `{command, qualifier?}` asserting at least one drained
|
||||
command; the final SW is the step's `check.sw`, so a still-pending card fails
|
||||
and hands the command to the next step - an empty drain passes unless
|
||||
`require` was given).
|
||||
`require` was given). It is exempt from the runner's
|
||||
unexpected-pending-command guard, so it also consumes a command a previous
|
||||
step left pending (`91XX`).
|
||||
|
||||
`check` is `{"sw": ..., "data": ...}` (exact or `{"mode": "mask", "value":
|
||||
"91??"}`, `?` = per-nibble wildcard) plus `"por"` for SCP80 -
|
||||
|
||||
Reference in New Issue
Block a user