The server is now enforcing and correcting bad values of these parameters in the following way. If they are documented, the documentation should probably reflect this:
ShardingTaskExecutorPoolHostTimeoutMS > ShardingTaskExecutorPoolRefreshRequirementMS > ShardingTaskExecutorPoolRefreshTimeoutMS
ShardingTaskExecutorPoolHostTimeoutMS > ShardingTaskExecutorPoolRefreshRequirementMS + ShardingTaskExecutorPoolRefreshTimeoutMS
While doing some testing with mongos connection we noticed that if you set the ShardingTaskExecutorPoolHostTimeoutMS below the heartbeat timer mongos will close the idle sessions to secondaries (in our case they aren't in use).
This is a poor behavior because ShardingTaskExecutorPoolMinSize is set to 1, and this ShardingTaskExecutorPoolHostTimeoutMS enforcement is causing the only single connection open to close-- which means that mongos must then immediately create a new one.
Mongos should not close sessions to below the configured ShardingTaskExecutorPoolMinSize regardless of the configured ShardingTaskExecutorPoolHostTimeoutMS