Skip to content

Add root-tags orphan detection and close CLI traceability gap - #66

Merged
Malcolmnixon merged 1 commit into
mainfrom
feature/root-tags-orphan-detection
Sep 2, 2026
Merged

Malcolmnixon merged 1 commit into
mainfrom
feature/root-tags-orphan-detection

Conversation

@Malcolmnixon

Copy link
Copy Markdown
Member

Summary

Adds root-tags-based orphan detection to the NuGet Cache Tool, following the
same pattern already applied to ReqStream, DictionaryMark, FileAssert,
ReviewMark, SarifMark, SonarMark, Ste100Mark, VersionMark, TestResults, and
NuGetCaching.

  • Upgraded demaconsulting.reqstream from 1.10.0 to 1.11.0.
  • Tagged all NuGetCache-Sys-* and NuGetCache-PLT-* requirements with
    [system].
  • Added docs/reqstream/quality.yaml with [quality]-tagged requirements for
    repository/process-level outcomes (test infrastructure, build integrity,
    static analysis, peer review, documentation generation, and requirements
    traceability), each linking its supporting OTS tool as a children entry
    and carrying direct test evidence.
  • Set root-tags: [system, quality] in requirements.yaml, with a comment
    explaining that configuring root-tags here makes orphan checking
    automatic on every reqstream invocation (no --root-tags flag needed).

Closing real traceability gaps

Running orphan detection surfaced 31 orphaned requirements. Fifteen were
OTS/process requirements with no product-facing consumer - these are now
rooted under the new quality.yaml.

The remaining sixteen were genuine gaps:

  • Baseline CLI mechanics - -v/--version, -h/--help, --validate,
    --results, and error exit codes - are documented in README.md and
    exercised by passing tests at the Cli, Context, Program, and
    SelfTest levels, but had no System-level requirement connecting them to
    product functionality (only the package-caching workflow itself was
    rooted). A new NuGetCache-System-CommandLine requirement now roots this
    baseline, mirroring the equivalent gap closed in VersionMark.
  • NuGetCache-OTS-NuGetCaching (the DemaConsulting.NuGet.Caching library
    that this tool wraps) is a genuine runtime production dependency, not
    process tooling - it is now linked as a child of
    NuGetCache-Program-CachePackages.
  • NuGetCache-OTS-TestResults-Trx/-JUnit (the DemaConsulting.TestResults
    serializers used by Validation.Run to write self-validation results) are
    likewise genuine production dependencies - now linked as children of
    NuGetCache-Validation-ResultsFile.

All linked requirements were already backed by passing tests - no test or
production code changed, only the traceability links.

Validation

dotnet reqstream --requirements requirements.yaml --enforce
# 0 requirements orphaned (root-tags: system, quality)
  • pwsh ./build.ps1 - build succeeded, 285/285 tests passed across
    net8.0/net9.0/net10.0.
  • pwsh ./fix.ps1 - no formatting changes needed.
  • pwsh ./lint.ps1 - no errors (yamllint, cspell/markdownlint, ReqStream,
    ReviewMark, SysML2Tools, dotnet format).

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

- Upgrade demaconsulting.reqstream from 1.10.0 to 1.11.0.
- Tag all NuGetCache-Sys-* and NuGetCache-PLT-* requirements with [system].
- Add NuGetCache-Sys-CommandLine, a new System-level requirement rooting the
  baseline CLI mechanics (version/help display, validate invocation, results
  flag, error exit code) that were documented in README.md and covered by
  passing tests, but had no System-level requirement connecting them to
  product functionality.
- Link the genuine production OTS dependencies (DemaConsulting.NuGet.Caching,
  DemaConsulting.TestResults Trx/JUnit serializers) as children of the
  requirements that actually consume them (Program-CachePackages,
  Validation-ResultsFile), rather than treating them as process tooling.
- Add docs/reqstream/quality.yaml with [quality]-tagged grouping requirements
  for repository/process outcomes (test infrastructure, build integrity,
  static analysis, peer review, documentation generation, requirements
  traceability), each linking its supporting OTS tool as a child and
  carrying direct test evidence.
- Set root-tags: [system, quality] in requirements.yaml with an explanatory
  comment, and include the new quality.yaml.

Validation: dotnet reqstream --enforce reports 0 requirements orphaned.
build.ps1 succeeds with 285/285 tests passing. fix.ps1 and lint.ps1 are clean.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI lite review requested due to automatic review settings September 2, 2026 00:49

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

Changes are limited to requirements/traceability configuration and appear internally consistent (referenced child requirement IDs exist and YAML structure is valid).

Pull request overview

This PR strengthens ReqStream orphan detection by configuring root-tags at the root requirements file level and by rooting previously orphanable OTS/process requirements under a new [quality] requirements set, while also closing a system-level CLI traceability gap for baseline dotnet-tool behavior.

Changes:

  • Configure root-tags: [system, quality] in requirements.yaml and include a new docs/reqstream/quality.yaml to root process/quality outcomes.
  • Tag NuGetCache-Sys-* and NuGetCache-PLT-* requirements with [system], and add a new NuGetCache-Sys-CommandLine system requirement to root baseline CLI mechanics.
  • Add missing child links for true production dependencies (NuGetCaching, TestResults serializers) and bump demaconsulting.reqstream to 1.11.0.
File summaries
File Description
requirements.yaml Adds root-tags configuration and includes docs/reqstream/quality.yaml so orphan checking runs via normal --enforce usage.
docs/reqstream/quality.yaml Introduces [quality] root requirements to prevent OTS/process requirements from being orphaned and to capture evidence links.
docs/reqstream/nuget-cache-tool/self-test/validation.yaml Links TestResults OTS requirements as children of the results-file behavior.
docs/reqstream/nuget-cache-tool/program.yaml Links the NuGetCaching OTS dependency as a child of the caching program behavior.
docs/reqstream/nuget-cache-tool/platform-requirements.yaml Tags platform requirements with [system] to align with the configured root-tags.
docs/reqstream/nuget-cache-tool.yaml Tags system requirements with [system] and adds NuGetCache-Sys-CommandLine to root baseline CLI behavior.
.config/dotnet-tools.json Updates demaconsulting.reqstream tool version from 1.10.0 to 1.11.0.
Review details
  • Files reviewed: 7/7 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@Malcolmnixon
Malcolmnixon merged commit b497d9c into main Sep 2, 2026
16 checks passed
@Malcolmnixon
Malcolmnixon deleted the feature/root-tags-orphan-detection branch September 2, 2026 00:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants