Both of those behaviours are intended.
I.e., if you write
let x = 1
let x = "hello"
this is perfectly valid ocaml, and the visible result is a value x of type string (the first definition gets hidden).
The same behaviour is now available for signatures.
I'm not sure what kind of error a warning would help catch.

Dear ocaml developers, please keep the current behavior (keeping the last declaration): do not warn nor fail since it will break many existing codes which intensively override signatures using "include <module type>".