To answer my own question, I guess there are two workaround I’ve thought of. One is to simply use a where clause to restrict the list to just one record. Sort-of a preview read-only view. The user then needs to click edit to change anything. Not quite as good as going directly to the edit page, but it’s OK in some cases.
Another workaround is to filter the $output of render() to remove the buttons, maybe like this
$output->output = str_replace("value='Update changes'", "value='Save'", $output->output);
$output->output = str_replace("value='Update and go back to list'", "value='Save and Return'", $output->output);
and then use logic in the controller and CodeIgniter 4 routes to jail into edit form.
I’ve used both these techniques to port my v1.x forms that use unset_list()