I discovered this oddity working on a hypothesis-jsonschema upgrade:
from jsonschema import validate
validate(0.0, {"type": "integer"}) # passes
validate(0.0, {"type": "integer", "$schema": "http://json-schema.org/draft-04/schema#"}) # fails
The first behaviour is correct, because the "integer" 'type' is defined by having a zero fractional part, rather than by the Python type of the value. (a surprise which my planned feature will introduce to users...)