SYS-FMT-001 Markdown requirement format
#
Each requirement shall be authored as a Markdown heading of level 2 or deeper followed immediately by a fenced ```attr ``` YAML block, then free-form prose. The heading text is the requirement ID; an optional human-readable title may follow the ID after a colon and space (e.g., ## REQ-001: Login requirement). A heading is a requirement exactly when its next AST sibling is an attr fence — requirement depth is not fixed, so any h2+ heading with an adjacent attr block is a requirement and its parent is the nearest enclosing requirement (SYS-CON-001 defines the headings that are not requirements). An optional *Rationale:* paragraph may follow the prose statement and is extracted from the body.
A level-1 heading is the document title and can never be a requirement: an attr block under a level-1 heading is a parse error.
Details
- Priority
- Critical
- Status
- approved
Detecting requirements by AST adjacency instead of a configured heading depth means documents may mix section headings and requirements at any depth, and a generated document needs no level convention. Nesting follows Markdown's native hierarchy, so sub-requirements express V-model decomposition without an explicit parent attribute.