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
2 changes: 1 addition & 1 deletion .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
]
},
"demaconsulting.reqstream": {
"version": "1.10.0",
"version": "1.11.0",
"commands": [
"reqstream"
]
Expand Down
108 changes: 108 additions & 0 deletions docs/reqstream/quality.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
---
# Quality/process requirements grouping TemplateDotNetLibrary's use of off-the-shelf
# (OTS) process tooling. These requirements exist so that OTS-derived requirements
# (which describe capabilities the repository's build/quality pipeline relies on
# from third-party tools, not user-visible library functionality) are not reported
# as orphans by `dotnet reqstream --requirements requirements.yaml --enforce`.
sections:
- title: Quality Requirements
requirements:
- id: 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 library functionality.
children:
- Template-OTS-xUnit-Execute
- Template-OTS-xUnit-Report

- id: 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
library functionality.
children:
- Template-OTS-BuildMark
- Template-OTS-VersionMark
- Template-OTS-VersionMark-Lint

- id: 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 library
functionality.
children:
- Template-OTS-SarifMark
- Template-OTS-SarifMark-Enforcement
- Template-OTS-SonarMark

- id: 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 indexing, enforcement,
elaboration, linting, and directory-override 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 library functionality.
children:
- Template-OTS-ReviewMark
- Template-OTS-ReviewMark-IndexScan
- Template-OTS-ReviewMark-Enforce
- Template-OTS-ReviewMark-Elaborate
- Template-OTS-ReviewMark-Lint
- Template-OTS-ReviewMark-DirectoryOverride

- id: 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 library functionality.
children:
- Template-OTS-Pandoc
- Template-OTS-WeasyPrint

- id: 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 library functionality.
children:
- Template-OTS-ReqStream
- Template-OTS-ReqStream-Lint
- Template-OTS-FileAssert

- id: Quality-SoftwareStructureModeling
title: The repository shall rely on SysML2Tools to lint and render software-structure models.
tags: [quality]
justification: |
Software-structure documentation depends on SysML2Tools' model-linting
and diagram-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 library
functionality.
children:
- Template-OTS-SysML2Tools-Lint
- Template-OTS-SysML2Tools-Render
9 changes: 9 additions & 0 deletions docs/reqstream/template-dot-net-library.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ sections:
requirements:
- id: Template-Lib-Greeting
title: The library shall generate a greeting string when given a name.
tags: [system]
justification: |
Provides a simple demonstration of library functionality following
.NET library best practices for DEMA Consulting libraries.
Expand All @@ -20,6 +21,7 @@ sections:

- id: Template-Lib-GreetingFormat
title: The library shall return a greeting string in the format "{prefix}, {name}!".
tags: [system]
justification: |
The format is the core observable contract of the library: callers depend on this
specific structure in documentation examples and integration code.
Expand All @@ -31,6 +33,7 @@ sections:

- id: Template-Lib-DefaultPrefix
title: The library shall use "Hello" as the default greeting prefix.
tags: [system]
justification: |
Callers constructing the library without a prefix argument need a predictable default
greeting to rely on in documentation and examples.
Expand All @@ -41,6 +44,7 @@ sections:

- id: Template-Lib-CustomPrefix
title: The library shall support a customizable greeting prefix.
tags: [system]
justification: |
Consumers may need to produce greetings with a prefix other than the
default, so the library must allow the prefix to be specified at
Expand All @@ -53,6 +57,7 @@ sections:

- id: Template-Lib-Prefix
title: The library shall expose the configured greeting prefix via a read-only property.
tags: [system]
justification: |
Callers may need to inspect the prefix configured at construction time without
re-specifying it or relying on the greeting output format to infer it.
Expand All @@ -63,6 +68,7 @@ sections:

- id: Template-Lib-ValidationNull-DemoMethod
title: The library shall reject a null name argument to DemoMethod with ArgumentNullException.
tags: [system]
justification: |
Passing null to DemoMethod is a programming error. Throwing ArgumentNullException
immediately surfaces the mistake to callers and prevents obscure failures deeper in
Expand All @@ -74,6 +80,7 @@ sections:

- id: Template-Lib-ValidationNull-Constructor
title: The library shall reject a null prefix argument to the constructor with ArgumentNullException.
tags: [system]
justification: |
Passing null to the constructor is a programming error. Throwing ArgumentNullException
immediately surfaces the mistake and prevents invalid instances from being created.
Expand All @@ -84,6 +91,7 @@ sections:

- id: Template-Lib-ValidationEmpty-DemoMethod
title: The library shall reject an empty-string name argument to DemoMethod with ArgumentException.
tags: [system]
justification: |
Passing an empty string to DemoMethod is a programming error. Throwing ArgumentException
immediately surfaces the mistake and prevents malformed output such as "Hello, !".
Expand All @@ -94,6 +102,7 @@ sections:

- id: Template-Lib-ValidationEmpty-Constructor
title: The library shall reject an empty-string prefix argument to the constructor with ArgumentException.
tags: [system]
justification: |
Passing an empty string to the constructor is a programming error. Throwing ArgumentException
immediately surfaces the mistake and prevents malformed output such as ", World!".
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ sections:
requirements:
- id: Template-Platform-Windows
title: The library shall build and run on Windows platforms.
tags: [system]
justification: |
DEMA Consulting libraries must support Windows as a major development platform.
tests:
Expand All @@ -30,6 +31,7 @@ sections:

- id: Template-Platform-Linux
title: The library shall build and run on Linux platforms.
tags: [system]
justification: |
DEMA Consulting libraries must support Linux for CI/CD and containerized environments.
tests:
Expand All @@ -38,6 +40,7 @@ sections:

- id: Template-Platform-MacOS
title: The library shall build and run on macOS platforms.
tags: [system]
justification: |
DEMA Consulting libraries must support macOS for developers using Apple platforms.
tests:
Expand All @@ -46,27 +49,31 @@ sections:

- id: Template-Platform-Net8
title: The library shall support .NET 8 runtime.
tags: [system]
justification: |
.NET 8 is an LTS release providing long-term stability for enterprise users.
tests:
- "net8.0@TemplateDotNetLibrary_SystemIntegration_DefaultConstruction_ReturnsExpectedGreeting"

- id: Template-Platform-Net9
title: The library shall support .NET 9 runtime.
tags: [system]
justification: |
.NET 9 support enables users to leverage the latest .NET features.
tests:
- "net9.0@TemplateDotNetLibrary_SystemIntegration_DefaultConstruction_ReturnsExpectedGreeting"

- id: Template-Platform-Net10
title: The library shall support .NET 10 runtime.
tags: [system]
justification: |
.NET 10 support ensures the library remains compatible with the latest .NET ecosystem.
tests:
- "net10.0@TemplateDotNetLibrary_SystemIntegration_DefaultConstruction_ReturnsExpectedGreeting"

- id: Template-Platform-NetStd20
title: The library shall support the .NET Standard 2.0 target framework.
tags: [system]
justification: |
.NET Standard 2.0 is a widely-supported target framework that enables the library to
be used in MSBuild extensions and other tooling that requires .NET Standard compatibility.
Expand Down
7 changes: 7 additions & 0 deletions requirements.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
---
# Root requirements file - includes all system, unit, platform, and OTS requirements
# root-tags: any requirement not (transitively) linked as a child of a requirement
# tagged with one of these tags is reported as an orphan by
# `dotnet reqstream --requirements requirements.yaml --enforce`. This catches
# low-level implementation requirements (and tests/code) that were added without
# ever being connected to user-visible functionality.
root-tags: [system, quality]
includes:
- docs/reqstream/quality.yaml
- docs/reqstream/template-dot-net-library.yaml
- docs/reqstream/template-dot-net-library/demo.yaml
- docs/reqstream/template-dot-net-library/platform-requirements.yaml
Expand Down