Add software structure tree diagram, system design doc, integration tests, and review-set restructuring#135
Conversation
Agent-Logs-Url: https://github.com/demaconsulting/ReqStream/sessions/e9ff982c-d692-4faf-8730-7872322b62a3 Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
…rements parent subsystem Agent-Logs-Url: https://github.com/demaconsulting/ReqStream/sessions/aa996649-76db-4459-8439-38f21f90303f Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
…r ReqStream system Agent-Logs-Url: https://github.com/demaconsulting/ReqStream/sessions/9a96cc11-81a0-4af7-baa0-3f4285531b83 Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
|
@copilot Excellent. the design introduction.md hierarchy looks excellent. Given that layout and reading both https://raw.githubusercontent.com/demaconsulting/ContinuousCompliance/refs/heads/main/docs/requirements.md and https://raw.githubusercontent.com/demaconsulting/ContinuousCompliance/refs/heads/main/docs/file-reviews.md can you review the requirements, design documentation, and review-sets, and then determine if changes are needed. |
…roduction.md Agent-Logs-Url: https://github.com/demaconsulting/ReqStream/sessions/450a0f77-37fc-45a3-93b4-65ddc79c3ae6 Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
After reviewing the requirements (all 6 unit YAML files), design documents, and
Fixed in commit cf3c061 by adding a new - id: ReqStream-Design-Introduction
title: Review of ReqStream Design Introduction
paths:
- "docs/design/introduction.md"Everything else was already consistent:
|
|
@copilot I'm kind of thinking a "ReqStream-System" review-set should exist which covers the top-level functionality of the application. I notice there isn't an IntegrationTests.cs which actually runs ReqStream and checks the system works. It would also be possible to move the full-system requirements to a requirements file, and the introduction.md may be included - as well as a reqstream-system.md design document talking about the integrated system. |
… and integration tests Agent-Logs-Url: https://github.com/demaconsulting/ReqStream/sessions/fd42edb9-1cb4-46d3-8d70-6709866160ff Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Done in commit 01b8f6f. The following were added:
|
|
@copilot I don't think I'm a fan of subsystem-system.yaml - I actually think for the very top level we want reqstream-system.yaml - it's OK to deviate because it's a special case. Then I would like you to review the design introduction tree, then build me a table of every review-set and how it maps to the software items in the table. I acknowledge there may be outliers like the OTS-Dependencies review-set; however it could be argued that platform-requirements actually belongs under the ReqStream System review, as the system is the ReqStream application, and that's what has to run on the different platforms. Once you have that table, consider if it highlights adjustments to the review-sets. |
|
@copilot Please make sure that all documentation, examples, and tests use Semantic-ID style requirement IDs, not numeric. |
Agent-Logs-Url: https://github.com/demaconsulting/ReqStream/sessions/bbd0becb-9d18-43b0-b736-b78e20d72b35 Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Done in commit cdcadbd. The numeric IDs in
Both assertions updated accordingly. The pre-existing |
|
@copilot I think you missed many numeric requirement IDs - the README.md has SYS-SEC-001 and DATA-001 - these aren't semantic IDs - also check the user guide. |
…ide.md Agent-Logs-Url: https://github.com/demaconsulting/ReqStream/sessions/431bd4cc-b8fa-4acd-aa7e-7fbbc6c6a43b Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Done in commit bb2ad46. All numeric-suffix IDs in
Both files pass markdown lint and cspell with zero errors. |
Pull Request
Description
Adds a text-based tree diagram to
docs/design/introduction.mdso readers can immediately see the system → subsystem → unit decomposition of ReqStream without having to infer it from prose.The new Software Structure section (inserted between Scope and Document Conventions) uses ASCII box-drawing characters in a fenced
textcode block — compatible with all PDF viewers and consistent with the existing convention against graphical diagrams:Subsystem names are taken directly from the canonical
docs/reqstream/unit-*.yamlrequirement files. The hierarchy places Command-Line Interface under Program Orchestration (sinceContextis directly used byProgram), groups Requirements File Processing, Test Integration, and Linting under a parent Requirements subsystem, and keeps Validation as a top-level subsystem alongside Program Orchestration and Requirements.Following a review of requirements, design documentation, and review-sets against the ContinuousCompliance guidance, the following system-level additions were made:
docs/reqstream/reqstream-system.yaml— new system-level requirements file (namedreqstream-systemas a special top-level case, deviating from theunit-*convention) with three requirements:ReqStream-Sys-FullPipeline(full pipeline processing in one invocation),ReqStream-Sys-SourceFilter(source-specific test matching), andReqStream-Sys-EnforceMode(enforcement mode exits non-zero when any requirement lacks passing test evidence). Added torequirements.yamlincludes.docs/design/system.md— new system integration design document describing the end-to-end data flow, the integrated processing pipeline, source-specific matching, self-validation flow, and inter-unit interaction table. Inserted as the second chapter of the design PDF (after introduction, before per-unit chapters) by updatingdocs/design/definition.yaml.test/DemaConsulting.ReqStream.Tests/IntegrationTests.cs— two integration tests exercising system-level scenarios:ReqStream_FullPipeline_GeneratesAllReportsAndEnforcesandReqStream_SourceFilter_MatchesTestsBySourceFile. All tests pass on net8.0/net9.0/net10.0 with zero warnings. Requirement IDs in test data use semantic style (e.g.Integration-System-DoSomethingUseful,Integration-PlatformA-SourceFilter)..reviewmark.yaml— review-sets restructured so that every review-set starts withReqStream-:ReqStream-Design-IntroductionwithReqStream-System, coveringreqstream-system.yaml,platform-requirements.yaml,introduction.md,system.md, andIntegrationTests.cs.Platform-Supportreview-set — platform requirements describe constraints on the ReqStream system itself and are now included inReqStream-System.OTS-DependencieswithReqStream-AllRequirements— a consolidated review covering alldocs/reqstream/**/*.yamlfiles together, enabling reviewers to check for contradictions and completeness across the full requirements corpus (including OTS, platform, unit, and system files).requirements.yaml— includes reordered to follow the design introduction tree (System → Program Orchestration → Command-Line Interface → Requirements File Processing → Test Integration → Linting → Validation → Platform Support → OTS Software), so the published requirements document's table of contents reflects the same hierarchy as the software structure tree.docs/reqstream/ots-reqstream.yaml— removed. ReqStream cannot be classified as OTS software of itself. The enforcement mode requirement it contained has been relocated toreqstream-system.yamlasReqStream-Sys-EnforceMode.README.mdanddocs/guide/guide.md— all example requirement IDs in YAML code blocks, output samples, and prose text updated from numeric-suffix style (e.g.SYS-SEC-001,AUTH-001,DATA-001) to semantic style (e.g.Security-CredentialAuthentication,Auth-CredentialValidation,Logging-RequestLogging), consistent with the project's own requirement ID conventions.The final review-set mapping against the software structure tree:
ReqStream-SystemReqStream-ContextReqStream-ProgramReqStream-ValidationReqStream-RequirementsReqStream-TraceMatrixReqStream-LinterReqStream-AllRequirementsdocs/reqstream/**/*.yamlfor consistency checkingType of Change
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.ReqStream --configuration Release --framework net10.0--no-build -- --validateCode Quality
dotnet format --verify-no-changesQuality Checks
Please run the following checks before submitting:
cspell "**/*.{md,cs}"markdownlint "**/*.md"yamllint .Testing
Documentation
Additional Notes
The integration tests call
Program.Run(context)directly (the same internal API used byProgramTests.cs) rather than spawning a subprocess, which keeps them fast and portable across all three target frameworks. They differ from the existingProgramTestsin that they exercise complete cross-subsystem scenarios — full report generation plus enforcement in one call, and source-specific test matching — rather than individual dispatch behaviors.The
requirements.yamlincludes order mirrors the software structure tree, so the published requirements document's table of contents flows as: System Integration → Program Orchestration → Command-Line Interface → Requirements File Processing → Test Integration → Linting → Validation → Platform Support → OTS Software.The
ReqStream-Sys-EnforceModerequirement covers the negative enforcement case (exit non-zero when a requirement is unsatisfied), complementingReqStream-Sys-FullPipelinewhich covers the positive end-to-end case.All requirement IDs used in documentation examples, user guide code blocks, and integration test data follow semantic style (descriptive names rather than numeric suffixes), consistent with the project's own requirement ID conventions. For example:
Security-CredentialAuthentication,Auth-CredentialValidation,Platform-Windows,Logging-RequestLogging.📱 Kick off Copilot coding agent tasks wherever you are with GitHub Mobile, available on iOS and Android.