Severity survives to the end
Severity is the first thing most implementations lose. Promote a warning into an error and you have manufactured a crisis the night before a deadline; demote an error and you have hidden a real one. It is carried through to the result exactly as declared.
The bundle is opened the way the spec says
There is a defined procedure for working out which file inside a bundle is the report. Guess from the extension or the folder name and you will sometimes validate the wrong file, or miss the real one entirely and still report success. We follow the procedure.
Three formats, one meaning — and we check that
The same report may be written as XML, JSON or CSV, and all three are supposed to mean exactly the same thing. Whether that actually holds is itself a rule, and it is one that is easy to skip. We check it, offline, with no network access.
The unit of validation is the filing, not the file
An Inline XBRL filing is usually split across several files, and the specification says to treat them as one. Validate each file on its own and a whole class of errors — identifiers reused across documents, for one — disappears without a trace, and every file passes.