The update gate checks a payload with the internal validate_board_update_structure() and validate_board_update_result() (board-server.R#L385-L391), not with the exported validate_board_update() generic, so a board subclass's method never runs there. In blockr.dock, validate_board_update.dock_board() checks the views and extensions components of a payload, and it runs only when blockr.assistant's staging calls the generic (stage-pending.R#L85).
Call the generic from the gate, so a front-end's checks apply to every payload. The gate runs the structural check before augment_board_update() and the result check after it, while the board method runs both in one call, so the method's two halves have to keep that order.
Found while writing https://github.com/orgs/BristolMyersSquibb/discussions/489.
The update gate checks a payload with the internal
validate_board_update_structure()andvalidate_board_update_result()(board-server.R#L385-L391), not with the exportedvalidate_board_update()generic, so a board subclass's method never runs there. In blockr.dock,validate_board_update.dock_board()checks theviewsandextensionscomponents of a payload, and it runs only when blockr.assistant's staging calls the generic (stage-pending.R#L85).Call the generic from the gate, so a front-end's checks apply to every payload. The gate runs the structural check before
augment_board_update()and the result check after it, while theboardmethod runs both in one call, so the method's two halves have to keep that order.Found while writing https://github.com/orgs/BristolMyersSquibb/discussions/489.