Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 21 additions & 11 deletions .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,61 +6,71 @@
"version": "11.2.1",
"commands": [
"dotnet-sonarscanner"
]
],
"rollForward": false
},
"demaconsulting.pandoctool": {
"version": "3.10.2",
"commands": [
"pandoc"
]
],
"rollForward": false
},
"demaconsulting.weasyprinttool": {
"version": "69.0.0",
"commands": [
"weasyprint"
]
],
"rollForward": false
},
"demaconsulting.sarifmark": {
"version": "1.3.2",
"commands": [
"sarifmark"
]
],
"rollForward": false
},
"demaconsulting.sonarmark": {
"version": "1.5.0",
"commands": [
"sonarmark"
]
],
"rollForward": false
},
"demaconsulting.reqstream": {
"version": "1.10.0",
"version": "1.11.0",
"commands": [
"reqstream"
]
],
"rollForward": false
},
"demaconsulting.buildmark": {
"version": "1.3.0",
"commands": [
"buildmark"
]
],
"rollForward": false
},
"demaconsulting.versionmark": {
"version": "1.4.3",
"commands": [
"versionmark"
]
],
"rollForward": false
},
"demaconsulting.reviewmark": {
"version": "1.3.1",
"commands": [
"reviewmark"
]
],
"rollForward": false
},
"demaconsulting.fileassert": {
"version": "0.5.1",
"commands": [
"fileassert"
]
],
"rollForward": false
}
}
}
125 changes: 125 additions & 0 deletions docs/reqstream/quality.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
---
# Quality/process requirements grouping SysML2Tools' use of off-the-shelf (OTS) process
# tooling and third-party parsing/rendering dependencies. These requirements exist so that
# OTS-derived requirements (which describe capabilities the repository's build/quality
# pipeline or tool implementation rely on from third-party tools, not user-visible
# SysML2Tools functionality) are not reported as orphans by
# `dotnet reqstream --requirements requirements.yaml --enforce`.
sections:
- title: Quality Requirements
requirements:
- id: SysML2Tools-Quality-TestInfrastructure
title: The repository shall rely on xUnit to execute and report automated test results.
tags: [quality]
justification: |
Automated testing depends on xUnit's test execution and reporting
capabilities. This grouping requirement links the xUnit OTS requirements
to the quality root so they participate in orphan detection without being
falsely reported as disconnected from SysML2Tools functionality.
children:
- Template-OTS-xUnit-Execute
- Template-OTS-xUnit-Report

- id: SysML2Tools-Quality-BuildIntegrity
title: >-
The repository's build pipeline shall rely on BuildMark and VersionMark
to validate tool versions and enforce build integrity.
tags: [quality]
justification: |
CI/CD reliability depends on BuildMark's build-integrity checks and
VersionMark's version-tracking capabilities. This grouping requirement
links those OTS requirements to the quality root so they participate in
orphan detection without being falsely reported as disconnected from
SysML2Tools functionality.
children:
- Template-OTS-BuildMark
- Template-OTS-VersionMark

- id: SysML2Tools-Quality-StaticAnalysis
title: The repository shall rely on SarifMark and SonarMark to enforce static-analysis quality gates.
tags: [quality]
justification: |
Code quality assurance depends on SarifMark's SARIF-based enforcement and
SonarMark's SonarCloud integration. This grouping requirement links those
OTS requirements to the quality root so they participate in orphan
detection without being falsely reported as disconnected from SysML2Tools
functionality.
children:
- Template-OTS-SarifMark
- Template-OTS-SarifMark-Enforcement
- Template-OTS-SonarMark

- id: SysML2Tools-Quality-PeerReview
title: The repository shall rely on ReviewMark to enforce peer-review tracking and reporting.
tags: [quality]
justification: |
Peer-review compliance depends on ReviewMark's enforcement, elaboration,
and linting capabilities. This grouping requirement links those OTS
requirements to the quality root so they participate in orphan detection
without being falsely reported as disconnected from SysML2Tools
functionality.
children:
- Template-OTS-ReviewMark
- Template-OTS-ReviewMark-Lint
- Template-OTS-ReviewMark-Elaborate
- Template-OTS-ReviewMark-Enforce

- id: SysML2Tools-Quality-DocumentationGeneration
title: The repository shall rely on Pandoc and WeasyPrint to generate HTML and PDF documentation.
tags: [quality]
justification: |
Documentation generation depends on Pandoc's format conversion and
WeasyPrint's PDF rendering. This grouping requirement links those OTS
requirements to the quality root so they participate in orphan detection
without being falsely reported as disconnected from SysML2Tools
functionality.
children:
- Template-OTS-Pandoc
- Template-OTS-WeasyPrint

