Some fields in Settings API form are saving, others are not

I figured it out. It’s not actually in the code above at all, but in one of the lower methods I use to generate the array keys for $settings.

The problem was that in one of those other methods, I had the following code:

if ( ! isset( $_GET['page'] ) || $this->slug !== $_GET['page'] ) {
    return $options;
}

I often use this to avoid making unnecessary API calls when users are doing other things inside the admin. But in this case, it was also preventing the plugin from getting the settings key names for those fields when the data was posted to Core’s options.php, since of course options.php does not have the $_GET['page'] value expected by this plugin.

I still need to do some investigating to make sure I only call these things when needed, but at least for this question that is the problem, and is thus solved.