Skip to content

Add root-tags orphan detection and close IO traceability gap - #186

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

Add root-tags orphan detection and close IO traceability gap#186
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 TestResults library, following
the same pattern already applied to ReqStream, DictionaryMark, FileAssert,
ReviewMark, SarifMark, SonarMark, Ste100Mark, and VersionMark.

  • Upgraded demaconsulting.reqstream from 1.10.0 to 1.11.0.
  • Tagged all TestResultsLibrary-* System requirements and the
    TestResults-Platform-*/TestResults-Runtime-* requirements with
    [system].
  • Added docs/reqstream/quality.yaml with [quality]-tagged requirements for
    repository/process-level outcomes (build integrity, static analysis, peer
    review, documentation generation, test infrastructure, 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 a real traceability gap

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

The remaining three were genuine gaps in the product requirements tree:

  • TestResults-IO-RoundTrip describes round-trip fidelity between TRX and
    JUnit - an emergent property of the IO subsystem as a whole - but had no
    parent connecting it to a System requirement. It is now linked as a child
    of TestResultsLibrary-IO-ReadResults.
  • TestResults-Trx-Utf8Encoding and TestResults-JUnit-Utf8Encoding describe
    format-specific encoding-declaration behavior of the TRX and JUnit
    serializers, but were never linked as children of TestResults-IO-Serialize
    alongside their sibling TestResults-SerializerHelpers-Utf8Encoding
    requirement. They are now linked there.

All three 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, 516/516 tests passed across
    net8.0/net9.0/net10.0/net481.
  • 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 TestResultsLibrary-* System requirements and TestResults-Platform-*/
  TestResults-Runtime-* requirements with [system].
- Link TestResults-IO-RoundTrip, TestResults-Trx-Utf8Encoding, and
  TestResults-JUnit-Utf8Encoding into the requirements tree - these were
  genuine emergent/format-detail requirements with no parent linking them to
  a System requirement.
- Add docs/reqstream/quality.yaml with [quality]-tagged grouping requirements
  for repository/process outcomes (build integrity, static analysis, peer
  review, documentation generation, test infrastructure, 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 of 96 requirements orphaned.
build.ps1 succeeds with 516/516 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:00

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

The changes are limited to requirements/tooling configuration and appear internally consistent (IDs resolve, tagging/rooting is coherent) without introducing runtime code risk.

Pull request overview

This PR strengthens requirements traceability enforcement in the TestResults repo by enabling ReqStream root-tag–based orphan detection and rooting previously orphaned OTS/process requirements under a new quality requirement tree.

Changes:

  • Configure root-tags: [system, quality] in requirements.yaml and include the new docs/reqstream/quality.yaml requirements file.
  • Add [system] tagging to system-level and platform/runtime requirements and close the remaining IO traceability gaps by linking existing IO requirements into the tree.
  • Upgrade the local demaconsulting.reqstream .NET tool from 1.10.0 to 1.11.0.
File summaries
File Description
requirements.yaml Adds root-tags and includes the new quality requirements file so orphan detection runs automatically under --enforce.
docs/reqstream/test-results-library/platform-requirements.yaml Tags platform and runtime requirements as system roots for reachability under enforcement.
docs/reqstream/test-results-library/io.yaml Links existing encoding requirements under IO serialization and defines/roots IO round-trip behavior with test evidence.
docs/reqstream/test-results-library.yaml Tags system-level requirements and links IO round-trip as a child to close the IO traceability gap.
docs/reqstream/quality.yaml Introduces quality-tagged process/root requirements that root OTS tooling requirements with test evidence.
.config/dotnet-tools.json Bumps demaconsulting.reqstream tool version to 1.11.0.
Review details
  • Files reviewed: 6/6 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 b91a2fc into main Sep 2, 2026
9 checks passed
@Malcolmnixon
Malcolmnixon deleted the feature/root-tags-orphan-detection branch September 2, 2026 00:10
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