Add subsystem folder structure for design docs and requirements#120
Add subsystem folder structure for design docs and requirements#120Malcolmnixon merged 8 commits intomainfrom
Conversation
- Move Context.cs to Cli/Context.cs - Move Validation.cs to SelfTest/Validation.cs - Move PathHelpers.cs to Utilities/PathHelpers.cs - Move test files to matching subsystem folders - Create docs/design/ with software design documentation - Create docs/reqstream/ with split requirements files - Update requirements.yaml to use includes - Add .reviewmark.yaml configuration Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
|
@copilot I'm not seeing subsystem tests. |
|
@copilot Please review all requirements and their linking, and make sure: children links go "down" in the software structure |
Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/a06ba685-16f3-460c-8834-d95be08f0a31 Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
The
The |
Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/9cc56883-fae4-4436-91b2-c4922ea50a80 Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Fixed in 83156d4. All subsystem and unit requirement files were empty — they now have actual requirements, and
The unit requirement files ( |
There was a problem hiding this comment.
Pull request overview
Establishes an explicit subsystem-based structure for BuildMark (Cli, SelfTest, Utilities, RepoConnectors) and adds corresponding design + requirement artifacts to support traceability and review coverage across the tool.
Changes:
- Reorganizes source and test code into subsystem folders while keeping namespaces unchanged.
- Splits the monolithic
requirements.yamlinto a ReqStream include tree underdocs/reqstream/, with system→subsystem→unitchildren:traceability. - Adds a structured
docs/design/set (Pandoc assembly inputs) and introduces.reviewmark.yamlreview sets to cover system/subsystems/units and OTS items.
Reviewed changes
Copilot reviewed 31 out of 41 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| test/DemaConsulting.BuildMark.Tests/Utilities/PathHelpersTests.cs | Adds/moves unit tests for PathHelpers.SafePathCombine. |
| test/DemaConsulting.BuildMark.Tests/SelfTest/ValidationTests.cs | Adds/moves self-test validation output tests (TRX/JUnit + error handling). |
| test/DemaConsulting.BuildMark.Tests/RepoConnectors/RepoConnectorFactoryTests.cs | Adds/moves tests for connector factory creation behavior. |
| test/DemaConsulting.BuildMark.Tests/RepoConnectors/ProcessRunnerTests.cs | Adds/moves process execution tests for repo connector support utilities. |
| test/DemaConsulting.BuildMark.Tests/RepoConnectors/MockRepoConnectorTests.cs | Adds/moves tests for the mock connector used by self-test and dev flows. |
| test/DemaConsulting.BuildMark.Tests/RepoConnectors/GitHub/GitHubRepoConnectorTests.cs | Adds/moves GitHub connector tests into the RepoConnectors subsystem layout. |
| test/DemaConsulting.BuildMark.Tests/Cli/ContextTests.cs | Adds/moves CLI context parsing/output/exit-code tests into Cli/. |
| src/DemaConsulting.BuildMark/Utilities/PathHelpers.cs | Introduces/moves safe path-combine helper under Utilities subsystem folder. |
| src/DemaConsulting.BuildMark/SelfTest/Validation.cs | Introduces/moves self-validation runner under SelfTest subsystem folder. |
| src/DemaConsulting.BuildMark/Cli/Context.cs | Introduces/moves CLI context (arg parsing + output routing) under Cli subsystem folder. |
| requirements.yaml | Converts root requirements file into an includes:-only aggregator. |
| docs/reqstream/utilities/unit-path-helpers.yaml | Adds unit-level requirements for PathHelpers. |
| docs/reqstream/utilities/subsystem-utilities.yaml | Adds Utilities subsystem requirements and links down to unit requirements. |
| docs/reqstream/unit-program.yaml | Adds Program unit requirements (version/help/validate/report). |
| docs/reqstream/self-test/unit-validation.yaml | Adds Validation unit requirements for self-test execution and results output. |
| docs/reqstream/self-test/subsystem-self-test.yaml | Adds SelfTest subsystem requirements with children: traceability to Validation. |
| docs/reqstream/repo-connectors/unit-github-repo-connector.yaml | Adds GitHubRepoConnector unit requirements with test evidence links. |
| docs/reqstream/repo-connectors/subsystem-repo-connectors.yaml | Adds RepoConnectors subsystem requirements covering GitHub/mock/factory/process runner. |
| docs/reqstream/platform-requirements.yaml | Adds platform/runtime support requirements (Windows/Linux/macOS + net8/net9/net10). |
| docs/reqstream/ots-versionmark.yaml | Splits OTS requirement for VersionMark into its own file. |
| docs/reqstream/ots-sonarmark.yaml | Splits OTS requirement for SonarMark into its own file. |
| docs/reqstream/ots-sarifmark.yaml | Splits OTS requirement for SarifMark into its own file. |
| docs/reqstream/ots-reqstream.yaml | Splits OTS requirement for ReqStream into its own file. |
| docs/reqstream/ots-mstest.yaml | Splits OTS requirement for MSTest into its own file. |
| docs/reqstream/ots-buildmark.yaml | Splits OTS requirement for BuildMark into its own file. |
| docs/reqstream/cli/unit-context.yaml | Adds Context unit requirements (parsing/output/silent/stderr/exit code). |
| docs/reqstream/cli/subsystem-cli.yaml | Adds Cli subsystem requirements with children: links to Context requirements. |
| docs/reqstream/buildmark-system.yaml | Adds system-level requirements with subsystem/unit traceability links. |
| docs/design/utilities/utilities.md | Adds Utilities subsystem design chapter. |
| docs/design/utilities/path-helpers.md | Adds PathHelpers unit design chapter. |
| docs/design/title.txt | Adds Pandoc title metadata for design document assembly. |
| docs/design/self-test/validation.md | Adds Validation unit design chapter. |
| docs/design/self-test/self-test.md | Adds SelfTest subsystem design chapter. |
| docs/design/repo-connectors/repo-connectors.md | Adds RepoConnectors subsystem design chapter. |
| docs/design/repo-connectors/github-repo-connector.md | Adds GitHubRepoConnector unit design chapter. |
| docs/design/program.md | Adds Program unit design chapter. |
| docs/design/introduction.md | Adds design document introduction including software structure + folder layout. |
| docs/design/definition.yaml | Adds Pandoc assembly definition listing input files/resources/templates. |
| docs/design/cli/context.md | Adds Context unit design chapter. |
| docs/design/cli/cli.md | Adds Cli subsystem design chapter. |
| .reviewmark.yaml | Adds ReviewMark configuration defining review sets for units/subsystems/system/design/requirements/OTS. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
|
@copilot Please fix linting issues |
…ext.md/validation.md Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/f9466303-dc27-435b-8d99-ddbeb7394ecc Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
The linting issues were fixed in 1f2bb41:
All lint tools pass locally ( Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
Applies the subsystem folder structure from TemplateDotNetTool PR #81 to BuildMark, establishing Cli, SelfTest, Utilities, and RepoConnectors as named subsystems with full design, requirements, and review coverage.
Description
Source Reorganization
Context.cs→Cli/Context.csValidation.cs→SelfTest/Validation.csPathHelpers.cs→Utilities/PathHelpers.csCli/,SelfTest/,Utilities/)RepoConnectors/):GitHubRepoConnectorTests.cs→RepoConnectors/GitHub/GitHubRepoConnectorTests.csMockRepoConnectorTests.cs→RepoConnectors/MockRepoConnectorTests.csProcessRunnerTests.cs→RepoConnectors/ProcessRunnerTests.csRepoConnectorFactoryTests.cs→RepoConnectors/RepoConnectorFactoryTests.csDemaConsulting.BuildMark)New
docs/design/Structure12 design markdown files added:
introduction.md— Software Structure tree and Folder Layout sectionsprogram.md— Program unit designcli/{cli,context}.md— Cli subsystem + Context unitself-test/{self-test,validation}.md— SelfTest subsystem + Validation unitutilities/{utilities,path-helpers}.md— Utilities subsystem + PathHelpers unitrepo-connectors/{repo-connectors,github-repo-connector}.md— RepoConnectors subsystem + GitHubRepoConnector unitdefinition.yaml+title.txtfor Pandoc assemblyDesign Doc Corrections
path-helpers.md:SafePathCombinereturn value corrected from "single absolute path" to the actualPath.Combineresult (which may be relative ifbasePathis relative); algorithm steps updated to accurately reflect the implementation.context.md:OpenLogFiledescription corrected to overwrite mode; missing blank line before### WriteLineheading fixed (MD022).validation.md: Interactions table updated to reflect thatPathHelpersis used directly; table column alignment corrected (MD060).New
docs/reqstream/Structure17 YAML requirement files extracted from the previous monolithic
requirements.yaml:buildmark-system.yaml— system-level requirements withchildren:links pointing down to subsystem requirementsplatform-requirements.yaml— platform support requirementsunit-program.yaml— Program unit requirements (Version, Help, Validate, Report)cli/subsystem-cli.yaml— Cli subsystem requirements withchildren:links to Context unit requirementscli/unit-context.yaml— Context unit requirements (ArgumentParsing, InvalidArgs, Output, Silent, ErrorOutput, ExitCode)self-test/subsystem-self-test.yaml— SelfTest subsystem requirements withchildren:links to Validation unit requirementsself-test/unit-validation.yaml— Validation unit requirements (Run, TrxOutput, JUnitOutput)utilities/subsystem-utilities.yaml— Utilities subsystem requirements withchildren:links to PathHelpers unit requirementsutilities/unit-path-helpers.yaml— PathHelpers unit requirements (SafeCombine)repo-connectors/subsystem-repo-connectors.yaml— RepoConnectors subsystem requirements withchildren:links to GitHubRepoConnector unit requirementsrepo-connectors/unit-github-repo-connector.yaml— GitHubRepoConnector unit requirements (BuildInformation, GraphQLClient)ots-{mstest,reqstream,buildmark,versionmark,sarifmark,sonarmark}.yaml— OTS itemsrequirements.yamlis now anincludes:-only root file.Requirements Hierarchy
children:links form a complete traceability chain from system to unit:buildmark-system.yaml) →children:to Cli, RepoConnectors, SelfTest, Utilities, and Program subsystem/unit requirementssubsystem-cli.yaml) → each feature requirement haschildren:pointing to the relevant Context unit requirementssubsystem-self-test.yaml) →children:to Validation unit requirementssubsystem-utilities.yaml) →children:to PathHelpers unit requirementssubsystem-repo-connectors.yaml) →children:to GitHubRepoConnector unit requirementsUnit-level tests (
Context_*,PathHelpers_*,Validation_*,GitHubGraphQLClient_*) are linked at the subsystem/unit level; system requirements reference only integration-level tests (IntegrationTest_*,BuildMark_*).New
.reviewmark.yaml13 named review-sets covering all units, subsystems, system integration, design documents, all requirements, and OTS dependencies — following the
[Product]-[Unit],[Product]-[Subsystem],[Product]-System,[Product]-Design,[Product]-AllRequirements, andOTS-Dependenciespatterns. TheBuildMark-RepoConnectorssubsystem review includes source and test files for the full subsystem.Type of Change
Related Issues
Pre-Submission Checklist
Before submitting this pull request, ensure you have completed the following:
Build and Test
dotnet build --configuration Releasedotnet test --configuration Releasedotnet run --project src/DemaConsulting.BuildMark --configuration Release --framework net10.0--no-build -- --validateCode Quality
dotnet format --verify-no-changesQuality Checks
Please run the following checks before submitting:
./lint.sh(Unix/macOS) orcmd /c lint.bat/./lint.bat(Windows)Testing
Documentation
Additional Notes
The software structure tree in
docs/design/introduction.md:Root-level data model classes (
BuildInformation,ItemInfo,Version,VersionTag,WebLink) are not moved — they remain at the system level as they are not independently subsystem-owned.The test project mirrors the source subsystem layout: all subsystem test files are now organized under their respective subsystem subdirectories (
Cli/,SelfTest/,Utilities/,RepoConnectors/).