Add OTS Software Requirements section to requirements.yaml#28
Add OTS Software Requirements section to requirements.yaml#28Malcolmnixon merged 13 commits intomainfrom
Conversation
Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
|
@copilot Please fix all the comments |
|
@copilot Please try fixing the comments again |
Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Done in 557d5d9. All review comments addressed:
|
|
@copilot I'm not actually seeing anything that runs the self-validation of the OTS Software tools and save the TRX results so the requirements would be satisfied - you may want to add the self-validation execution immediately after capturing the versionmark information - possibly even with a nice comment (like the build-docs comments) describing that it's capturing the version information and self-validation data. |
Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Added in 4c9d2a3. A new "CAPTURE OTS SELF-VALIDATION RESULTS" section is inserted in the |
…n to build job; move self-validation TRX to test-results/ Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
.github/workflows/build.yaml
Outdated
| run: > | ||
| dotnet versionmark | ||
| --validate | ||
| --results test-results/versionmark-self-validation.trx |
There was a problem hiding this comment.
hmm... I think this needs the job-name and matrix.os in the file name, otherwise the trx results from all jobs will just overwrite - there should be multiple "versionmark-self-validation.trx" files side-by-side so they all contribute to validation-evidence.
There was a problem hiding this comment.
Fixed in fb9bdff — the filename is now versionmark-self-validation-${{ matrix.os }}.trx, producing distinct files (versionmark-self-validation-windows-latest.trx and versionmark-self-validation-ubuntu-latest.trx) that both contribute as validation evidence without overwriting each other.
…d overwrite across build matrix jobs Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
|
@copilot The build.yaml is creating a few too many different artifacts. I think it'd be cleaner to combine the build-job test-results (both unit and validation) and the verison-capture files into a single artifact. I think what we may want is:
That would require updating the release.yaml to download the correct artifacts. |
…tly to build-artifacts/ Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Done in 46e8849 — the "Assemble build artifacts" step is removed:
|
…tion to quality-checks Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
…update sarifmark path Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
…rtifacts/csharp.sarif Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
…ture sections to after Restore Tools Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Pull Request
Description
Adds traceability for the off-the-shelf tools used in the project's build and documentation pipeline. Each tool gets an
ots-tagged requirement linked to self-validation test results as evidence, ensuring the trace matrix demonstrates OTS software was validated at time of use.Five OTS requirements added:
Template-OTS-MSTestTemplate-OTS-ReqStream--enforceReqStream_EnforcementModeTemplate-OTS-BuildMarkBuildMark_MarkdownReportGenerationTemplate-OTS-VersionMarkVersionMark_CapturesVersions,VersionMark_GeneratesMarkdownReportTemplate-OTS-SarifMarkSarifMark_SarifReading,SarifMark_MarkdownReportGenerationTemplate-OTS-SonarMarkSonarMark_QualityGateRetrieval,SonarMark_IssuesRetrieval,SonarMark_HotSpotsRetrieval,SonarMark_MarkdownReportGenerationRequirements not included:
coverlet.collector— evidence chain is too weak to reliably prove it worksDemaConsulting.PandocToolandDemaConsulting.WeasyPrintTool— no self-validation results available to prove they workAlso includes:
DemaConsulting.ReqStreamto 1.4.0 in.config/dotnet-tools.jsonto enable theReqStream_EnforcementModeself-validation test.quality-checks,build,codeql,build-docs) share a standardizedartifacts/folder convention and follow a consistent four-section structure with section comments:# === INSTALL DEPENDENCIES ===— install/restore tools and dependencies# === CAPTURE TOOL VERSIONS ===/# === CAPTURE OTS SELF-VALIDATION RESULTS ===— capture version and validation evidence before use# === RUN QUALITY CHECKS ===,# === BUILD AND TEST ===,# === BUILD AND ANALYZE ===,# === GENERATE DOCUMENTATION ===)# === UPLOAD ARTIFACTS ===— archive results at the endquality-checksjob creates theartifacts/folder as its first capture step, captures VersionMark tool versions toartifacts/versionmark-quality.json, runs VersionMark self-validation toartifacts/versionmark-self-validation-quality.trx, then runs quality checks, and uploads theartifacts/folder asartifacts-qualityat the end.buildjob creates theartifacts/folder and runs the capture sections right after restoring tools (before running tests).dotnet testresults are written directly toartifacts/via--results-directory artifacts, VersionMark versions are captured toartifacts/versionmark-${JOB_ID}.jsonvia--output, and VersionMark self-validation writes toartifacts/versionmark-self-validation-${{ matrix.os }}.trx. All are uploaded asartifacts-build-${{ matrix.os }}at the end. NuGet packages are uploaded separately aspackages-${{ matrix.os }}.codeqljob outputs the SARIF analysis results directly toartifacts/and uploads them asartifacts-codeqlat the end.build-docsjob downloads allartifacts-*artifacts (includingartifacts-codeql) into a single flatartifacts/folder via the "Download all job artifacts" step (usingmerge-multiple: true), captures its own tool versions toartifacts/versionmark-build-docs.json, runs all five OTS tool self-validations (ReqStream, BuildMark, VersionMark, SarifMark, SonarMark) writing TRX files toartifacts/, andreqstream --enforcesearchesartifacts/**/*.trxfor all evidence.versionmark --publishreads fromartifacts/**/versionmark-*.json.sarifmarkreads the SARIF file fromartifacts/csharp.sarif.release.yamlto downloadpackages-ubuntu-latest(renamed fromartifacts-ubuntu-latest).Type 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 ReleaseCode Quality
dotnet format --verify-no-changesQuality Checks
Please run the following checks before submitting:
cspell "**/*.{md,cs}"markdownlint "**/*.md"yamllint .Testing
Documentation
Additional Notes
Changes span
requirements.yaml(OTS requirements),.config/dotnet-tools.json(ReqStream version bump to 1.4.0),.github/workflows/build.yaml(standardizedartifacts/folder convention and four-section job structure with section comments across all four jobs, OTS self-validation execution inquality-checks,build, andbuild-docs, CodeQL SARIF routed throughartifacts-codeql,merge-multiple: trueon the artifact download step so all artifacts land flat inartifacts/, tool version capture and OTS self-validation at the top of each job right after restoring tools, artifact uploads moved to the end of each job, and consolidated artifact structure with no intermediate assembly steps), and.github/workflows/release.yaml(updated artifact name). Every job writes all outputs directly to a localartifacts/folder without any copy steps, keeping the pipeline clean and consistent.yamllintvalidates cleanly against all updated files.Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.