{"action":"closed","issue":{"url":"https://api.github.com/repos/pantsbuild/pants/issues/2970","repository_url":"https://api.github.com/repos/pantsbuild/pants","labels_url":"https://api.github.com/repos/pantsbuild/pants/issues/2970/labels{/name}","comments_url":"https://api.github.com/repos/pantsbuild/pants/issues/2970/comments","events_url":"https://api.github.com/repos/pantsbuild/pants/issues/2970/events","html_url":"https://github.com/pantsbuild/pants/issues/2970","id":136590563,"number":2970,"title":"Graph invalidation","user":{"login":"stuhood","id":46740,"avatar_url":"https://avatars.githubusercontent.com/u/46740?v=3","gravatar_id":"","url":"https://api.github.com/users/stuhood","html_url":"https://github.com/stuhood","followers_url":"https://api.github.com/users/stuhood/followers","following_url":"https://api.github.com/users/stuhood/following{/other_user}","gists_url":"https://api.github.com/users/stuhood/gists{/gist_id}","starred_url":"https://api.github.com/users/stuhood/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stuhood/subscriptions","organizations_url":"https://api.github.com/users/stuhood/orgs","repos_url":"https://api.github.com/users/stuhood/repos","events_url":"https://api.github.com/users/stuhood/events{/privacy}","received_events_url":"https://api.github.com/users/stuhood/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/pantsbuild/pants/labels/engine","name":"engine","color":"fbca04"}],"state":"closed","locked":false,"assignee":{"login":"kwlzn","id":1883523,"avatar_url":"https://avatars.githubusercontent.com/u/1883523?v=3","gravatar_id":"","url":"https://api.github.com/users/kwlzn","html_url":"https://github.com/kwlzn","followers_url":"https://api.github.com/users/kwlzn/followers","following_url":"https://api.github.com/users/kwlzn/following{/other_user}","gists_url":"https://api.github.com/users/kwlzn/gists{/gist_id}","starred_url":"https://api.github.com/users/kwlzn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kwlzn/subscriptions","organizations_url":"https://api.github.com/users/kwlzn/orgs","repos_url":"https://api.github.com/users/kwlzn/repos","events_url":"https://api.github.com/users/kwlzn/events{/privacy}","received_events_url":"https://api.github.com/users/kwlzn/received_events","type":"User","site_admin":false},"milestone":null,"comments":1,"created_at":"2016-02-26T04:06:37Z","updated_at":"2016-03-18T22:53:52Z","closed_at":"2016-03-18T22:53:52Z","body":"This is a followup to #2946. What \"native\" means, really, is that graph invalidation is aware that particular graph nodes represent file operations. So graph invalidation is the only thing that needs to identify and special case for filesystem operations. Optionally, we could also create actual `Node` subclasses for these operations."}}