Elements

graph TD; %% REQVIRE-AUTOGENERATED-DIAGRAM %% Graph styling classDef userRequirement fill:#D1C4E9,stroke:#7E57C2,stroke-width:2px; classDef systemRequirement fill:#E1D8EE,stroke:#673AB7,stroke-width:1.5px; classDef verification fill:#DCEDC8,stroke:#4CAF50,stroke-width:2px; classDef folder fill:#FAFAFA,stroke:#9E9E9E,stroke-width:3px; classDef file fill:#FFF8E1,stroke:#FFCA28,stroke-width:2px; classDef default fill:#F5F5F5,stroke:#424242,stroke-width:1.5px; subgraph 8735c0a811307e57["📁 requirements/Functional/Core"] subgraph 193cce1f294b91c8["📄 ModelManagement.md"] 15293612289d990c["Relation Types and behaviors
📎 RelationTypes.md
📎 requirements/Refinements.md#relation-semantics-specification"]; class 15293612289d990c systemRequirement; click 15293612289d990c "ModelManagement.html#relation-types-and-behaviors"; 1275026756e287b9["Verification Type Categories
📎 requirements/Refinements.md#supported-element-types-specification"]; class 1275026756e287b9 systemRequirement; click 1275026756e287b9 "ModelManagement.html#verification-type-categories"; end subgraph 525b4b735cf204bb["📄 Specifications.md"] ad64383b5bdb4b7b["Element Type Metadata Specification"]; class ad64383b5bdb4b7b default; click ad64383b5bdb4b7b "Specifications.html#element-type-metadata-specification"; end subgraph b88b5e4ef23c0883["📄 StructureAndParsing.md"] 136749f37a361991["Element Identity Model
📎 ElementIdentity.md"]; class 136749f37a361991 systemRequirement; click 136749f37a361991 "StructureAndParsing.html#element-identity-model"; 7971fe15dab8f0b7["Identifiers and Relations
📎 IdentifiersAndRelations.md"]; class 7971fe15dab8f0b7 systemRequirement; click 7971fe15dab8f0b7 "StructureAndParsing.html#identifiers-and-relations"; 9e793aabc302d0d5["Reserved Subsections Support
📎 ReservedSubsections.md"]; class 9e793aabc302d0d5 systemRequirement; click 9e793aabc302d0d5 "StructureAndParsing.html#reserved-subsections-support"; c1fde7d1c17c2acb["Specification File Identification"]; class c1fde7d1c17c2acb systemRequirement; click c1fde7d1c17c2acb "StructureAndParsing.html#specification-file-identification"; 625bdde09d955477["Structure and Addressing in Markdown Documents
📎 MarkdownStructure.md"]; class 625bdde09d955477 systemRequirement; click 625bdde09d955477 "StructureAndParsing.html#structure-and-addressing-in-markdown-documents"; end subgraph 98067cc5207d6b91["📄 Validation.md"] fcfc76ba4d193d75["Attachment Target Validation
📎 ReservedSubsections.md"]; class fcfc76ba4d193d75 systemRequirement; click fcfc76ba4d193d75 "Validation.html#attachment-target-validation"; fed54223697ea04e["Internal Consistency Validator"]; class fed54223697ea04e systemRequirement; click fed54223697ea04e "Validation.html#internal-consistency-validator"; end end subgraph 6c93988fc728d1f8["📁 requirements/Functional/Core/Verifications"] subgraph 622a654342e7abad["📄 AttachmentsVerifications.md"] 43a55500f0bebfda["Attachment Output Rendering Verification"]; class 43a55500f0bebfda verification; click 43a55500f0bebfda "Verifications/AttachmentsVerifications.html#attachment-output-rendering-verification"; 18307065fb353848["Attachments Subsection Parsing Verification"]; class 18307065fb353848 verification; click 18307065fb353848 "Verifications/AttachmentsVerifications.html#attachments-subsection-parsing-verification"; ff62a0266193ee63["Attachments Validation Verification"]; class ff62a0266193ee63 verification; click ff62a0266193ee63 "Verifications/AttachmentsVerifications.html#attachments-validation-verification"; end subgraph 83363717080555bd["📄 ParsingVerifications.md"] 98ae4e1997fb1002["Element Subsection Parsing Test"]; class 98ae4e1997fb1002 verification; click 98ae4e1997fb1002 "Verifications/ParsingVerifications.html#element-subsection-parsing-test"; 49c372fbdf0ebe68["Fragment Normalization Test"]; class 49c372fbdf0ebe68 verification; click 49c372fbdf0ebe68 "Verifications/ParsingVerifications.html#fragment-normalization-test"; 55d54f4d3853a23b["Non-Reserved Subsections Content Test"]; class 55d54f4d3853a23b verification; click 55d54f4d3853a23b "Verifications/ParsingVerifications.html#non-reserved-subsections-content-test"; 6cf270efbdc5a78["Specification File Identification Test"]; class 6cf270efbdc5a78 verification; click 6cf270efbdc5a78 "Verifications/ParsingVerifications.html#specification-file-identification-test"; end subgraph 46a9d0ceb9db210e["📄 ValidationVerifications.md"] 83d989f6ea529f74["Invalid Header Structure Test"]; class 83d989f6ea529f74 verification; click 83d989f6ea529f74 "Verifications/ValidationVerifications.html#invalid-header-structure-test"; end end subgraph 91eede421faaa553["📁 requirements/Functional/Operations"] subgraph e1e686bef27807d6["📄 ElementManipulation.md"] bf9a2f73b67492b9["Create Element Operation
📎 requirements/Functional/Operations/Constraints.md#target-location-constraint
📎 requirements/Functional/Operations/Behaviors.md#element-ordering-behavior"]; class bf9a2f73b67492b9 systemRequirement; click bf9a2f73b67492b9 "../Operations/ElementManipulation.html#create-element-operation"; end end subgraph 75874bcc96c01d2f["📁 requirements/Functional/Operations/Verifications"] subgraph cae715fe712bf6a2["📄 FormattingVerifications.md"] ccbfdf0d74ac48bf["Format Command Requirements Verification"]; class ccbfdf0d74ac48bf verification; click ccbfdf0d74ac48bf "../Operations/Verifications/FormattingVerifications.html#format-command-requirements-verification"; end end subgraph e57e8ed6cc4cc063["📁 requirements/Functional/Processing"] subgraph 743a852fd07358e8["📄 ChangeImpact.md"] a27cb4ff2637ed4a["Change Impact Detection"]; class a27cb4ff2637ed4a systemRequirement; click a27cb4ff2637ed4a "../Processing/ChangeImpact.html#change-impact-detection"; end end subgraph cfe1eea0278796bc["📁 requirements/Interfaces/CLI"] subgraph 43307c569ff89429["📄 Commands.md"] 457ab64992d42aa4["Attachment Commands
📎 requirements/Functional/Operations/Behaviors.md#file-persistence-behavior
📎 requirements/Functional/Operations/Behaviors.md#dry-run-mode-behavior
📎 requirements/Functional/Output/Specifications.md#diff-output-format-specification
📎 requirements/Functional/Core/Behaviors.md#attachment-input-auto-detection-behavior"]; class 457ab64992d42aa4 systemRequirement; click 457ab64992d42aa4 "../../Interfaces/CLI/Commands.html#attachment-commands"; end end 136749f37a361991 -.->|deriveReqT| 7971fe15dab8f0b7; 136749f37a361991 -.->|deriveReqT| fed54223697ea04e; 136749f37a361991 -.->|deriveReqT| a27cb4ff2637ed4a; e068cb8b03a77b4d["element.rs"]; class e068cb8b03a77b4d default; click e068cb8b03a77b4d "../../../core/src/element.rs"; 136749f37a361991 -->|satisfiedBy| e068cb8b03a77b4d; 35bd98d101f36b62["parser.rs"]; class 35bd98d101f36b62 default; click 35bd98d101f36b62 "../../../core/src/parser.rs"; 136749f37a361991 -->|satisfiedBy| 35bd98d101f36b62; 136749f37a361991 -.->|verifiedBy| 49c372fbdf0ebe68; 7971fe15dab8f0b7 -.->|deriveReqT| 15293612289d990c; 1cfe88f8d3cc7aac["relation.rs"]; class 1cfe88f8d3cc7aac default; click 1cfe88f8d3cc7aac "../../../core/src/relation.rs"; 7971fe15dab8f0b7 -->|satisfiedBy| 1cfe88f8d3cc7aac; 9e793aabc302d0d5 -.->|deriveReqT| 1275026756e287b9; 9e793aabc302d0d5 -.->|deriveReqT| fcfc76ba4d193d75; 9e793aabc302d0d5 -.->|deriveReqT| bf9a2f73b67492b9; 9e793aabc302d0d5 -.->|deriveReqT| 457ab64992d42aa4; 9e793aabc302d0d5 -->|satisfiedBy| e068cb8b03a77b4d; 9e793aabc302d0d5 -->|satisfiedBy| 35bd98d101f36b62; 9e793aabc302d0d5 -->|satisfiedBy| ad64383b5bdb4b7b; 9e793aabc302d0d5 -.->|verifiedBy| 43a55500f0bebfda; 9e793aabc302d0d5 -.->|verifiedBy| 18307065fb353848; 9e793aabc302d0d5 -.->|verifiedBy| ff62a0266193ee63; 9e793aabc302d0d5 -.->|verifiedBy| 98ae4e1997fb1002; 9e793aabc302d0d5 -.->|verifiedBy| 55d54f4d3853a23b; 499d48218b73f571["model.rs"]; class 499d48218b73f571 default; click 499d48218b73f571 "../../../core/src/model.rs"; c1fde7d1c17c2acb -->|satisfiedBy| 499d48218b73f571; c1fde7d1c17c2acb -->|satisfiedBy| 35bd98d101f36b62; c1fde7d1c17c2acb -.->|verifiedBy| 6cf270efbdc5a78; 625bdde09d955477 -.->|deriveReqT| 136749f37a361991; 625bdde09d955477 -.->|deriveReqT| 9e793aabc302d0d5; 625bdde09d955477 -->|satisfiedBy| e068cb8b03a77b4d; 625bdde09d955477 -->|satisfiedBy| 499d48218b73f571; 625bdde09d955477 -->|satisfiedBy| 35bd98d101f36b62; 625bdde09d955477 -->|satisfiedBy| 1cfe88f8d3cc7aac; bfee2085e3bb9f2b["subsection.rs"]; class bfee2085e3bb9f2b default; click bfee2085e3bb9f2b "../../../core/src/subsection.rs"; 625bdde09d955477 -->|satisfiedBy| bfee2085e3bb9f2b; 625bdde09d955477 -.->|verifiedBy| 83d989f6ea529f74; 625bdde09d955477 -.->|verifiedBy| ccbfdf0d74ac48bf; fed54223697ea04e -.->|deriveReqT| 14c74cc4fb33d735; fed54223697ea04e -->|satisfiedBy| 499d48218b73f571; fed54223697ea04e -->|satisfiedBy| 35bd98d101f36b62; fed54223697ea04e -.->|verifiedBy| ad323c8d4c0751e; a27cb4ff2637ed4a -.->|deriveReqT| 1868da177a2e8ffd; a27cb4ff2637ed4a -.->|deriveReqT| 27ee21b54c142739; 4391424e97bc407a["change_impact.rs"]; class 4391424e97bc407a default; click 4391424e97bc407a "../../../core/src/change_impact.rs"; a27cb4ff2637ed4a -->|satisfiedBy| 4391424e97bc407a; a27cb4ff2637ed4a -.->|verifiedBy| 3758f5f1c504cd42; 5f9cbc6f907e8045["test.sh"]; class 5f9cbc6f907e8045 default; click 5f9cbc6f907e8045 "../../../tests/test-parsing-functionality/test.sh"; 49c372fbdf0ebe68 -->|satisfiedBy| 5f9cbc6f907e8045; 15293612289d990c -.->|deriveReqT| 3b924660b3d92e9d; 15293612289d990c -.->|deriveReqT| 7b8a81499865dbaa; 15293612289d990c -.->|deriveReqT| ac192cac778569d0; 15293612289d990c -.->|deriveReqT| 4a77e514d9e5539b; 15293612289d990c -.->|deriveReqT| 6a54472e974b0c63; 15293612289d990c -->|satisfiedBy| 1cfe88f8d3cc7aac; 15293612289d990c -.->|verifiedBy| 98ae4e1997fb1002; 1275026756e287b9 -->|satisfiedBy| 75dfb35477f838d5; fcfc76ba4d193d75 -->|satisfiedBy| 499d48218b73f571; fcfc76ba4d193d75 -->|satisfiedBy| 35bd98d101f36b62; fcfc76ba4d193d75 -.->|verifiedBy| 18307065fb353848; fcfc76ba4d193d75 -.->|verifiedBy| ff62a0266193ee63; 25bf5cc42f41e395["cli.rs"]; class 25bf5cc42f41e395 default; click 25bf5cc42f41e395 "../../../cli/src/cli.rs"; bf9a2f73b67492b9 -->|satisfiedBy| 25bf5cc42f41e395; 993c12e82435a78e["crud.rs"]; class 993c12e82435a78e default; click 993c12e82435a78e "../../../core/src/crud.rs"; bf9a2f73b67492b9 -->|satisfiedBy| 993c12e82435a78e; d07e49b06be4058e["diff.rs"]; class d07e49b06be4058e default; click d07e49b06be4058e "../../../core/src/diff.rs"; bf9a2f73b67492b9 -->|satisfiedBy| d07e49b06be4058e; 95cf526671ec752c["graph_registry.rs"]; class 95cf526671ec752c default; click 95cf526671ec752c "../../../core/src/graph_registry.rs"; bf9a2f73b67492b9 -->|satisfiedBy| 95cf526671ec752c; bf9a2f73b67492b9 -->|satisfiedBy| 35bd98d101f36b62; bdf9762d399478a5["utils.rs"]; class bdf9762d399478a5 default; click bdf9762d399478a5 "../../../core/src/utils.rs"; bf9a2f73b67492b9 -->|satisfiedBy| bdf9762d399478a5; bf9a2f73b67492b9 -->|satisfiedBy| 40714cbda978a508; bf9a2f73b67492b9 -->|satisfiedBy| 3c85593db589fd04; bf9a2f73b67492b9 -->|satisfiedBy| 86e301b42cc16d0d; bf9a2f73b67492b9 -.->|verifiedBy| 221f6c008823a4d0; bf9a2f73b67492b9 -.->|verifiedBy| d5bf7d0addaf6d19; 457ab64992d42aa4 -.->|verifiedBy| 1c80039ebf669864; 457ab64992d42aa4 -.->|verifiedBy| 285be0a87e4eada0; d882e7ff8e1ffe95["test.sh"]; class d882e7ff8e1ffe95 default; click d882e7ff8e1ffe95 "../../../tests/test-assets/test.sh"; 43a55500f0bebfda -->|satisfiedBy| d882e7ff8e1ffe95; 18307065fb353848 -->|satisfiedBy| d882e7ff8e1ffe95; ff62a0266193ee63 -->|satisfiedBy| d882e7ff8e1ffe95; 98ae4e1997fb1002 -->|satisfiedBy| 5f9cbc6f907e8045; ea6a90c3d551dae4["test.sh"]; class ea6a90c3d551dae4 default; click ea6a90c3d551dae4 "../../../tests/test-search-all-features/test.sh"; 55d54f4d3853a23b -->|satisfiedBy| ea6a90c3d551dae4; 94d34e73992ff9ac["test.sh"]; class 94d34e73992ff9ac default; click 94d34e73992ff9ac "../../../tests/test-gitignore-integration/test.sh"; 6cf270efbdc5a78 -->|satisfiedBy| 94d34e73992ff9ac; 5150ae05d0a88a84["test.sh"]; class 5150ae05d0a88a84 default; click 5150ae05d0a88a84 "../../../tests/test-invalid-relations/test.sh"; 83d989f6ea529f74 -->|satisfiedBy| 5150ae05d0a88a84; aaf45a054cfa1d47["test.sh"]; class aaf45a054cfa1d47 default; click aaf45a054cfa1d47 "../../../tests/test-advanced-format/test.sh"; ccbfdf0d74ac48bf -->|satisfiedBy| aaf45a054cfa1d47;

