Skip to content

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

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

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

  • Upgraded demaconsulting.reqstream from 1.10.0 to 1.11.0.
  • Tagged all System-* and Platform-* 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, requirements
    traceability, architecture traceability), each linking to its supporting OTS
    tool as a children entry (never named in the requirement text) and each
    carrying direct test evidence links.
  • 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

VersionMark already had a partial children: hierarchy under its four System
requirements (Capture, Publish, Lint, Validate), but 60 of 127 requirements
were unreachable from any of them - most notably every CommandLine-* and
Context-* requirement covering the tool's baseline -v/--version,
-h/--help, --silent, --log, and error-handling flags. These flags are
documented in the README and exercised by passing tests, but had no
System-level requirement representing them.

A new VersionMark-System-CommandLine requirement was added to close this
gap, backed by existing passing tests (no fabricated links). The remaining 59
orphans (Program dispatch, VersionInfo/Formatter error and consolidation
paths, Configuration file parsing, and Utilities glob/path helpers) were
linked as children of the specific System requirement whose behavior they
implement. The three genuinely product-facing OTS dependencies (YamlDotNet,
FileSystemGlobbing, TestResults) are linked as children of the requirements
that actually consume them, while the remaining 12 process/compliance OTS
requirements are linked under the new quality.yaml.

Validation

dotnet reqstream --requirements requirements.yaml --enforce
# 0 of 139 requirements orphaned (root-tags: system, quality)
  • pwsh ./build.ps1 - build succeeded, 732/735 tests passed (3 skipped, Unix-only) 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 1.10.0 to 1.11.0
- Tag all System- and Platform-level requirements with [system]
- Add a new VersionMark-System-CommandLine requirement covering the
  version/help/silent/log/error-handling CLI baseline shared across
  capture, publish, and lint invocations, which previously had no
  System-level representation despite being documented in the README
  and exercised by passing integration tests
- Link 60 previously orphaned requirements (Program, Context,
  CommandLine, VersionInfo error paths, Formatter, Configuration,
  Utilities) to their owning System requirement via children, and link
  the genuine production OTS dependencies YamlDotNet, FileSystemGlobbing,
  and TestResults under the Linting/Utilities/Validate requirements that
  actually consume them
- Add docs/reqstream/quality.yaml with [quality] root requirements for
  process/compliance OTS tooling (BuildMark, SarifMark, SonarMark,
  ReviewMark, Pandoc, WeasyPrint, FileAssert, xUnit, ReqStream,
  SysML2Tools), each with direct test evidence links
- Set root-tags: [system, quality] in requirements.yaml so orphan
  detection runs automatically on every reqstream invocation
- Confirm 0 of 139 requirements orphaned with root-tags system,quality

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

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/traceability configuration and documentation, and the referenced IDs/tests appear consistent with existing OTS and test naming in the repository.

Pull request overview

This PR strengthens VersionMark’s requirements traceability by introducing root-tags-based orphan detection and extending the requirements hierarchy so previously-unreachable CLI and utility behaviors trace to root system/quality requirements.

Changes:

  • Configure root-tags: [system, quality] and add a new docs/reqstream/quality.yaml to model repository/process quality outcomes as requirements.
  • Close a CLI traceability gap by adding a new root system requirement for baseline command-line behavior and linking additional previously-orphaned requirements into the System hierarchy.
  • Upgrade demaconsulting.reqstream from 1.10.0 to 1.11.0 to support/align with the new root-tags enforcement behavior.
File summaries
File Description
requirements.yaml Adds root-tags: [system, quality] and includes the new quality requirements file to enable automatic orphan detection.
docs/reqstream/version-mark/utilities.yaml Links FileSystemGlobbing OTS dependency under the utilities requirements tree.
docs/reqstream/version-mark/publishing.yaml Adds missing children links from publishing behaviors to formatter/version/glob requirements to eliminate orphans.
docs/reqstream/version-mark/platform-requirements.yaml Tags platform requirements with [system] so they qualify as roots under configured root-tags.
docs/reqstream/version-mark/configuration.yaml Links YamlDotNet OTS dependency to the configuration requirements that consume it.
docs/reqstream/version-mark/capture.yaml Adds missing children links from capture behaviors to config/path/version-info requirements to eliminate orphans.
docs/reqstream/version-mark.yaml Tags top-level System requirements with [system] and adds a new System CLI requirement to close CLI traceability gaps.
docs/reqstream/quality.yaml Introduces [quality] root requirements for CI/repository outcomes and links the supporting OTS tools as children.
.config/dotnet-tools.json Bumps demaconsulting.reqstream tool version to 1.11.0.
Review details
  • Files reviewed: 9/9 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 617844e into main Sep 2, 2026
16 checks passed
@Malcolmnixon
Malcolmnixon deleted the feature/root-tags-orphan-detection branch September 2, 2026 00:00
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