Views and node_access I have a D7 installation with about 2k "project" nodes, which have a multi-entry field "team members" used to control view and edit access.

So far, I have my (pretty complex) logic inside node_access, and it works fine. But views (e.g. a "new projects" feed) don't respect node_access. The mymod_node_access hook is called (I see it with dpm()), but the nodes still appear in the view result.

Obviously I could simply hide the elements using a view field template, but that breaks the paging system (e.g. user selects "10 projects per page", but sees only four).

How can I make the Views module respect node_access as a filter?
If you are willing to give it a try to "replace node_access AND drupal filters with one solution" (as per one of your comments), then have a look at the Group module (commonly perceived as an alternative for Organic Groups).

Group allows for creating arbitrary collections of your content and users on your site, and grant access control permissions on those collections. It is available as of D7, and has a D8 version also. The Group module creates groups as entities, making them fully fieldable, extensible and exportable. Which also makes it integrate very well (out of the box) with commonly used modules such as Rules, Views, etc.

Some more questions you may want to look at for more details:


What are the various roles supported by the Group module?, which explains the various types of roles that can be used. 
How to bulk assign existing content to a group created with the Group module?, a typical issue when adding this module to an existing site).
What are the features of the Group module versus Organic Group module?


Resources


Community documentation for the Group module.
Video tutorial "How to use the Group module in Drupal 8 to manage editorial access control to different areas of a web site".