Skip to content

Add root-tags orphan detection for requirements traceability - #39

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

Applies the root-tags orphan-detection pattern (established across sibling DemaConsulting repos) to ApiMark's requirements traceability.

  • Bumped \demaconsulting.reqstream\ tool to 1.11.0.
  • Tagged all 18 top-level system requirements (ApiMarkCore, ApiMarkCpp, ApiMarkDotNet, ApiMarkMsbuild, ApiMarkTool, ApiMarkVhdl) with [system].
  • Closed 66 genuine traceability gaps by linking implementation-level requirements (FileMarkdownWriter*, FileMarkdownWriterFactory*, null-guard requirements, EmitConfig range validation, DocumentationCoverageCapable edge cases, ApiMarkTask forwarding/error-handling, CLI flag rejection, SelfTest enforce-docs tests, Vhdl error paths) as children of their existing parent requirements. Each link reflects real code/test evidence already present in the codebase.
  • Added \docs/reqstream/quality.yaml\ grouping the 6 OTS dependencies (Mono.Cecil, Clang, CppAstNet, ANTLR4, DemaConsulting.TestResults, Microsoft.Extensions.FileSystemGlobbing) under [quality]\ tags, so third-party-derived requirements are not reported as orphans.
  • Added
    oot-tags: [system, quality]\ to
    equirements.yaml.

Validation

  • \dotnet reqstream --requirements requirements.yaml --enforce\ → 0 of 369 requirements orphaned.
  • \pwsh ./build.ps1\ → same pre-existing test failures as on main (Clang not installed on this dev machine; unrelated to this change, confirmed via \git stash).
  • \pwsh ./fix.ps1\ / \pwsh ./lint.ps1\ → clean, exit 0.

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

- Bump demaconsulting.reqstream tool to 1.11.0
- Tag all 18 top-level system requirements (ApiMarkCore, ApiMarkCpp,
  ApiMarkDotNet, ApiMarkMsbuild, ApiMarkTool, ApiMarkVhdl) with [system]
- Close 66 genuine traceability gaps by linking implementation-level
  requirements (FileMarkdownWriter*, FileMarkdownWriterFactory*, IContext
  null-guards, IApiEmitter null-guards, EmitConfig range validation,
  IDocumentationCoverageCapable edge cases, DotNetGenerator exclude
  pattern, ApiMarkTask forwarding/error-handling, Cli flag rejection,
  SelfTest enforce-docs tests, VhdlGenerator/VhdlAstParser error paths)
  as children of their existing parent requirements
- Add docs/reqstream/quality.yaml grouping the 6 OTS dependencies
  (Mono.Cecil, Clang, CppAstNet, ANTLR4, DemaConsulting.TestResults,
  Microsoft.Extensions.FileSystemGlobbing) under [quality] tags so they
  are not reported as orphans
- Add root-tags: [system, quality] to requirements.yaml so
  'dotnet reqstream --requirements requirements.yaml --enforce' detects
  requirements not traceable to product-level functionality
- Verified 0 orphans of 369 requirements after changes

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

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 consistent, syntactically sound, and the newly added/linked requirement IDs resolve correctly within the repo structure.

Pull request overview

This PR strengthens ApiMark’s requirements traceability setup by enabling “root-tags” orphan detection in ReqStream and ensuring both system-level and off-the-shelf (OTS) dependency requirements are properly rooted to avoid false orphan reports.

Changes:

  • Added root-tags: [system, quality] to enable orphan detection anchored on tagged root requirements.
  • Tagged top-level “system” requirements and expanded child links to close traceability gaps across core/tool/msbuild/dotnet/cpp/vhdl requirement trees.
  • Introduced a new docs/reqstream/quality.yaml root requirement grouping for OTS dependency requirements, and bumped demaconsulting.reqstream to 1.11.0.
File summaries
File Description
requirements.yaml Adds root-tags and includes the new quality root file to support orphan detection.
docs/reqstream/quality.yaml Adds [quality]-tagged root/grouping requirements to attach OTS requirements to a non-functional “quality” root.
docs/reqstream/api-mark-core.yaml Tags top-level ApiMarkCore requirements as [system] and connects additional child requirements to close gaps.
docs/reqstream/api-mark-dot-net.yaml Tags top-level ApiMarkDotNet requirements as [system] and links additional child requirements.
docs/reqstream/api-mark-msbuild.yaml Tags top-level ApiMarkMsbuild requirements as [system] and links additional ApiMarkTask child requirements.
docs/reqstream/api-mark-tool.yaml Tags the top-level ApiMarkTool requirement as [system].
docs/reqstream/api-mark-tool/cli.yaml Adds a missing child requirement link for CLI option parsing validation.
docs/reqstream/api-mark-tool/self-test.yaml Adds missing child requirement links for enforce-docs self-test scenarios and output suppression.
docs/reqstream/api-mark-vhdl.yaml Tags the top-level ApiMarkVhdl requirement as [system] and links additional child requirements.
docs/reqstream/api-mark-cpp.yaml Tags top-level ApiMarkCpp requirements as [system].
.config/dotnet-tools.json Bumps demaconsulting.reqstream tool version to 1.11.0.
Review details
  • Files reviewed: 11/11 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.

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