The macro name and the first argument, and any two consecutive arguments, can be optionally separated by exactly one newline character, e.g.:
[Design goals]
is equivalent to:
\H[2]{scope}[Design goals]
which is also equivalent to:
[Design goals]
This allows to greatly improve the readability of long argument lists by having them one per line.
There is one exception to this however: inside an insane header, any newline is interpreted as the end of the insane header. This is why the following works as expected:
== My header 2 `some code`
and the id gets assigned to the header rather than the trailing code element.