- id: SysML2Tools-Quality-RequirementsTraceability
title: >-
The repository shall rely on ReqStream and FileAssert to validate
requirements traceability and generated documentation.
tags: [quality]
justification: |
Requirements traceability depends on ReqStream's linting and reporting
capabilities, and generated-document verification depends on FileAssert.
This grouping requirement links those OTS requirements to the quality
root so they participate in orphan detection without being falsely
reported as disconnected from SysML2Tools functionality.
children:
- Template-OTS-ReqStream
- Template-OTS-FileAssert

- id: SysML2Tools-Quality-GrammarParsing
title: The SysML2Tools.Language library shall rely on ANTLR4 to parse SysML v2 source and report syntax errors.
tags: [quality]
justification: |
Parsing SysML v2 source text depends on the ANTLR4 generated parser and
its error-reporting facilities. This grouping requirement links those OTS
requirements to the quality root so they participate in orphan detection
without being falsely reported as disconnected from SysML2Tools
functionality.
children:
- SysML2Tools-OTS-ANTLR4-Parse
- SysML2Tools-OTS-ANTLR4-Errors

- id: SysML2Tools-Quality-RenderingEngine
title: >-
The SysML2Tools.Core library shall rely on DemaConsulting.Rendering to lay out,
route, and render diagrams to SVG and PNG output.
tags: [quality]
justification: |
Diagram layout and rendering depend on DemaConsulting.Rendering's graph-layout,
containment, routing, and SVG/PNG rendering capabilities. This grouping
requirement links those OTS requirements to the quality root so they
participate in orphan detection without being falsely reported as
disconnected from SysML2Tools functionality.
children:
- SysML2Tools-OTS-DemaRendering-LayoutGraph
- SysML2Tools-OTS-DemaRendering-Direction
- SysML2Tools-OTS-DemaRendering-Containers
- SysML2Tools-OTS-DemaRendering-Routing
- SysML2Tools-OTS-DemaRendering-RenderSvg
- SysML2Tools-OTS-DemaRendering-RenderPng
43 changes: 43 additions & 0 deletions docs/reqstream/sysml2-tools-core.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,32 @@ sections:
title: >-
The core library shall produce a rendered diagram output for each user-defined
view in a loaded workspace.
tags: [system]
justification: |
The core library's purpose is to turn a loaded SysML workspace into rendered
diagrams. Producing one output per user-defined view is the fundamental service
the library offers to its callers (the CLI tool and library consumers).
children:
- SysML2Tools-Core-Layout-LayoutTree
- SysML2Tools-Core-Layout-DelegatedGeometry
- SysML2Tools-Core-Layout-PreRoutedLines
- SysML2Tools-Core-Rendering-ILayoutStrategy
- SysML2Tools-Core-Rendering-DiagramRenderer
- SysML2Tools-Core-Io-GlobFileCollector
- SysML2Tools-Core-Query-Uses
- SysML2Tools-Core-Query-UsedBy
- SysML2Tools-Core-Query-Dependencies
- SysML2Tools-Core-Query-Impact
- SysML2Tools-Core-Query-Describe
- SysML2Tools-Core-Query-Hierarchy
- SysML2Tools-Core-Query-Requirements
- SysML2Tools-Core-Query-Interface
- SysML2Tools-Core-Query-Connections
- SysML2Tools-Core-Query-States
- SysML2Tools-Core-Query-List
- SysML2Tools-Core-Query-StdlibFilter
- SysML2Tools-Core-Query-Exporter
- SysML2Tools-Core-Query-EntriesLabeling
tests:
- DiagramRenderer_RenderWorkspace_SoftwareStructureModel_ReturnsSvgOutput
- DiagramRenderer_RenderWorkspace_GeneralViewModel_SvgContainsElementNames
Expand All @@ -31,11 +53,23 @@ sections:
title: >-
The core library shall render the views of a workspace to a caller-selected
output format, supporting both vector (SVG) and raster (PNG) output.
tags: [system]
justification: |
Callers choose the delivery format for their documentation pipeline. Supporting
both a vector format (SVG) and a raster format (PNG) from the same workspace lets
consumers select the representation appropriate to their target without changing
how the workspace is prepared.
children:
- SysML2Tools-Core-Layout-LayoutTree
- SysML2Tools-Core-Layout-PreRoutedLines
- SysML2Tools-Core-Rendering-IRenderer
- SysML2Tools-Core-Rendering-IRendererStateless
- SysML2Tools-Core-Rendering-Theme
- SysML2Tools-Core-Rendering-ThemeDepthWrap
- SysML2Tools-Core-Rendering-RenderOptions
- SysML2Tools-Core-Rendering-DiagramRenderer
- SysML2Tools-Core-Rendering-RenderOutput
- SysML2Tools-Core-Rendering-BuiltinThemes
tests:
- DiagramRenderer_RenderWorkspace_SoftwareStructureModel_ReturnsSvgOutput
- DiagramRenderer_RenderWorkspace_SoftwareStructureModel_PngRenderer_ReturnsPngOutput
Expand All @@ -44,9 +78,18 @@ sections:
- id: SysML2Tools-Core-RenderDepictsViewElements
title: >-
A rendered diagram shall depict the model elements that belong to its view.
tags: [system]
justification: |
A diagram that omits the elements of its view has no value. Confirming that the
rendered output contains the view's model elements proves the full workspace-to-diagram
pipeline produces meaningful, non-empty results.
children:
- SysML2Tools-Core-Layout-LayoutTree
- SysML2Tools-Core-Layout-PreRoutedLines
- SysML2Tools-Core-Rendering-ILayoutStrategy
- SysML2Tools-Core-Rendering-ViewContextViewNode
- SysML2Tools-Core-Rendering-DiagramRenderer
- SysML2Tools-Core-Filtering-StandaloneViewFilterEvaluation
- SysML2Tools-Core-Filtering-BracketFormExposeEvaluation
tests:
- DiagramRenderer_RenderWorkspace_GeneralViewModel_SvgContainsElementNames
8 changes: 8 additions & 0 deletions docs/reqstream/sysml2-tools-core/io.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,14 @@ sections:
concrete files before loading a workspace. A single shared resolution unit ensures
all three commands support the same pattern semantics and prevents behavioral drift
between hand-rolled, per-command implementations.
children:
- SysML2Tools-Core-Io-GlobFileCollector-PatternResolution
- SysML2Tools-Core-Io-GlobFileCollector-ExclusionOrder
- SysML2Tools-Core-Io-GlobFileCollector-ExtensionFiltering
- SysML2Tools-Core-Io-GlobFileCollector-LiteralPath
- SysML2Tools-Core-Io-GlobFileCollector-CasingNormalization
- SysML2Tools-Core-Io-GlobFileCollector-SilentSkip
- SysML2Tools-Core-Io-GlobFileCollector-StableOutput
tests:
- GlobFileCollector_Collect_LiteralPath_ReturnsSingleFile
- GlobFileCollector_Collect_BasicGlob_ReturnsMatchingFiles
Expand Down
10 changes: 10 additions & 0 deletions docs/reqstream/sysml2-tools-core/layout.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@ sections:
intermediate representation keeps SysML2Tools focused on mapping the SysML model to
boxes, ports, lines, and markers rather than defining geometric primitives. A populated
layout tree is the observable result that proves the mapping occurred.
children:
- SysML2Tools-Core-Layout-Internal-ViewLayout
- SysML2Tools-Core-Layout-Internal-EmptyCanvas
- SysML2Tools-Core-Layout-Internal-StdlibExclusion
- SysML2Tools-Core-Layout-Internal-SharedExposeScoping
- SysML2Tools-Core-Layout-Internal-LayoutWarnings
tests:
- GeneralViewLayoutStrategy_BuildLayout_OneUserPartDef_ProducesLayoutBox
- InterconnectionView_BuildLayout_PartsAndConnections_ProducesBoxesPortsAndLines
Expand All @@ -37,6 +43,8 @@ sections:
Reusing the off-the-shelf layered algorithm avoids maintaining a bespoke geometric
layout engine while still guaranteeing readable, non-overlapping geometry. Non-overlap
is an observable property of the produced layout tree that every view must guarantee.
children:
- SysML2Tools-Core-Layout-Internal-NonOverlapping
tests:
- InterconnectionView_BuildLayout_PartBoxes_DoNotOverlap
- ActionFlowView_BuildLayout_NoOverlap
Expand All @@ -50,6 +58,8 @@ sections:
Delegating routing to the view layout strategies (through the layered algorithm) keeps
renderers stateless and free of path-finding logic. A renderer only needs to draw
segments between consecutive absolute waypoints.
children:
- SysML2Tools-Core-Layout-Internal-ViewLayout
tests:
- ActionFlowView_BuildLayout_ForwardChain_FlowsTopToBottomOrthogonally
- StateTransitionView_BuildLayout_ForwardChain_FlowsTopToBottomOrthogonally
Loading
Loading