{"action":"created","issue":{"url":"https://api.github.com/repos/graphql/graphql-js/issues/127","labels_url":"https://api.github.com/repos/graphql/graphql-js/issues/127/labels{/name}","comments_url":"https://api.github.com/repos/graphql/graphql-js/issues/127/comments","events_url":"https://api.github.com/repos/graphql/graphql-js/issues/127/events","html_url":"https://github.com/graphql/graphql-js/pull/127","id":100886951,"number":127,"title":"[RFC] schema enforced interface adherance.","user":{"login":"leebyron","id":50130,"avatar_url":"https://avatars.githubusercontent.com/u/50130?v=3","gravatar_id":"","url":"https://api.github.com/users/leebyron","html_url":"https://github.com/leebyron","followers_url":"https://api.github.com/users/leebyron/followers","following_url":"https://api.github.com/users/leebyron/following{/other_user}","gists_url":"https://api.github.com/users/leebyron/gists{/gist_id}","starred_url":"https://api.github.com/users/leebyron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/leebyron/subscriptions","organizations_url":"https://api.github.com/users/leebyron/orgs","repos_url":"https://api.github.com/users/leebyron/repos","events_url":"https://api.github.com/users/leebyron/events{/privacy}","received_events_url":"https://api.github.com/users/leebyron/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/graphql/graphql-js/labels/CLA%20Signed","name":"CLA Signed","color":"ededed"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-08-13T22:54:13Z","updated_at":"2015-08-14T00:17:08Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/graphql/graphql-js/pulls/127","html_url":"https://github.com/graphql/graphql-js/pull/127","diff_url":"https://github.com/graphql/graphql-js/pull/127.diff","patch_url":"https://github.com/graphql/graphql-js/pull/127.patch"},"body":"This adds an invariant step in the Schema ctor for enforcing that all Object types in the Schema properly adhere to the Interface types they claim to implement.\r\n\r\nThis effectively implements http://facebook.github.io/graphql/#sec-Object-type-validation"},"comment":{"url":"https://api.github.com/repos/graphql/graphql-js/issues/comments/130898094","html_url":"https://github.com/graphql/graphql-js/pull/127#issuecomment-130898094","issue_url":"https://api.github.com/repos/graphql/graphql-js/issues/127","id":130898094,"user":{"login":"leebyron","id":50130,"avatar_url":"https://avatars.githubusercontent.com/u/50130?v=3","gravatar_id":"","url":"https://api.github.com/users/leebyron","html_url":"https://github.com/leebyron","followers_url":"https://api.github.com/users/leebyron/followers","following_url":"https://api.github.com/users/leebyron/following{/other_user}","gists_url":"https://api.github.com/users/leebyron/gists{/gist_id}","starred_url":"https://api.github.com/users/leebyron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/leebyron/subscriptions","organizations_url":"https://api.github.com/users/leebyron/orgs","repos_url":"https://api.github.com/users/leebyron/repos","events_url":"https://api.github.com/users/leebyron/events{/privacy}","received_events_url":"https://api.github.com/users/leebyron/received_events","type":"User","site_admin":false},"created_at":"2015-08-14T00:17:08Z","updated_at":"2015-08-14T00:17:08Z","body":"Let's defer that for this particular PR. Keeping this invariant preserves option value to introduce co/contravariance like that in the future.\r\n\r\nIn fact, there are similar concerns with introducing non-null arguments on an implementing object field. I'll edit this to make the set of arguments invariant as well to preserve the same.\r\n\r\nI actually really like at least the idea of nullability co/contravariance I think that this is a subtlety that people will eventually encounter and be surprised by. Let's tackle it in a separate PR."}}