Add root-tags orphan detection with system and quality requirement roots - #213
Conversation
- Bump demaconsulting.reqstream tool to 1.11.0
- Tag all BuildMark system-level requirement categories (Command, GitHub,
AzureDevOps, Config, Report, Controls, Validation) and BuildMark-Plt-*
platform requirements with [system] so they act as orphan-detection roots
- Close 30 genuine traceability gaps by linking previously-unreferenced
implementation units up to their corresponding System requirements:
- Program.cs per-flag units (Version, Help, Silent, Log, BuildVersion,
Validate, Results, Depth, IncludeKnownIssues, and the two error-handling
units for invalid build version / connector failure) linked to their
matching Command/Validation/Report system requirements
- Utilities-TemporaryDirectory linked to Validation-SelfValidation (its
sole consumer, confirmed in Validation.cs)
- Version-SemanticVersioning linked alongside Version-Subsystem under
GitHub-VersionTags
- RepoConnectors-ConnectorInterface and -ProcessRunner (and their
RepoConnectorBase-* children) linked to Config-Connector
- GitHubConnectorConfig-TokenVariable, AzureDevOpsConnectorConfig-
TokenVariable, and ConnectorConfig-Properties linked alongside their
sibling -Properties requirements under Configuration-ConnectorConfig
- ConfigurationIssue-Record linked under Configuration-Issues
- SectionConfig-Properties and RuleConfig-Properties linked under
Config-Sections and Config-Rules respectively
- Add docs/reqstream/quality.yaml with [quality]-tagged grouping
requirements rooting OTS/process tooling (xUnit, BuildMark, VersionMark,
SarifMark, SonarMark, ReviewMark, Pandoc, WeasyPrint, FileAssert,
ReqStream) so they are not orphaned
- Configure root-tags: [system, quality] in requirements.yaml so
\dotnet reqstream --enforce\ performs orphan checking by default
Verified 0 orphans via --enforce, build succeeded with 1701/1701 tests
passing across net8.0/net9.0/net10.0, and lint.ps1 is clean.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
A couple of concrete requirements/documentation issues were found in modified requirement blocks that should be corrected to keep enforcement guidance and requirement statements consistent.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
This PR enhances BuildMark’s ReqStream requirements governance by introducing tag-based orphan detection roots and extending traceability to cover both system-level requirements and repository/process tooling requirements.
Changes:
- Added
root-tags: [system, quality]torequirements.yamland included a newdocs/reqstream/quality.yamlrequirements file. - Tagged BuildMark’s system/platform requirement roots with
[system]and linked additional implementation/unit requirements upward to close orphan gaps. - Bumped the local
demaconsulting.reqstreamdotnet tool version to1.11.0.
File summaries
| File | Description |
|---|---|
| requirements.yaml | Configures ReqStream orphan detection roots and includes the new quality requirements file. |
| docs/reqstream/quality.yaml | Introduces [quality]-rooted requirements to prevent OTS/process tooling requirements from becoming orphan leaves. |
| docs/reqstream/build-mark/platform-requirements.yaml | Tags platform requirements with [system] so they participate as orphan-detection roots. |
| docs/reqstream/build-mark/configuration.yaml | Adds missing downward trace links to close configuration-related traceability gaps. |
| docs/reqstream/build-mark.yaml | Tags system-level requirement categories with [system] and links additional child requirements to close orphans. |
| .config/dotnet-tools.json | Updates ReqStream tool version to support the new enforcement behavior/config. |
Review details
- Files reviewed: 6/6 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
- Move testable shall statement into title for BuildMark-GitHub-EnterpriseSupport - Fix root-tags comment in requirements.yaml to reference full --requirements flag Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟢 Approval recommended
The changes are consistent and self-contained traceability/configuration updates, and the updated requirements structure cleanly establishes system/quality roots without introducing apparent schema or linkage issues.
Review details
- Files reviewed: 6/6 changed files
- Comments generated: 0 new
- Review effort level: Lite
Summary
Adds root-tags orphan detection to BuildMark, consistent with the pattern applied across
sibling DEMA Consulting repositories.
demaconsulting.reqstreamto 1.11.0.Config, Report, Controls, Validation) and all
BuildMark-Plt-*platform requirementswith
[system]so they act as orphan-detection roots.units up to their corresponding System requirements, including:
Program.csper-flag units (Version, Help, Silent, Log, BuildVersion, Validate,Results, Depth, IncludeKnownIssues, and the invalid-build-version /
connector-failure error-handling units) — linked to their matching
Command/Validation/Report system requirements.
Utilities-TemporaryDirectory— linked toValidation-SelfValidation, its soleconsumer (confirmed in
Validation.cs).Version-SemanticVersioning— linked alongsideVersion-SubsystemunderGitHub-VersionTags.RepoConnectors-ConnectorInterface/-ProcessRunner(and theirRepoConnectorBase-*children) — linked to
Config-Connector.GitHubConnectorConfig-TokenVariable,AzureDevOpsConnectorConfig-TokenVariable, andConnectorConfig-Properties— linked alongside their sibling-Propertiesrequirements under
Configuration-ConnectorConfig.ConfigurationIssue-Record— linked underConfiguration-Issues.SectionConfig-PropertiesandRuleConfig-Properties— linked underConfig-Sectionsand
Config-Rulesrespectively.docs/reqstream/quality.yamlwith[quality]-tagged grouping requirements rootingOTS/process tooling (xUnit, BuildMark, VersionMark, SarifMark, SonarMark, ReviewMark,
Pandoc, WeasyPrint, FileAssert, ReqStream) so these process-only dependencies are not
orphaned leaves.
root-tags: [system, quality]inrequirements.yamlsodotnet reqstream --enforceperforms orphan checking automatically, without needing aseparate command or flag.
Verification
dotnet reqstream --requirements requirements.yaml --enforce→ 0 orphans.pwsh ./build.ps1→ build succeeded, 1701/1701 tests passed (net8.0/net9.0/net10.0).pwsh ./fix.ps1→ applied only expected formatting.pwsh ./lint.ps1→ clean, exit code 0.Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com