Apply TemplateDotNetTool template updates: staged pipelines, artifact consolidation, semantic requirement IDs, and OTS Software requirements#120
Conversation
…tion, artifact-naming, OTS requirements Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Malcolmnixon
left a comment
There was a problem hiding this comment.
I think you may have missed numerous template changes - please review the recent template PRs and apply them all - that includes things like updating the requirement IDs from numeric to semantic - but I believe there are numerous other changes that weren't applied.
…j grouping, encoding fixes, CLA Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Applied all missed template changes in commit Template PR #50 – Semantic requirement IDs & encoding fixes
Template PR #48 – stderr for errors + AutoFlush
Template PR #47 – csproj package grouping
Template PR #41 (missed from PR #113) – LangVersion
Template PR #39 – CLA sentence
All 132 unit tests pass, 0 build warnings, 0 CodeQL alerts. |
Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
|
@copilot Something happened to the Windows build - it's failing 100% of the time on Net 8/9/10: It's not a collision with the tests running on the other multitarget executions, because they do have different GUIDs - it's like this thing is failing to release a file resource. |
…s_Fails on Windows Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
... Fixed in commit |
Malcolmnixon
left a comment
There was a problem hiding this comment.
Something happened to the Windows
Pull Request
Description
Ports all recent improvements from the TemplateDotNetTool template into ReqStream, covering CI workflow restructuring, artifact naming conventions, OTS Software requirements, semantic requirement IDs, stderr error output, csproj packaging organisation, and minor documentation accuracy fixes. Also fixes a Windows-specific file lock bug introduced by the
AutoFlushlog writer change..github/workflows/build.yaml(Template PR #52)All jobs now follow four consistent sections with
# === SECTION ===comments:quality-checks: version capture writes toartifacts/; VersionMark self-validation added; upload renamed toartifacts-qualitybuild: version capture moved before build/test; test results written toartifacts/viaLogFilePrefix+--results-directory; VersionMark self-validation added; uploads split intoartifacts-build-${{ matrix.os }}(all build outputs) andpackages-${{ matrix.os }}(NuGet only)codeql: CodeQL SARIF output routed directly toartifacts/; uploaded asartifacts-codeqlintegration-test: version capture moved before tests; self-validation TRX written toartifacts/; two separate uploads consolidated into singleartifacts-validation-${{ matrix.os }}-dotnet${{ matrix.dotnet-version }}build-docs: four separate artifact downloads collapsed into one withpattern: 'artifacts-*'+merge-multiple: true;packages-ubuntu-latestdownloaded separately topackages/; adds five OTS self-validation steps (ReqStream, BuildMark, VersionMark, SarifMark, SonarMark); all paths updated toartifacts/requirements.yaml— Semantic requirement IDs (Template PR #50)All 38 requirement IDs renamed from opaque numeric format (
CLI-001,REQ-001,PLT-001…) to self-documenting semantic format (ReqStream-Cmd-Cli,ReqStream-Req-YamlProcessing,ReqStream-Plt-Windows…) following theReqStream-[Section]-[Description]convention with short 3-4 character section names.Three new CLI requirements added (Template PR #48):
ReqStream-Cmd-ErrorOutput,ReqStream-Cmd-InvalidArgs, andReqStream-Cmd-ExitCode.New
OTS Softwaresection with sixots-tagged requirements —ReqStream-OTS-MSTest,ReqStream-OTS-ReqStream,ReqStream-OTS-BuildMark,ReqStream-OTS-VersionMark,ReqStream-OTS-SarifMark,ReqStream-OTS-SonarMark— each linked to self-validation TRX evidence.Context.cs/Program.cs— stderr for errors (Template PR #48)Context.WriteError()now writes toConsole.Errorinstead ofConsole.OutProgram.Maincatch blocks now write toConsole.ErrorStreamWriteropened withAutoFlush = trueContext_WriteError_*tests updated to captureConsole.Error;Program_Run_WithEnforcementAndUnsatisfiedRequirements_Failsupdated to use an explicitusingblock so the context (and logStreamWriter) is disposed before reading the log file, fixing a Windows file-lockIOExceptionDemaConsulting.ReqStream.csproj— package grouping (Template PR #47)Reorganised into three labeled
ItemGroups: Runtime Dependencies, Build Tool Dependencies, and Code Analysis Dependencies.Polyfillmoved to Build Tool Dependencies with simplifiedPrivateAssets="All"inline form.DemaConsulting.ReqStream.Tests.csproj— LangVersion (Template PR #41)LangVersionupdated from12tolatest(missed in the previous sync).Documentation fixes (Template PRs #39, #50)
README.md: CLA sentence added to License sectionAGENTS.md: encoding description corrected fromUTF-8+BOM→UTF-8CONTRIBUTING.md: encoding description corrected fromUTF-8 with BOM→UTF-8Type 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.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
artifacts/folder convention ensures every CI job writes all outputs to a single local directory without intermediate copy steps, keeping download/publish steps simple and consistent. Thebuild-docsjob downloadspackages-ubuntu-latestto a separatepackages/folder and installs ReqStream via--add-source packages, consistent with theintegration-testjob pattern. Requirement ID changes inrequirements.yamldo not affect test result matching — only the requirement IDs change, not the linked test names. The Windows file-lock fix ensuresProgram_Run_WithEnforcementAndUnsatisfiedRequirements_Failsdisposes theContext(closing the logStreamWriter) before callingFile.ReadAllText— this was silently succeeding on Linux but failing withIOExceptionon Windows. All 132 unit tests pass with 0 build warnings and 0 CodeQL alerts.🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.