It seems like I should just mark those only enabled for win 7 as core applications not available for migration then they wouldn't show.
@CharlesW , what's the difference between checking the box for "core application" versus just not checking the box for "show for migration"? Wouldn't that have the same effect either way?
One other thing you can do is if you have a Windows 10 app that replaces the Windows 7 app (either new version or different app), you could set up an upgrade/replace relationship between them. Then they'll still see the Windows 7 app during OSD, but it will indicate that the app will be replaced by the Windows 10 app. If you don't have a Windows 10 replacement, you might be able to create a placeholder catalog item for "Not Supported on Windows 10" (not sure if it would work with a general catalog item, but if not, just create a dummy SCCM package that just exits with a success message), then link your Windows 7 app to that placeholder with an upgrade/replace relationship. Then if they select a Windows 7 app during OSD, it would tell them it will be replaced with "Not Supported on Windows 10". I'll caveat this by saying I haven't tried this, but I think it should work. It just depends on if you want them to have visibility to what they are losing or not.
Jim - I "believe" that if you select "core application", and have "show for clone/migrate", the item will still be available under the support tools->clone/migrate tab. It just won't be available during a task sequence checkout.. Of course, it you are not using clone/migrate, then you should simply be able to deselect "show for clone/migrate", to get the same results. Mind you, I've not actually tested this, but I think that this is how it works.