From 6e08b14b4862cf65c8605a602030868227a0800c Mon Sep 17 00:00:00 2001 From: Malcolm Nixon Date: Wed, 2 Sep 2026 00:48:49 -0400 Subject: [PATCH] Add root-tags orphan detection with system/quality tags - Bump demaconsulting.reqstream to 1.11.0. - Tag all System/Platform-level requirements across the four in-house systems (Language, Stdlib, Core, Tool) with [system] so they act as traceability roots. - Add missing children: links closing 371 previously-untraced requirement gaps across the System/Subsystem/Unit hierarchy, which previously had almost no parent/child links. - Add docs/reqstream/quality.yaml grouping the OTS/process-tooling requirements (xUnit, ReqStream, BuildMark, VersionMark, SarifMark, SonarMark, ReviewMark, Pandoc, WeasyPrint, FileAssert, ANTLR4, DemaConsulting.Rendering) under a [quality] root. - Add root-tags: [system, quality] to requirements.yaml. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .config/dotnet-tools.json | 32 +++-- docs/reqstream/quality.yaml | 125 +++++++++++++++++ docs/reqstream/sysml2-tools-core.yaml | 43 ++++++ docs/reqstream/sysml2-tools-core/io.yaml | 8 ++ docs/reqstream/sysml2-tools-core/layout.yaml | 10 ++ .../sysml2-tools-core/layout/internal.yaml | 128 ++++++++++++++++++ docs/reqstream/sysml2-tools-core/query.yaml | 20 +++ .../sysml2-tools-core/rendering.yaml | 8 ++ .../sysml2-tools-core/rendering/internal.yaml | 10 ++ docs/reqstream/sysml2-tools-language.yaml | 32 +++++ .../sysml2-tools-language/parser.yaml | 11 ++ .../sysml2-tools-language/semantic.yaml | 21 +++ .../sysml2-tools-language/semantic/model.yaml | 48 +++++++ docs/reqstream/sysml2-tools-stdlib.yaml | 1 + docs/reqstream/sysml2-tools-tool.yaml | 44 ++++++ docs/reqstream/sysml2-tools-tool/cli.yaml | 21 +++ .../sysml2-tools-tool/cli/context.yaml | 15 ++ docs/reqstream/sysml2-tools-tool/export.yaml | 10 ++ docs/reqstream/sysml2-tools-tool/help.yaml | 7 + docs/reqstream/sysml2-tools-tool/lint.yaml | 6 + .../platform-requirements.yaml | 4 + docs/reqstream/sysml2-tools-tool/program.yaml | 2 + docs/reqstream/sysml2-tools-tool/query.yaml | 15 ++ docs/reqstream/sysml2-tools-tool/render.yaml | 16 +++ .../sysml2-tools-tool/self-test.yaml | 7 + .../self-test/validation.yaml | 8 ++ .../sysml2-tools-tool/utilities.yaml | 2 + requirements.yaml | 6 + 28 files changed, 649 insertions(+), 11 deletions(-) create mode 100644 docs/reqstream/quality.yaml diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 26aed61e..ab12cd53 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -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 } } } \ No newline at end of file diff --git a/docs/reqstream/quality.yaml b/docs/reqstream/quality.yaml new file mode 100644 index 00000000..4b03d1f8 --- /dev/null +++ b/docs/reqstream/quality.yaml @@ -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 diff --git a/docs/reqstream/sysml2-tools-core.yaml b/docs/reqstream/sysml2-tools-core.yaml index 14781c2d..1e293715 100644 --- a/docs/reqstream/sysml2-tools-core.yaml +++ b/docs/reqstream/sysml2-tools-core.yaml @@ -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 @@ -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 @@ -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 diff --git a/docs/reqstream/sysml2-tools-core/io.yaml b/docs/reqstream/sysml2-tools-core/io.yaml index 0e3a0d25..9fb9bad5 100644 --- a/docs/reqstream/sysml2-tools-core/io.yaml +++ b/docs/reqstream/sysml2-tools-core/io.yaml @@ -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 diff --git a/docs/reqstream/sysml2-tools-core/layout.yaml b/docs/reqstream/sysml2-tools-core/layout.yaml index 82c8ab32..4ab2c256 100644 --- a/docs/reqstream/sysml2-tools-core/layout.yaml +++ b/docs/reqstream/sysml2-tools-core/layout.yaml @@ -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 @@ -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 @@ -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 diff --git a/docs/reqstream/sysml2-tools-core/layout/internal.yaml b/docs/reqstream/sysml2-tools-core/layout/internal.yaml index 1432dcae..5b9d20fa 100644 --- a/docs/reqstream/sysml2-tools-core/layout/internal.yaml +++ b/docs/reqstream/sysml2-tools-core/layout/internal.yaml @@ -18,6 +18,58 @@ sections: The renderers consume only the layout tree, so every supported view depends on a strategy that maps the relevant model elements to boxes, ports, lines, and markers. The produced tree is the observable result that proves the mapping occurred. + children: + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-Definitions + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-PackageGrouping + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-NestedDefinitionContainment + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-Compartments + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-Specialization + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-CompositeMembership + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-ReferenceMembership + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-Connect + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-Allocate + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-Dependency + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-Binding + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-Subsetting + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-NonStructuralMembership + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-AttributeTyping + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-FilterEvaluation + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-UsageLevelCandidates + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-Redefinition-QualifiedForm + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-Redefinition-BareNameForm + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-Redefinition-NoEdgeOnFailure + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-AnnotationNote + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-RequirementConstraintCompartments + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-Internals + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-Ports + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-Connectors + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-NestedContainer + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-SingleLevelNoOp + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-CycleGuard + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-ParallelConnectorPreservation + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-PortLabeling + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-CrossBoundaryLabelResolution + - SysML2Tools-Core-Layout-Internal-StateTransitionViewLayoutStrategy-States + - SysML2Tools-Core-Layout-Internal-StateTransitionViewLayoutStrategy-ImplicitStates + - SysML2Tools-Core-Layout-Internal-StateTransitionViewLayoutStrategy-DistinctAnchors + - SysML2Tools-Core-Layout-Internal-StateTransitionViewLayoutStrategy-TransitionArrowhead + - SysML2Tools-Core-Layout-Internal-StateTransitionViewLayoutStrategy-TopToBottomFlow + - SysML2Tools-Core-Layout-Internal-StateTransitionViewLayoutStrategy-PseudostateExclusion + - SysML2Tools-Core-Layout-Internal-StateTransitionViewLayoutStrategy-SemanticInitialMarker + - SysML2Tools-Core-Layout-Internal-ActionFlowViewLayoutStrategy-Actions + - SysML2Tools-Core-Layout-Internal-ActionFlowViewLayoutStrategy-TopToBottom + - SysML2Tools-Core-Layout-Internal-ActionFlowViewLayoutStrategy-SuccessionLineStyle + - SysML2Tools-Core-Layout-Internal-ActionFlowViewLayoutStrategy-BranchAndJoin + - SysML2Tools-Core-Layout-Internal-ActionFlowViewLayoutStrategy-ControlNodeShapes + - SysML2Tools-Core-Layout-Internal-SequenceViewLayoutStrategy-Lifelines + - SysML2Tools-Core-Layout-Internal-SequenceViewLayoutStrategy-HorizontalMessages + - SysML2Tools-Core-Layout-Internal-SequenceViewLayoutStrategy-MessageArrowhead + - SysML2Tools-Core-Layout-Internal-LayeredPlacement-EdgeOrder + - SysML2Tools-Core-Layout-Internal-LayeredPlacement-Orientation + - SysML2Tools-Core-Layout-Internal-LayeredPlacement-Direction + - SysML2Tools-Core-Layout-Internal-LayeredPlacement-MergeParallelEdgesOptOut + - SysML2Tools-Core-Layout-Internal-BrowserViewLayoutStrategy-IndentedTree + - SysML2Tools-Core-Layout-Internal-GridViewLayoutStrategy-SpecializationMatrix tests: - GeneralViewLayoutStrategy_BuildLayout_OneUserPartDef_ProducesLayoutBox - InterconnectionView_BuildLayout_PartsAndConnections_ProducesBoxesPortsAndLines @@ -35,6 +87,14 @@ sections: A view with nothing to show must still yield a well-formed, empty layout tree so the renderer produces a valid (blank) diagram rather than failing. The empty node set is the observable evidence of this behavior. + children: + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-EmptyCanvas + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-EmptyCanvas + - SysML2Tools-Core-Layout-Internal-StateTransitionViewLayoutStrategy-EmptyCanvas + - SysML2Tools-Core-Layout-Internal-ActionFlowViewLayoutStrategy-EmptyCanvas + - SysML2Tools-Core-Layout-Internal-SequenceViewLayoutStrategy-EmptyInput + - SysML2Tools-Core-Layout-Internal-BrowserViewLayoutStrategy-EmptyInput + - SysML2Tools-Core-Layout-Internal-GridViewLayoutStrategy-EmptyInput tests: - GeneralViewLayoutStrategy_BuildLayout_EmptyWorkspace_ReturnsMinimalCanvas - InterconnectionView_BuildLayout_EmptyWorkspace_ReturnsMinimalCanvas @@ -50,6 +110,8 @@ sections: justification: | Diagrams are meant to show the user's model, not the imported standard library. Excluding standard-library elements keeps the rendered views focused and readable. + children: + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-StdlibExclusion tests: - GeneralViewLayoutStrategy_BuildLayout_StdlibOnlyWorkspace_ReturnsMinimalCanvas - GeneralViewLayoutStrategy_BuildLayout_SeedStdlibNames_AreExcluded @@ -61,6 +123,17 @@ sections: justification: | Overlapping boxes produce unreadable diagrams. Non-overlap is an observable property of the produced geometry that every view layout must guarantee. + children: + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-LayeredPlacement + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-NonOverlapping + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-ContainerSizing + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-ChildPositioning + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-PortTitleCollisionAvoidance + - SysML2Tools-Core-Layout-Internal-ActionFlowViewLayoutStrategy-OrthogonalFlow + - SysML2Tools-Core-Layout-Internal-LayeredPlacement-Adapt + - SysML2Tools-Core-Layout-Internal-LayeredPlacement-NodeOrder + - SysML2Tools-Core-Layout-Internal-LayeredPlacement-NamedPorts + - SysML2Tools-Core-Layout-Internal-LayeredPlacement-TitleAwarePorts tests: - InterconnectionView_BuildLayout_PartBoxes_DoNotOverlap @@ -77,6 +150,54 @@ sections: across all seven strategies is what makes that consistency observable rather than coincidental, including the critical "no expose statement renders everything unchanged" fallback and the "multiple expose targets union" case. + children: + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-ScopedBarePackageFolderSuppression + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-ExposeScoping + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-ExposeBracketFilterEvaluation + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-NoExposeFallback + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-ExposeScopingRootSelection + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-ExposeScopingPartFiltering + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-ExposeScopingConnectionRetention + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-ExposeScopingRecursionDepthLimit + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-PerBranchRecursionIndependence + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-NoExposeFallback + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-ScopedSpecificityTieBreak + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-ScopedTopLevelFeatureFallback + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-ScopedTopLevelFeatureFallbackConnections + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-ScopedTopLevelFeatureFallbackEmptyCanvas + - SysML2Tools-Core-Layout-Internal-InterconnectionViewLayoutStrategy-TopLevelOwnerScopedConnections + - SysML2Tools-Core-Layout-Internal-StateTransitionViewLayoutStrategy-ExposeScopingRootSelection + - SysML2Tools-Core-Layout-Internal-StateTransitionViewLayoutStrategy-ExposeScopingStateFiltering + - SysML2Tools-Core-Layout-Internal-StateTransitionViewLayoutStrategy-ExposeScopingTransitionEndpointRetention + - SysML2Tools-Core-Layout-Internal-StateTransitionViewLayoutStrategy-NoExposeFallback + - SysML2Tools-Core-Layout-Internal-StateTransitionViewLayoutStrategy-ScopedSpecificityTieBreak + - SysML2Tools-Core-Layout-Internal-ExposeScopeResolver-ResolveExposedTargets + - SysML2Tools-Core-Layout-Internal-ExposeScopeResolver-UsageToTypeFallback + - SysML2Tools-Core-Layout-Internal-ExposeScopeResolver-NoScopeFallback + - SysML2Tools-Core-Layout-Internal-ExposeScopeResolver-SubjectScopeMembership + - SysML2Tools-Core-Layout-Internal-ExposeScopeResolver-MembershipExactNarrowScope + - SysML2Tools-Core-Layout-Internal-ExposeScopeResolver-NamespaceDirectChildrenNarrowScope + - SysML2Tools-Core-Layout-Internal-ExposeScopeResolver-RecursiveWholeSubtreeUnchanged + - SysML2Tools-Core-Layout-Internal-ExposeScopeResolver-NamespaceRecursiveExcludesSubject + - SysML2Tools-Core-Layout-Internal-ExposeScopeResolver-RootRelevance + - SysML2Tools-Core-Layout-Internal-ExposeScopeResolver-SpecificityTieBreak + - SysML2Tools-Core-Layout-Internal-ExposeScopeResolver-BracketFilterUsageLevelCandidates + - SysML2Tools-Core-Layout-Internal-ExposeScopeResolver-UnlimitedSubjectMatch + - SysML2Tools-Core-Layout-Internal-ActionFlowViewLayoutStrategy-ExposeScopingRootSelection + - SysML2Tools-Core-Layout-Internal-ActionFlowViewLayoutStrategy-ExposeScopingActionFiltering + - SysML2Tools-Core-Layout-Internal-ActionFlowViewLayoutStrategy-ExposeScopingSuccessionEndpointRetention + - SysML2Tools-Core-Layout-Internal-ActionFlowViewLayoutStrategy-NoExposeFallback + - SysML2Tools-Core-Layout-Internal-ActionFlowViewLayoutStrategy-ScopedSpecificityTieBreak + - SysML2Tools-Core-Layout-Internal-SequenceViewLayoutStrategy-LifelineQualifiedNameReconstruction + - SysML2Tools-Core-Layout-Internal-SequenceViewLayoutStrategy-ExposeScopingRootSelection + - SysML2Tools-Core-Layout-Internal-SequenceViewLayoutStrategy-ExposeScopingLifelineFiltering + - SysML2Tools-Core-Layout-Internal-SequenceViewLayoutStrategy-ExposeScopingMessageDropping + - SysML2Tools-Core-Layout-Internal-SequenceViewLayoutStrategy-NoExposeFallback + - SysML2Tools-Core-Layout-Internal-SequenceViewLayoutStrategy-ScopedSpecificityTieBreak + - SysML2Tools-Core-Layout-Internal-BrowserViewLayoutStrategy-ExposeScoping + - SysML2Tools-Core-Layout-Internal-BrowserViewLayoutStrategy-NoExposeFallback + - SysML2Tools-Core-Layout-Internal-GridViewLayoutStrategy-ExposeScoping + - SysML2Tools-Core-Layout-Internal-GridViewLayoutStrategy-NoExposeFallback tests: - GeneralViewLayoutStrategy_BuildLayout_ExposedName_UnionsAdditionalSubtree - GeneralViewLayoutStrategy_BuildLayout_RenderTargetNameOnly_NoExposeEdges_RendersFullWorkspace @@ -104,6 +225,13 @@ sections: Surfacing a warning lets the user judge and address the problem, while withholding a warning for a clean layout keeps attention on real issues. The warning text is the observable evidence of this behavior. + children: + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-FilterFallbackWarning + - SysML2Tools-Core-Layout-Internal-GeneralViewLayoutStrategy-DroppedRelationshipEdgeWarning + - SysML2Tools-Core-Layout-Internal-LayoutWarnings-NoCrossings + - SysML2Tools-Core-Layout-Internal-LayoutWarnings-CrossingWarning + - SysML2Tools-Core-Layout-Internal-LayoutWarnings-UnevaluatedFilter + - SysML2Tools-Core-Layout-Internal-LayoutWarnings-UnevaluatedExposeBracketFilter tests: - ForCrossings_Zero_ReturnsEmpty - ForCrossings_One_ReturnsSingularWarning diff --git a/docs/reqstream/sysml2-tools-core/query.yaml b/docs/reqstream/sysml2-tools-core/query.yaml index 0868702b..e6bcd8fa 100644 --- a/docs/reqstream/sysml2-tools-core/query.yaml +++ b/docs/reqstream/sysml2-tools-core/query.yaml @@ -45,6 +45,8 @@ sections: A combined dependency view is a distinct output need from the separate `uses` and `used-by` queries. Reusing both traversals while tagging entry direction avoids duplicate analysis logic and keeps JSON and Markdown representations aligned. + children: + - SysML2Tools-Core-Query-DependenciesNameShortening tests: - Dependencies_CombinesOutgoingAndIncoming_ReportsBothDirections - Dependencies_NoOutgoingReferences_ReportsProseLineInsteadOfBulletList @@ -64,6 +66,8 @@ sections: Related dependency sets often share a long package prefix that adds no distinguishing value in prose output. Applying the compaction only in the one Markdown rendering path that needs it keeps every other verb and every JSON payload unaffected. + children: + - SysML2Tools-Core-Query-QualifiedNameShortening tests: - RenderMarkdown_DependenciesVerb_NoCommonPrefix_LeavesNamesFullyQualified - RenderJson_DependenciesVerb_NamesRemainFullyQualified @@ -114,6 +118,17 @@ sections: endpoint was a nested port the walk emitted qualified names that are not resolvable as query subjects. Correcting it makes the default result smaller than in releases before this change, and makes `IncludeConnections` a strict superset of the default. + children: + - SysML2Tools-Core-Query-ImpactConnections + - SysML2Tools-Core-Query-ImpactConnectionEndpoints + - SysML2Tools-Core-Query-ImpactConnectionRollUp + - SysML2Tools-Core-Query-ImpactConnectionPortSkip + - SysML2Tools-Core-Query-ImpactConnectionContainerDecline + - SysML2Tools-Core-Query-ImpactConnectionPortContinuation + - SysML2Tools-Core-Query-ImpactUniformDepth + - SysML2Tools-Core-Query-ImpactConnectionCycles + - SysML2Tools-Core-Query-ImpactHopMinimality + - SysML2Tools-Core-Query-EntryTraversalMetadata tests: - Impact_DepthOne_OnlyReachesDirectReferences - Impact_Unbounded_ReachesTransitiveClosure @@ -305,6 +320,9 @@ sections: entry — a distinction that becomes essential once reference and connector results are combined in one answer. Exposing the values structurally makes the API contract authoritative, while retaining `Detail` keeps Markdown output human-readable. + children: + - SysML2Tools-Core-Query-EntryMetadataJsonOmission + - SysML2Tools-Core-Query-EntryRelationSerialization tests: - Impact_ConnectionEntry_RecordsDepthRelationAndViaQualifiedName - Impact_ConnectionEntry_WithoutRollUp_OmitsViaQualifiedName @@ -429,6 +447,8 @@ sections: justification: | Workspace-wide enumeration is the discovery step that lets callers find element names before issuing an element-scoped query. + children: + - SysML2Tools-Core-Query-Find tests: - List_NoFilters_ReturnsAllNonStdlibElements - List_KindFilter_OnlyMatchesGivenKind diff --git a/docs/reqstream/sysml2-tools-core/rendering.yaml b/docs/reqstream/sysml2-tools-core/rendering.yaml index 51cba53a..1f2c5014 100644 --- a/docs/reqstream/sysml2-tools-core/rendering.yaml +++ b/docs/reqstream/sysml2-tools-core/rendering.yaml @@ -97,6 +97,9 @@ sections: Separating layout computation from rendering allows different layout algorithms (e.g., hierarchical, force-directed) to produce the same LayoutTree representation consumed by any IRenderer implementation, maximizing reuse. + children: + - SysML2Tools-Core-Rendering-Internal-StrategySelection + - SysML2Tools-Core-Rendering-Internal-StdlibExclusion tests: - ViewContext_Construction_StoresAllFields - DiagramRenderer_RenderWorkspace_SoftwareStructureModel_ReturnsSvgOutput @@ -125,6 +128,11 @@ sections: DiagramRenderer is the single orchestration point that wires together the layout and rendering pipeline. Centralizing this loop ensures consistent error handling and output collection across all views and all renderer types. + children: + - SysML2Tools-Core-Rendering-DiagramRenderer-RendersEachView + - SysML2Tools-Core-Rendering-DiagramRenderer-RendererAgnostic + - SysML2Tools-Core-Rendering-DiagramRenderer-NoViews + - SysML2Tools-Core-Rendering-DiagramRenderer-SynthesizeDynamicView tests: - DiagramRenderer_RenderWorkspace_NoViews_ReturnsEmptyList diff --git a/docs/reqstream/sysml2-tools-core/rendering/internal.yaml b/docs/reqstream/sysml2-tools-core/rendering/internal.yaml index b10aaaf9..a50dc69b 100644 --- a/docs/reqstream/sysml2-tools-core/rendering/internal.yaml +++ b/docs/reqstream/sysml2-tools-core/rendering/internal.yaml @@ -18,6 +18,14 @@ sections: A single dispatch point keeps the renderer agnostic of how many view kinds exist and lets new view kinds be added without changing the orchestration loop. Falling back to the general view keeps unrecognized views renderable rather than failing. + children: + - SysML2Tools-Core-Rendering-Internal-DiagramTypeRouter-KindDispatch + - SysML2Tools-Core-Rendering-Internal-DiagramTypeRouter-DefaultGeneral + - SysML2Tools-Core-Rendering-Internal-DiagramTypeRouter-RenderTargetOverride + - SysML2Tools-Core-Rendering-Internal-DiagramTypeRouter-RenderTargetUnrecognizedFallthrough + - SysML2Tools-Core-Rendering-Internal-DynamicViewSynthesizer-ViewTypeMapping + - SysML2Tools-Core-Rendering-Internal-DynamicViewSynthesizer-CompatibilityPreCheck + - SysML2Tools-Core-Rendering-Internal-DynamicViewSynthesizer-NodeConstruction tests: - GetStrategy_InterconnectionNamedView_ReturnsInterconnectionStrategy - GetStrategy_PlainView_ReturnsGeneralViewStrategy @@ -30,6 +38,8 @@ sections: The implicitly loaded OMG standard library would otherwise flood every diagram with library definitions. Excluding stdlib elements keeps diagrams focused on the user's model. + children: + - SysML2Tools-Core-Rendering-Internal-DynamicViewSynthesizer-TargetResolution tests: - GeneralViewLayoutStrategy_BuildLayout_SeedStdlibNames_AreExcluded - GeneralViewLayoutStrategy_BuildLayout_StdlibOnlyWorkspace_ReturnsMinimalCanvas diff --git a/docs/reqstream/sysml2-tools-language.yaml b/docs/reqstream/sysml2-tools-language.yaml index 44e34032..dd30d3f8 100644 --- a/docs/reqstream/sysml2-tools-language.yaml +++ b/docs/reqstream/sysml2-tools-language.yaml @@ -14,10 +14,15 @@ sections: title: >- The Language library shall parse SysML v2 source strings and return syntax diagnostics with file path, line number, and column offset. + tags: [system] justification: | Providing a stdlib-agnostic SysML v2 parser as a reusable library allows tools, tests, and build-time generators to parse SysML syntax without depending on any particular standard library version. + children: + - SysML2Tools-Language-Parser-Diagnostics + - SysML2Tools-Language-Parser-ParseSource + - SysML2Tools-Language-Parser-HasErrors tests: - ParseSource_EmptyFile_NoErrors - ParseSource_InvalidSyntax_ReportsError @@ -26,10 +31,16 @@ sections: title: >- The Language library shall build a semantic workspace from provided SysML v2 files, optionally seeded with a pre-populated symbol table. + tags: [system] justification: | A seeded loading API decouples the Language library from any specific standard library, enabling callers to supply a pre-compiled stdlib symbol table (or none at all) without recompiling the Language library. + children: + - SysML2Tools-Language-Semantic-LoadAsync + - SysML2Tools-Language-Semantic-SymbolRegistration + - SysML2Tools-Language-Semantic-StdlibDeclarations + - SysML2Tools-Language-Semantic-HasErrors tests: - WorkspaceLoader_LoadAsync_NoFiles_ReturnsNonNullWorkspace - WorkspaceLoader_LoadAsync_SinglePackage_RegistersDeclaration @@ -39,11 +50,14 @@ sections: The Language library shall serialize a SymbolTable and diagnostics to a binary representation and faithfully deserialize them, preserving all node types, qualified names, supertype lists, and import names. + tags: [system] justification: | Round-trip serialization enables the StdlibGen tool to write a pre-compiled, gzip-compressed stdlib.json.gz and the runtime StdlibProvider to decompress and deserialize it, eliminating the 25-second cold-start parse at application launch. + children: + - SysML2Tools-Language-Semantic-StdlibDeclarations tests: - Serialize_EmptyTable_RoundTrips - Serialize_AllNodeTypes_RoundTrip @@ -55,10 +69,16 @@ sections: The Language library shall persist resolved supertype, feature-typing, redefinition, and import references as edges on each AST node and expose a reverse-lookup index over all resolved edges via the loaded workspace. + tags: [system] justification: | A persisted, queryable reverse index over resolved qualified-name references is the foundational data structure required by the `query` command's uses/used-by/impact/ hierarchy verbs, avoiding a re-resolution pass for every query invocation. + children: + - SysML2Tools-Language-Semantic-LoadAsync + - SysML2Tools-Language-Semantic-UnresolvedReference + - SysML2Tools-Language-Semantic-CircularImport + - SysML2Tools-Language-Semantic-Supertype tests: - WorkspaceLoader_LoadAsync_ResolvedSupertype_RecordsSupertypeEdge - WorkspaceLoader_LoadAsync_ResolvedFeatureTyping_RecordsTypingEdge @@ -76,11 +96,14 @@ sections: The Language library shall capture comment (`comment`) and documentation (`doc`) annotating-element free text onto the AST node it lexically annotates, preserving the text verbatim and in source order. + tags: [system] justification: | SysML v2 comment/documentation text is fully parsed by the ANTLR grammar today but silently dropped by the AST builder. Capturing it onto each node is the foundational data required by the forthcoming `query` command's `describe` verb, and is purely additive to the in-memory semantic model. + children: + - SysML2Tools-Language-Semantic-LoadAsync tests: - WorkspaceLoader_LoadAsync_CommentOnly_CapturesCommentAnnotation - WorkspaceLoader_LoadAsync_DocumentationOnly_CapturesDocumentationAnnotation @@ -97,10 +120,14 @@ sections: requirement verification (`verify`), and allocation (`allocate A to B`) references into Satisfy/Verify/Allocate-kind edges recorded on the semantic index, gracefully degrading to a Warning diagnostic with no edge when any side is unresolvable. + tags: [system] justification: | Satisfy/Verify/Allocate edges are the requirement-traceability data the forthcoming `query` command's trace/impact verbs need to answer "what satisfies/verifies this requirement" and "what is this part allocated to" without a separate resolution pass. + children: + - SysML2Tools-Language-Semantic-LoadAsync + - SysML2Tools-Language-Semantic-UnresolvedReference tests: - WorkspaceLoader_LoadAsync_SatisfyByName_RecordsSatisfyEdge - WorkspaceLoader_LoadAsync_SatisfyUnresolvedSubject_ProducesWarningNoEdge @@ -128,10 +155,15 @@ sections: second, preserving an instance-relative qualified name for the resolved endpoint even when a segment resolves via the typing/supertype-inherited fallback branch, and gracefully degrading to a Warning diagnostic with no edge when any side is unresolvable. + tags: [system] justification: | Connect/Transition edges are the connector/state-topology data the forthcoming `query` command's uses/used-by/impact verbs need to answer "what is this port connected to" and "what transitions lead to/from this state" without a separate resolution pass. + children: + - SysML2Tools-Language-Semantic-LoadAsync + - SysML2Tools-Language-Semantic-UnresolvedReference + - SysML2Tools-Language-Semantic-Supertype tests: - WorkspaceLoader_LoadAsync_ConnectionSingleSegmentEndpoints_RecordsConnectEdge - WorkspaceLoader_LoadAsync_ConnectionTwoSegmentChain_ResolvesViaDirectChild diff --git a/docs/reqstream/sysml2-tools-language/parser.yaml b/docs/reqstream/sysml2-tools-language/parser.yaml index ed7a56a1..185f488c 100644 --- a/docs/reqstream/sysml2-tools-language/parser.yaml +++ b/docs/reqstream/sysml2-tools-language/parser.yaml @@ -19,6 +19,11 @@ sections: Structured diagnostics allow callers to present errors to users with precise location information (file, line, column) and enable programmatic filtering by severity level. + children: + - SysML2Tools-Language-Parser-WorkspaceParser-SyntaxErrorReporting + - SysML2Tools-Language-Parser-WorkspaceParser-PathAttribution + - SysML2Tools-Language-Parser-Internal-SysmlDiagnosticListener-CaptureSyntaxErrors + - SysML2Tools-Language-Parser-Internal-SysmlDiagnosticListener-PathPropagation tests: - ParseSource_InvalidSyntax_ReportsError - ParseSource_ErrorPath_MatchesSuppliedPath @@ -31,6 +36,9 @@ sections: In-memory parsing without requiring a physical file is essential for testing and for future IDE integration scenarios where source text is provided directly by the editor without being written to disk. + children: + - SysML2Tools-Language-Parser-WorkspaceParser-ParseSourceString + - SysML2Tools-Language-Parser-WorkspaceParser-EmptySource tests: - ParseSource_EmptyFile_NoErrors - ParseSource_MinimalPackage_NoErrors @@ -45,6 +53,9 @@ sections: justification: | Callers need a simple boolean gate to decide whether to fail a build or report errors without inspecting the full diagnostic list themselves. + children: + - SysML2Tools-Language-Parser-WorkspaceParser-EmptySource + - SysML2Tools-Language-Parser-WorkspaceParser-SyntaxErrorReporting tests: - ParseSource_EmptyFile_NoErrors - ParseSource_InvalidSyntax_ReportsError diff --git a/docs/reqstream/sysml2-tools-language/semantic.yaml b/docs/reqstream/sysml2-tools-language/semantic.yaml index fe60316b..94299b2c 100644 --- a/docs/reqstream/sysml2-tools-language/semantic.yaml +++ b/docs/reqstream/sysml2-tools-language/semantic.yaml @@ -19,6 +19,9 @@ sections: A collection-based async API allows callers to supply any number of pre-resolved file paths and receive a single aggregate result including a semantic workspace and all diagnostics. + children: + - SysML2Tools-Language-Semantic-WorkspaceLoader-Load + - SysML2Tools-Language-Semantic-WorkspaceLoader-FileError tests: - WorkspaceLoader_LoadAsync_NoFiles_ReturnsNonNullWorkspace - WorkspaceLoader_LoadAsync_SinglePackage_RegistersDeclaration @@ -31,6 +34,8 @@ sections: A qualified-name registry enables callers to look up declarations by their fully qualified names, supporting IDE integration, reference resolution, and future diagram rendering features. + children: + - SysML2Tools-Language-Semantic-Model-AstBuild tests: - WorkspaceLoader_LoadAsync_SinglePackage_RegistersDeclaration - WorkspaceLoader_LoadAsync_NestedPackages_RegistersQualifiedNames @@ -44,6 +49,13 @@ sections: The SysML v2 and KerML standard library defines the base types and packages that user models reference. Seeding from a provided SymbolTable ensures user files are resolved in the correct context and stdlib declarations are available for reference resolution. + children: + - SysML2Tools-Language-Semantic-WorkspaceLoader-Load + - SysML2Tools-Language-Semantic-AstSerializer-Serialize + - SysML2Tools-Language-Semantic-AstSerializer-PreservesNodeTypes + - SysML2Tools-Language-Semantic-AstSerializer-PreservesNodeData + - SysML2Tools-Language-Semantic-AstDeserializer-Deserialize + - SysML2Tools-Language-Semantic-AstDeserializer-RestoresNodeData tests: - WorkspaceLoader_LoadAsync_NoFiles_ReturnsNonNullWorkspace - WorkspaceLoader_LoadAsync_StdlibDeclarations_Registered @@ -56,6 +68,8 @@ sections: Unresolved supertype references indicate that a definition specializes a type that has not been loaded. Reporting these as Warnings (not Errors) allows callers to diagnose incomplete models while still returning a usable workspace. + children: + - SysML2Tools-Language-Semantic-Model-ReferenceResolution tests: - WorkspaceLoader_LoadAsync_UnresolvedReference_ProducesWarning @@ -66,6 +80,8 @@ sections: justification: | Circular imports in SysML models can arise from split namespace declarations across files. The loader must detect and report these without hanging the calling process. + children: + - SysML2Tools-Language-Semantic-Model-ReferenceResolution tests: - WorkspaceLoader_LoadAsync_CircularImport_ProducesWarningNoInfiniteLoop @@ -77,6 +93,8 @@ sections: invalid in SysML v2. Reporting these as Warnings allows callers to diagnose invalid models while still returning a usable workspace. SupertypeWalker.WalkAll performs a DFS over the specialization graph and emits one Warning per back-edge detected. + children: + - SysML2Tools-Language-Semantic-Model-SupertypeWalking tests: - WorkspaceLoader_LoadAsync_CyclicSpecialization_ProducesWarning @@ -87,6 +105,9 @@ sections: justification: | Callers need a simple boolean gate to decide whether to fail a build or report errors without inspecting the full diagnostic list themselves. + children: + - SysML2Tools-Language-Semantic-WorkspaceLoader-Load + - SysML2Tools-Language-Semantic-WorkspaceLoader-FileError tests: - WorkspaceLoader_LoadAsync_EmptyFile_ReturnsNonNullWorkspace - WorkspaceLoader_LoadAsync_StdlibDeclarations_Registered diff --git a/docs/reqstream/sysml2-tools-language/semantic/model.yaml b/docs/reqstream/sysml2-tools-language/semantic/model.yaml index f3a41a5c..6062037f 100644 --- a/docs/reqstream/sysml2-tools-language/semantic/model.yaml +++ b/docs/reqstream/sysml2-tools-language/semantic/model.yaml @@ -15,6 +15,39 @@ sections: justification: | A symbol table indexed by qualified name is required for reference resolution and supertype walking. The AST provides a structured representation of the model. + children: + - SysML2Tools-Language-Semantic-Model-SysmlNode-Hierarchy + - SysML2Tools-Language-Semantic-Model-SysmlNode-Types + - SysML2Tools-Language-Semantic-Model-SysmlNode-ViewRenderTarget + - SysML2Tools-Language-Semantic-Model-SysmlNode-ViewExposedNames + - SysML2Tools-Language-Semantic-Model-SysmlNode-ViewFilterExpression + - SysML2Tools-Language-Semantic-Model-SysmlNode-RedefinedFeatureName + - SysML2Tools-Language-Semantic-Model-SysmlMetadataNode-CaptureForms + - SysML2Tools-Language-Semantic-Model-SysmlMetadataNode-LiteralAttributes + - SysML2Tools-Language-Semantic-Model-AstBuilder-Build + - SysML2Tools-Language-Semantic-Model-AstBuilder-QualifiedNames + - SysML2Tools-Language-Semantic-Model-AstBuilder-Supertypes + - SysML2Tools-Language-Semantic-Model-AstBuilder-UsageSubsetting + - SysML2Tools-Language-Semantic-Model-AstBuilder-ViewRenderTarget + - SysML2Tools-Language-Semantic-Model-AstBuilder-ViewFilterExpression + - SysML2Tools-Language-Semantic-Model-AstBuilder-ViewExposedNames + - SysML2Tools-Language-Semantic-Model-AstBuilder-ExposeRecursionKindDerivation + - SysML2Tools-Language-Semantic-Model-AstBuilder-ViewUsageExpose + - SysML2Tools-Language-Semantic-Model-AstBuilder-RedefinedFeature + - SysML2Tools-Language-Semantic-Model-AstBuilder-ImplicitRedefinitionName + - SysML2Tools-Language-Semantic-Model-AstBuilder-MetadataAnnotations + - SysML2Tools-Language-Semantic-Model-AstBuilder-ExposeBracketFilterText + - SysML2Tools-Language-Semantic-Model-AstBuilder-Dependency + - SysML2Tools-Language-Semantic-Model-AstBuilder-BindingConnector + - SysML2Tools-Language-Semantic-Model-AstBuilder-AttachedTransitionStateBody + - SysML2Tools-Language-Semantic-Model-AstBuilder-EntryDoExitActionFeatures + - SysML2Tools-Language-Semantic-Model-AstBuilder-ActionBodyAttachedSuccession + - SysML2Tools-Language-Semantic-Model-AstBuilder-ActionControlNodes + - SysML2Tools-Language-Semantic-Model-AstBuilder-EnumerationValues + - SysML2Tools-Language-Semantic-Model-AstBuilder-RequirementSubjectAndConstraints + - SysML2Tools-Language-Semantic-Model-AstBuilder-StandaloneConstraintUsageAndDefinition + - SysML2Tools-Language-Semantic-Model-AstBuilder-RequirementVerifyFrameNoHoist + - SysML2Tools-Language-Semantic-Model-SymbolTable-Register tests: - WorkspaceLoader_LoadAsync_SinglePackage_RegistersDeclaration - WorkspaceLoader_LoadAsync_NestedPackages_RegistersQualifiedNames @@ -28,6 +61,19 @@ sections: Reference resolution identifies incomplete models where supertype names do not correspond to any loaded declaration. Warnings allow callers to inspect model completeness without blocking on hard errors. + children: + - SysML2Tools-Language-Semantic-Model-SysmlMetadataNode-MetadataTypeResolution + - SysML2Tools-Language-Semantic-Model-SysmlMetadataNode-UnresolvedTypeWarning + - SysML2Tools-Language-Semantic-Model-SymbolTable-Lookup + - SysML2Tools-Language-Semantic-Model-ReferenceResolver-Resolve + - SysML2Tools-Language-Semantic-Model-ReferenceResolver-CircularImport + - SysML2Tools-Language-Semantic-Model-ReferenceResolver-ViewExposeResolution + - SysML2Tools-Language-Semantic-Model-ReferenceResolver-ViewExposeUnresolvedWarning + - SysML2Tools-Language-Semantic-Model-ReferenceResolver-ViewRenderFilterNeverResolved + - SysML2Tools-Language-Semantic-Model-ReferenceResolver-RedefinitionResolution + - SysML2Tools-Language-Semantic-Model-ReferenceResolver-DependencyCrossProduct + - SysML2Tools-Language-Semantic-Model-ReferenceResolver-BindingFeatureChain + - SysML2Tools-Language-Semantic-Model-ReferenceResolver-InheritedTransitionSource tests: - WorkspaceLoader_LoadAsync_UnresolvedReference_ProducesWarning - WorkspaceLoader_LoadAsync_SpecializesChain_Registered @@ -39,6 +85,8 @@ sections: justification: | Cyclic specialization (A specializes B, B specializes A) is invalid in SysML v2 and must be detected to prevent infinite loops in downstream analysis. + children: + - SysML2Tools-Language-Semantic-Model-SupertypeWalker-Walk tests: - WorkspaceLoader_LoadAsync_CyclicSpecialization_ProducesWarning - WorkspaceLoader_LoadAsync_SpecializesChain_Registered diff --git a/docs/reqstream/sysml2-tools-stdlib.yaml b/docs/reqstream/sysml2-tools-stdlib.yaml index 95f0dc49..a8a0e3e5 100644 --- a/docs/reqstream/sysml2-tools-stdlib.yaml +++ b/docs/reqstream/sysml2-tools-stdlib.yaml @@ -15,6 +15,7 @@ sections: title: >- The Stdlib system shall provide the pre-compiled SysML v2 standard library symbol table so that a workspace can be seeded without parsing the standard library source files. + tags: [system] justification: | The SysML v2 and KerML standard library contains the base types user models reference. Delivering it pre-compiled and seeding it into a workspace eliminates the cold-start parse diff --git a/docs/reqstream/sysml2-tools-tool.yaml b/docs/reqstream/sysml2-tools-tool.yaml index fde76830..9b056f63 100644 --- a/docs/reqstream/sysml2-tools-tool.yaml +++ b/docs/reqstream/sysml2-tools-tool.yaml @@ -12,63 +12,90 @@ sections: requirements: - id: Template-System-Version title: The tool shall display version information when the version flag is provided. + tags: [system] justification: | Users need to quickly identify the version of the tool they are using for troubleshooting and compatibility verification. The version display must work from a standard dotnet invocation without additional configuration. + children: + - Template-Program-Version + - Template-Cli-Version tests: - SysML2Tools_VersionFlag_Provided_OutputsVersion - id: Template-System-Help title: The tool shall display usage information when the help flag is provided. + tags: [system] justification: | Users need access to command-line usage documentation without requiring external resources. Help output must be accessible from a standard dotnet invocation and must list the available options so that users can self-serve. + children: + - Template-Program-Help + - Template-Cli-Help tests: - SysML2Tools_HelpFlag_Provided_OutputsUsageInformation - id: Template-System-Validate title: The tool shall execute self-validation tests when the validate flag is provided. + tags: [system] justification: | Regulated environments require tool qualification evidence to demonstrate that the tool functions correctly in its deployment environment before it is used to generate compliance artifacts. The validation mode exercises core behaviors and produces a structured test result file, providing the qualification evidence required by quality management systems. + children: + - Template-Program-Validate + - Template-Cli-Validate + - Template-SelfTest-Qualification tests: - SysML2Tools_ValidateFlag_Provided_RunsValidation - id: Template-System-Silent title: The tool shall suppress console output when the silent flag is provided. + tags: [system] justification: | Enables automated scripts and CI/CD pipelines to run the tool without cluttering output logs when only the exit code is needed. + children: + - Template-Cli-Silent tests: - SysML2Tools_SilentFlag_Provided_SuppressesOutput - id: Template-System-Log title: The tool shall write output to a log file when the log flag is provided. + tags: [system] justification: | Provides persistent logging for debugging and compliance audit trails. Log files enable post-run inspection of tool output without requiring console capture. + children: + - Template-Cli-Log tests: - SysML2Tools_LogFlag_Provided_WritesOutputToFile - id: Template-System-ErrorHandling title: The tool shall return a non-zero exit code for unrecognized arguments. + tags: [system] justification: | A non-zero exit code enables CI/CD pipelines to detect and surface misconfiguration failures automatically. + children: + - Template-Program-ExitCode + - Template-Cli-InvalidArgs + - Template-Cli-ExitCode tests: - SysML2Tools_UnknownArgument_Provided_ReturnsError - id: Template-System-ErrorMessage title: The tool shall report an error message for unrecognized arguments. + tags: [system] justification: | Clear feedback for unrecognized arguments helps users quickly correct mistakes and prevents silent misconfiguration. + children: + - Template-Cli-ErrorOutput tests: - SysML2Tools_UnknownArgument_Provided_ReturnsError @@ -76,45 +103,62 @@ sections: title: >- The tool shall write self-validation results to a standard test result file when the `--results` flag is provided. + tags: [system] justification: | Enables integration with CI/CD systems that expect standard test result formats. TRX format is compatible with MSTest; JUnit XML is compatible with many CI tools. + children: + - Template-Cli-Results + - Template-SelfTest-ResultsOutput tests: - SysML2Tools_ValidateWithTrxResults_Requested_GeneratesTrxFile - SysML2Tools_ValidateWithXmlResults_Requested_GeneratesJUnitFile - id: Template-System-Depth title: The tool shall adjust the heading depth of validation output when the `--depth` flag is provided. + tags: [system] justification: | Enables validation output to be embedded within larger markdown documents at the appropriate heading level, supporting documentation workflows that combine multiple reports. + children: + - Template-Cli-Depth tests: - SysML2Tools_ValidateFlag_Provided_RunsValidation - SysML2Tools_ValidateWithDepth_DepthThree_OutputsCorrectHeadingLevel - id: Template-System-ValidateFailure title: The tool shall return a non-zero exit code when the results file cannot be written. + tags: [system] justification: | A non-zero exit code on results-write failure enables CI/CD pipelines to detect and surface output errors automatically, preventing silent loss of validation evidence in compliance-critical workflows. + children: + - Template-SelfTest-InvalidExtension tests: - SysML2Tools_ValidateWithBadExtension_ExtensionInvalid_ReturnsNonZero - id: Template-System-DefaultBehavior title: The tool shall display a banner then run the default tool logic when invoked without any action flags. + tags: [system] justification: | When a user invokes the tool without any recognized action flag, the tool shall display a banner identifying itself and run its primary logic so that the invocation is never silently empty. + children: + - Template-Cli-ArgumentParsing + - Template-Cli-OutputChannels tests: - SysML2Tools_NoArguments_Invoked_DisplaysBanner - id: Template-System-ResultAlias title: The tool shall accept `--result` as a legacy alias for `--results`. + tags: [system] justification: | Backward compatibility with scripts that use the earlier `--result` spelling prevents breakage when upgrading to newer tool versions. + children: + - Template-Cli-ResultAlias tests: - SysML2Tools_ResultAlias_LegacyFlag_WritesResultsFile diff --git a/docs/reqstream/sysml2-tools-tool/cli.yaml b/docs/reqstream/sysml2-tools-tool/cli.yaml index bc0af365..5c77ae89 100644 --- a/docs/reqstream/sysml2-tools-tool/cli.yaml +++ b/docs/reqstream/sysml2-tools-tool/cli.yaml @@ -16,6 +16,12 @@ sections: DEMA Consulting DotNet Tools. The Context class encapsulates all parsed flags so that the rest of the tool has a single, consistent entry point for reading CLI arguments. + children: + - Template-Context-ArgumentParsing + - Template-Context-RenderArgs + - SysML2Tools-Tool-Context-QueryDispatch + - SysML2Tools-Tool-Context-QueryOutputFile + - SysML2Tools-Tool-Context-CommandScoping tests: - CliSubsystem_VersionFlow_ContextAndProgram_DisplaysVersionAndExits - CliSubsystem_HelpFlow_ContextAndProgram_DisplaysHelpAndExits @@ -32,6 +38,9 @@ sections: Decoupling output production from direct Console access enables testability and flexible output routing (console, log file, or both) without requiring callers to manage I/O directly. + children: + - Template-Context-ConsoleOutput + - Template-Context-LogOutput tests: - CliSubsystem_SilentFlow_ContextAndProgram_SuppressesOutput - CliSubsystem_ErrorOutput_ContextAndProgram_WritesErrorToStderr @@ -50,6 +59,8 @@ sections: justification: | Users need access to command-line usage documentation without requiring external resources. + children: + - SysML2Tools-Tool-Context-HelpDispatch tests: - CliSubsystem_HelpFlow_ContextAndProgram_DisplaysHelpAndExits - CliSubsystem_HelpFlow_ContextAndProgram_DisplaysHelpAndExits_WithShortQuestionFlag @@ -60,6 +71,8 @@ sections: justification: | Enables automated scripts and CI/CD pipelines to run the tool without cluttering output logs. + children: + - Template-Context-Silent tests: - CliSubsystem_SilentFlow_ContextAndProgram_SuppressesOutput @@ -94,6 +107,8 @@ sections: title: The Cli subsystem shall support --log flag to write output to a log file. justification: | Provides persistent logging for debugging and audit trails. + children: + - Template-Context-LogFailure tests: - CliSubsystem_LogFlow_ContextAndProgram_WritesLogFile @@ -102,6 +117,8 @@ sections: justification: | Error messages must be written to stderr so they remain visible to the user without polluting stdout, which consumers may pipe or redirect for data capture. + children: + - Template-Context-ErrorOutput tests: - CliSubsystem_ErrorOutput_ContextAndProgram_WritesErrorToStderr @@ -110,6 +127,8 @@ sections: justification: | Providing clear feedback for invalid arguments helps users quickly correct mistakes and prevents silent misconfiguration. + children: + - Template-Context-InvalidArgs tests: - CliSubsystem_InvalidArgs_ContextAndProgram_RejectsUnknownArgumentsAndExitsNonZero @@ -118,6 +137,8 @@ sections: justification: | Callers (scripts, CI/CD pipelines) must be able to detect failure conditions programmatically via the process exit code. + children: + - Template-Context-ExitCode tests: - CliSubsystem_InvalidArgs_ContextAndProgram_RejectsUnknownArgumentsAndExitsNonZero diff --git a/docs/reqstream/sysml2-tools-tool/cli/context.yaml b/docs/reqstream/sysml2-tools-tool/cli/context.yaml index 65d42569..d85bf5da 100644 --- a/docs/reqstream/sysml2-tools-tool/cli/context.yaml +++ b/docs/reqstream/sysml2-tools-tool/cli/context.yaml @@ -49,6 +49,8 @@ sections: justification: | View selection is a render-command concern but must be parsed centrally by Context so that all argument handling remains in one place. + children: + - SysML2Tools-Tool-Render-ViewSelection tests: - Context_Create_ViewFlag_SetsViewName @@ -114,6 +116,9 @@ sections: directory without needing to re-parse command-line arguments. The render command token must also set Command to SysmlCommand.Render and collect subsequent positional arguments into Render.Files. + children: + - SysML2Tools-Tool-Context-ViewName + - SysML2Tools-Tool-Render-Patterns tests: - Context_Create_RenderCommand_SetsCommandRender - Context_Create_RenderCommand_WithFormat_SetsSvgFormat @@ -133,6 +138,9 @@ sections: already parsed) keeps a single, consistent argument-parsing entry point for all commands while confining query-specific option fields to a dedicated QueryOptions record so the existing lint/render properties are unaffected. + children: + - SysML2Tools-Tool-Context-QueryVerbRequired + - SysML2Tools-Tool-Query-VerbGrammar tests: - Context_Create_QueryCommand_WithVerbToken_SetsQueryVerb - Context_Create_QueryCommand_UnknownVerb_ThrowsArgumentException @@ -160,6 +168,8 @@ sections: Render.OutputDirectory, letting QueryCommand write rendered results to a file instead of stdout without any risk of colliding with render's output-directory semantics. + children: + - SysML2Tools-Tool-Query-OutputFile tests: - Context_Create_QueryCommand_WithOutputFlag_SetsQueryOutput - Context_Create_QueryCommand_OutputWithoutValue_ThrowsArgumentException @@ -176,6 +186,9 @@ sections: or misinterpreted. Scoping each command's flags to a dedicated parser (LintArgumentParser, RenderArgumentParser, QueryArgumentParser) makes invalid combinations fail fast with a clear, actionable error instead of being silently ignored. + children: + - SysML2Tools-Tool-Lint-Patterns + - SysML2Tools-Tool-Export-Grammar tests: - Context_Create_LintCommand_OutOfScopeAutoFlag_ThrowsArgumentException - Context_Create_LintCommand_OutOfScopeKindFlag_ThrowsArgumentException @@ -208,6 +221,8 @@ sections: `sysml2tools help [command] [verb]` be parsed through the same per-command dispatch pattern already used for lint/render/query, keeping Context's argument-parsing architecture uniform across all four commands. + children: + - SysML2Tools-Tool-Help-Grammar tests: - Context_Create_HelpCommand_NoArgs_PopulatesEmptyHelpOptions - Context_Create_HelpCommand_WithLintTarget_SetsTargetCommand diff --git a/docs/reqstream/sysml2-tools-tool/export.yaml b/docs/reqstream/sysml2-tools-tool/export.yaml index 2cb7bc92..c359d441 100644 --- a/docs/reqstream/sysml2-tools-tool/export.yaml +++ b/docs/reqstream/sysml2-tools-tool/export.yaml @@ -22,6 +22,16 @@ sections: A small, fixed flag vocabulary (mirroring the query/render commands' own per-command argument parsers) keeps export's grammar simple and predictable, and rejecting unrecognized flags prevents another command's flag from being silently accepted. + children: + - SysML2Tools-Tool-Export-Format + - SysML2Tools-Tool-Export-Output + - SysML2Tools-Tool-Export-StdlibFilter + - SysML2Tools-Tool-Export-NoFilesOrNoMatch + - SysML2Tools-Tool-Export-JsonEnvelope + - SysML2Tools-Tool-Export-JsonlEnvelope + - SysML2Tools-Tool-Export-Help + - SysML2Tools-Tool-Export-Target + - SysML2Tools-Tool-Export-Filter tests: - ExportArgumentParser_NoFlags_ProducesDefaults - ExportArgumentParser_FormatFlag_CapturesRawValue diff --git a/docs/reqstream/sysml2-tools-tool/help.yaml b/docs/reqstream/sysml2-tools-tool/help.yaml index 17415b0d..d4960544 100644 --- a/docs/reqstream/sysml2-tools-tool/help.yaml +++ b/docs/reqstream/sysml2-tools-tool/help.yaml @@ -109,6 +109,13 @@ sections: justification: | A strict, minimal grammar (mirroring lint/render/query's own rejection convention) prevents `help` from silently accepting flags that belong to other commands. + children: + - SysML2Tools-Tool-Help-BareHelp + - SysML2Tools-Tool-Help-CommandHelp + - SysML2Tools-Tool-Help-QueryOverview + - SysML2Tools-Tool-Help-QueryVerbHelp + - SysML2Tools-Tool-Help-UnknownTarget + - SysML2Tools-Tool-Help-SilentConsistency tests: - HelpArgumentParser_Parse_NoArguments_ReturnsBothFieldsNull - HelpArgumentParser_Parse_Lint_SetsTargetCommandLint diff --git a/docs/reqstream/sysml2-tools-tool/lint.yaml b/docs/reqstream/sysml2-tools-tool/lint.yaml index 1ad8f0b3..8ea6bae0 100644 --- a/docs/reqstream/sysml2-tools-tool/lint.yaml +++ b/docs/reqstream/sysml2-tools-tool/lint.yaml @@ -21,6 +21,12 @@ sections: resolution to the shared GlobFileCollector (see the Core Io subsystem's own requirements for pattern-resolution semantics) ensures lint supports the same recursive/exclusion behavior as render and query. + children: + - SysML2Tools-Tool-Lint-NoFilesMatched + - SysML2Tools-Tool-Lint-Parse + - SysML2Tools-Tool-Lint-Report + - SysML2Tools-Tool-Lint-ExitCode + - SysML2Tools-Tool-Lint-LocalizableHelpText tests: - LintSubsystem_Patterns_AcceptsGlobPatterns_ResolvesFiles - LintSubsystem_Patterns_RecursiveGlob_ResolvesNestedFiles diff --git a/docs/reqstream/sysml2-tools-tool/platform-requirements.yaml b/docs/reqstream/sysml2-tools-tool/platform-requirements.yaml index c074ee0e..102e03d0 100644 --- a/docs/reqstream/sysml2-tools-tool/platform-requirements.yaml +++ b/docs/reqstream/sysml2-tools-tool/platform-requirements.yaml @@ -19,6 +19,7 @@ sections: requirements: - id: Template-Platform-Windows title: The tool shall execute successfully on Windows platforms. + tags: [system] justification: | DEMA Consulting tools must support Windows as a major development platform. tests: @@ -28,6 +29,7 @@ sections: - id: Template-Platform-Linux title: The tool shall execute successfully on Linux platforms. + tags: [system] justification: | DEMA Consulting tools must support Linux for CI/CD and containerized environments. tests: @@ -37,6 +39,7 @@ sections: - id: Template-Platform-MacOS title: The tool shall execute successfully on macOS platforms. + tags: [system] justification: | DEMA Consulting tools must support macOS for developers using Apple platforms. tests: @@ -46,6 +49,7 @@ sections: - id: Template-Platform-Net10 title: The tool shall support .NET 10 runtime. + tags: [system] justification: | .NET 10 support ensures the tool remains compatible with the latest .NET ecosystem. tests: diff --git a/docs/reqstream/sysml2-tools-tool/program.yaml b/docs/reqstream/sysml2-tools-tool/program.yaml index 2e90db04..20aa2c6b 100644 --- a/docs/reqstream/sysml2-tools-tool/program.yaml +++ b/docs/reqstream/sysml2-tools-tool/program.yaml @@ -21,6 +21,8 @@ sections: justification: | Users need access to command-line usage documentation without requiring external resources. + children: + - SysML2Tools-Tool-Program-LocalizableHelpText tests: - Program_Run_WithHelpFlag_DisplaysUsageInformation - Program_Run_WithShortHelpFlag_DisplaysUsage diff --git a/docs/reqstream/sysml2-tools-tool/query.yaml b/docs/reqstream/sysml2-tools-tool/query.yaml index fb93f2e8..1e24a340 100644 --- a/docs/reqstream/sysml2-tools-tool/query.yaml +++ b/docs/reqstream/sysml2-tools-tool/query.yaml @@ -20,6 +20,17 @@ sections: A fixed, positional verb vocabulary keeps the query grammar simple and predictable for both human and AI-assisted callers, matching the verb set already fixed by ROADMAP.md's "Model query & analysis" design. + children: + - SysML2Tools-Tool-Query-UnknownVerb + - SysML2Tools-Tool-Query-ElementRequired + - SysML2Tools-Tool-Query-Format + - SysML2Tools-Tool-Query-NoFilesMatched + - SysML2Tools-Tool-Query-OutputFormat + - SysML2Tools-Tool-Query-ElementNotFound + - SysML2Tools-Tool-Query-Find + - SysML2Tools-Tool-Query-Help + - SysML2Tools-Tool-Query-ReportHeading + - SysML2Tools-Tool-Query-IncludeConnections tests: - Context_Create_QueryCommand_WithVerbToken_SetsQueryVerb - QuerySubsystem_AnyVerb_WithValidInput_DispatchesToRealLogic @@ -116,6 +127,10 @@ sections: justification: | Per-verb help lets users discover each verb's specific options without needing --element to be present merely to view help output. + children: + - SysML2Tools-Tool-Query-LocalizableHelpText + - SysML2Tools-Tool-Query-HelpEnrichment + - SysML2Tools-Tool-Query-IncludeConnectionsHelp tests: - QuerySubsystem_QueryHelp_NoVerb_PrintsGeneralHelpWithoutThrowing - QuerySubsystem_QueryVerbHelp_WithVerb_PrintsVerbHelpWithoutThrowing diff --git a/docs/reqstream/sysml2-tools-tool/render.yaml b/docs/reqstream/sysml2-tools-tool/render.yaml index 353ca412..955cdc68 100644 --- a/docs/reqstream/sysml2-tools-tool/render.yaml +++ b/docs/reqstream/sysml2-tools-tool/render.yaml @@ -21,6 +21,16 @@ sections: subsystem's own requirements for pattern-resolution semantics) fixes a pre-existing defect where render passed raw glob tokens straight to the workspace loader, which treats every entry as a literal file path. + children: + - SysML2Tools-Tool-Render-NoFilesMatched + - SysML2Tools-Tool-Render-Load + - SysML2Tools-Tool-Render-Format + - SysML2Tools-Tool-Render-Output + - SysML2Tools-Tool-Render-Empty + - SysML2Tools-Tool-Render-DepthLimit + - SysML2Tools-Tool-Render-AllViewsExport + - SysML2Tools-Tool-Render-LocalizableHelpText + - SysML2Tools-Tool-Render-DynamicView tests: - RenderSubsystem_NoFiles_ReportsError - RenderSubsystem_GlobPattern_ResolvesMultipleFiles @@ -54,6 +64,8 @@ sections: justification: | Format selection through a named option makes the CLI self-documenting and avoids dependence on file extension inference. + children: + - SysML2Tools-Tool-Render-FormatValidation tests: - RenderSubsystem_FormatSvg_UsesSvgRenderer - RenderSubsystem_FormatPng_UsesPngRenderer @@ -97,6 +109,8 @@ sections: Rendering every declared view by default supports bulk "render everything" exports for CI pipelines and design-doc publishing without requiring the user to invoke the command once per view. + children: + - SysML2Tools-Tool-Render-FileNameCollision tests: - RenderSubsystem_MultipleViews_NoViewFlag_RendersAllViews @@ -118,6 +132,8 @@ sections: View selection enables targeting a single diagram for output in multi-view models without generating every diagram in the workspace; it is always optional, narrowing the default render-all behavior to one view on request. + children: + - SysML2Tools-Tool-Render-UnknownViewError tests: - RenderSubsystem_MultipleViews_WithViewFlag_RendersSelectedView diff --git a/docs/reqstream/sysml2-tools-tool/self-test.yaml b/docs/reqstream/sysml2-tools-tool/self-test.yaml index 92e85ab7..f4100a79 100644 --- a/docs/reqstream/sysml2-tools-tool/self-test.yaml +++ b/docs/reqstream/sysml2-tools-tool/self-test.yaml @@ -19,6 +19,8 @@ sections: self-validation suite that exercises core behaviors and produces a pass/fail summary, enabling quality assurance teams to obtain tool qualification evidence without requiring a separate test harness. + children: + - Template-Validation-Run tests: - SelfTestSubsystem_ValidationWorkflow_NoResultFiles_CompletesSuccessfully @@ -30,6 +32,9 @@ sections: XML output, the SelfTest subsystem enables self-validation results to be fed directly into pipeline tooling and traceability reports without additional conversion steps, satisfying audit trail requirements. + children: + - Template-Validation-TrxResults + - Template-Validation-XmlResults tests: - SelfTestSubsystem_ValidationWorkflow_WithTrxFile_GeneratesResults - SelfTestSubsystem_ValidationWorkflow_WithJUnitFile_GeneratesResults @@ -43,5 +48,7 @@ sections: Prevents silent loss of validation evidence by failing loudly when a results file cannot be written due to an unrecognized extension. This enables CI/CD pipelines to detect misconfigured output paths automatically. + children: + - Template-Validation-InvalidExtension tests: - SelfTestSubsystem_ValidationWorkflow_WithUnsupportedExtension_EmitsErrorAndNoFile diff --git a/docs/reqstream/sysml2-tools-tool/self-test/validation.yaml b/docs/reqstream/sysml2-tools-tool/self-test/validation.yaml index a6ab2216..eb027721 100644 --- a/docs/reqstream/sysml2-tools-tool/self-test/validation.yaml +++ b/docs/reqstream/sysml2-tools-tool/self-test/validation.yaml @@ -13,6 +13,14 @@ sections: justification: | Provides a built-in mechanism to verify the tool is functioning correctly in the deployment environment. A summary is printed for human review. + children: + - Template-Utilities-SafePaths + - SysML2Tools-Tool-Validation-LintSelfTest + - SysML2Tools-Tool-Validation-RenderSvgSelfTest + - SysML2Tools-Tool-Validation-RenderPngSelfTest + - SysML2Tools-Tool-Validation-RenderDynamicViewSelfTests + - SysML2Tools-Tool-Validation-PassedSummary + - SysML2Tools-Tool-Export-SelfTest tests: - Validation_Run_WithSilentContext_PrintsSummary - Validation_Run_WithSilentContext_ExitCodeIsZero diff --git a/docs/reqstream/sysml2-tools-tool/utilities.yaml b/docs/reqstream/sysml2-tools-tool/utilities.yaml index ae7cd86c..1e7e8d72 100644 --- a/docs/reqstream/sysml2-tools-tool/utilities.yaml +++ b/docs/reqstream/sysml2-tools-tool/utilities.yaml @@ -19,6 +19,8 @@ sections: path traversal sequences (such as '..') and absolute paths to prevent unintended file system access. This requirement captures the subsystem-level safety guarantee that all consumers of the Utilities subsystem can rely upon. + children: + - Template-PathHelpers-SafeCombine tests: - UtilitiesSubsystem_PathResolutionWorkflow_ValidPaths_ResolvesCorrectly - UtilitiesSubsystem_DirectoryCreationWorkflow_ValidPaths_CreatesDirectories diff --git a/requirements.yaml b/requirements.yaml index fce45d95..ddcf36ac 100644 --- a/requirements.yaml +++ b/requirements.yaml @@ -1,6 +1,12 @@ --- # Root requirements file - includes all system, unit, platform, and OTS requirements +# +# root-tags: requirements carrying any of these tags are treated as traceability roots. +# `dotnet reqstream --requirements requirements.yaml --enforce` reports any requirement +# that does not trace (via parent/child links) to a root-tagged requirement as orphaned. +root-tags: [system, quality] includes: + - docs/reqstream/quality.yaml - docs/reqstream/sysml2-tools-language.yaml - docs/reqstream/sysml2-tools-language/parser.yaml - docs/reqstream/sysml2-tools-language/parser/workspace-parser.yaml