The specification also says [1]:
| Several constructs begin with a marker, and the body of the construct
| **must** be indented relative to the marker.
(emphasis mine)
| For constructs using simple markers (bullet lists, enumerated lists,
| footnotes, citations, hyperlink targets, directives, and comments), the
| level of indentation of the body is determined by the position of the
| first line of text, which begins on the same line as the marker.
If I read it correctly, this means that if your directive starts with
".. list-table::", the content should be aligned under the "l" letter,
i.e. indented with three spaces.
The directives syntax section [2] also has the following diagram:
+-------+-------------------------------+
| ".. " | directive type "::" directive |
+-------+ block |
| |
+-------------------------------+
which confirms my hypothesis. By chance, your table indented with two spaces
does not cause syntax errors, but you should not rely on that.
In any case, docutils/rst2html is the reference implementation, so I would
say a valid markup is markup that is correctly parsed by docutils.
Please close this bug if you agree with me.
[1]:
https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#indentation
[2]:
https://docutils.sourceforge.io/docs/ref/rst/directives.html
--
Dmitry Shachnev