In my opinion ,bisect should choose commits between v4.7 tag and v4.8-rc1 tag judging from time line .
This is not exactly what bisect will do. bisect will choose all commits which are contained in the tag v4.8-rc1 and not contained in tag v4.7. This will differ if e.g. a branch is created from v4.6 and changes are committed to it before v4.7 is created - but the branch is not merged into v4.7. Especially in kernel development there might be a lot of changes which have been committed quite some time before they have been merged. The date of those commits will then be before v4.7, however their changes are not contained in v4.7.
It is important that bisect behaves this way and not based on the time as it is used to find the commit which introduced a problem. This can also happen with a commit created before the "good" version but not contained into it yet.
If you have an commit with you can check in which tags it is contained using git tag --contains <commit-hash>
. Most probably the tag v4.7 will not be part of that list and this is the explanation why those commits are chosen by git bisect
.