Skip to content

Add root-tags orphan detection with system and quality requirement roots - #213

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

Malcolmnixon merged 2 commits into
mainfrom
feature/root-tags-orphan-detection

Conversation

@Malcolmnixon

Copy link
Copy Markdown
Member

Summary

Adds root-tags orphan detection to BuildMark, consistent with the pattern applied across
sibling DEMA Consulting repositories.

  • Bumped demaconsulting.reqstream to 1.11.0.
  • Tagged all BuildMark system-level requirement categories (Command, GitHub, AzureDevOps,
    Config, Report, Controls, Validation) and all BuildMark-Plt-* platform requirements
    with [system] so they act as orphan-detection roots.
  • Closed 30 genuine traceability gaps by linking previously-unreferenced implementation
    units up to their corresponding System requirements, including:
    • Program.cs per-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 to Validation-SelfValidation, its sole
      consumer (confirmed in Validation.cs).
    • Version-SemanticVersioning — linked alongside Version-Subsystem under
      GitHub-VersionTags.
    • RepoConnectors-ConnectorInterface/-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.
  • Added docs/reqstream/quality.yaml with [quality]-tagged grouping requirements rooting
    OTS/process tooling (xUnit, BuildMark, VersionMark, SarifMark, SonarMark, ReviewMark,
    Pandoc, WeasyPrint, FileAssert, ReqStream) so these process-only dependencies are not
    orphaned leaves.
  • Configured root-tags: [system, quality] in requirements.yaml so
    dotnet reqstream --enforce performs orphan checking automatically, without needing a
    separate 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

- 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>
Copilot AI lite review requested due to automatic review settings September 2, 2026 01:33

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.

🟡 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] to requirements.yaml and included a new docs/reqstream/quality.yaml requirements 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.reqstream dotnet tool version to 1.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.

Comment thread docs/reqstream/build-mark.yaml Outdated
Comment thread requirements.yaml Outdated
- 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>
Copilot AI review requested due to automatic review settings September 2, 2026 01:42

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 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

@Malcolmnixon
Malcolmnixon merged commit f9fc43a into main Sep 2, 2026
16 checks passed
@Malcolmnixon
Malcolmnixon deleted the feature/root-tags-orphan-detection branch September 2, 2026 01:55
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