Specification File Identification

The system shall only parse markdown files that are identified as specification files. A markdown file is considered a specification file if and only if its first level-1 heading (#) is exactly # Elements. Files not meeting this criterion shall be ignored during model parsing, even if they have a .md extension.

Details

  • The # Elements heading must be the first H1 header in the file
  • Leading whitespace, blank lines, or frontmatter before the heading are allowed
  • Files without # Elements as first H1 are silently skipped (no error)
  • This rule applies in addition to .gitignore and .reqvireignore exclusions
  • The page title is not stored or tracked by the system

Metadata

  • type: requirement

Relations


Structure and Addressing in Markdown Documents

The system shall implement semi-structured markdown format specifications that defines the structure, rules, and usage of Elements, Subsections, Relations, and Identifiers in Markdown (.md) documents following clearly defined specifications.

Metadata

  • type: requirement

Attachments

Relations


Element Identity Model

The system shall distinguish between element identity (ID) and element addressing (identifier) to support stable element tracking independent of file location.

Metadata

  • type: requirement

Attachments

Relations


Identifiers and Relations

The system shall implement Identifiers and Relations following clearly defined specifications to ensure consistency, validity, and efficient querying and manipulation of these entities.

Metadata

  • type: requirement

Attachments

Relations


Reserved Subsections Support

The system shall support the following reserved subsections with predefined structure and behavior: Relations, Details, Metadata, and Attachments.

Details

The system shall support following reserved subsections:

  • Relations: Define relationships between elements
  • Details: Extend requirement text with additional information
  • Metadata: Define element type and classification
  • Attachments: Link external documents and Refinement elements
    • Can contain file paths (markdown links where text equals href)
    • Can contain element identifiers (markdown links to Refinement elements ONLY)

Each reserved subsection has specific parsing rules, validation requirements, and behaviors.

Metadata

  • type: requirement

Attachments

Relations