From 60460dc2a384d6af03491927a56c5796e2aa7cdc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 16 Feb 2026 02:11:26 +0000 Subject: [PATCH 1/5] Initial plan From 661e0bc96a3c169f8bb7364120a1632e9906c5e4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 16 Feb 2026 02:16:46 +0000 Subject: [PATCH 2/5] chore: update .gitignore to exclude all agent reports Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com> --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index cff3fb7..41d776a 100644 --- a/.gitignore +++ b/.gitignore @@ -93,3 +93,6 @@ docs/quality/*.html # Agent reports (not to be committed) AGENT_REPORT_*.md +*REPORT*.md +*REFERENCE*.md +*CONSISTENCY*.md From 27687c187e1991c80ea149bcdac4d96c5f4fe88e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 16 Feb 2026 02:20:01 +0000 Subject: [PATCH 3/5] feat: add VersionMark support for tool version tracking in Build Notes Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com> --- .config/dotnet-tools.json | 6 +++ .github/workflows/build.yaml | 90 +++++++++++++++++++++++++++++++++ .gitignore | 4 +- .versionmark.yaml | 66 ++++++++++++++++++++++++ docs/buildnotes/definition.yaml | 1 + versionmark-test.json | 8 +++ 6 files changed, 172 insertions(+), 3 deletions(-) create mode 100644 .versionmark.yaml create mode 100644 versionmark-test.json diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index c7fb4f7..d370a8e 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -37,6 +37,12 @@ "commands": [ "buildmark" ] + }, + "demaconsulting.versionmark": { + "version": "0.1.0", + "commands": [ + "versionmark" + ] } } } \ No newline at end of file diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 89fdf12..27161c7 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -35,6 +35,28 @@ jobs: with: config_file: .yamllint.yaml + - name: Setup dotnet + uses: actions/setup-dotnet@v5 + with: + dotnet-version: 10.x + + - name: Restore Tools + run: > + dotnet tool restore + + - name: Capture tool versions + shell: bash + run: | + echo "Capturing tool versions..." + dotnet versionmark --capture --job-id "quality" -- dotnet git versionmark + echo "✓ Tool versions captured" + + - name: Upload version capture + uses: actions/upload-artifact@v6 + with: + name: version-capture-quality + path: versionmark-quality.json + build: name: Build ${{ matrix.os }} needs: quality-checks @@ -116,6 +138,23 @@ jobs: --no-restore --property:PackageVersion=${{ inputs.version }} + - name: Capture tool versions + shell: bash + run: | + echo "Capturing tool versions..." + # Create short job ID: build-win, build-ubuntu + OS_SHORT=$(echo "${{ matrix.os }}" | sed 's/windows-latest/win/;s/ubuntu-latest/ubuntu/') + JOB_ID="build-${OS_SHORT}" + dotnet versionmark --capture --job-id "${JOB_ID}" -- \ + dotnet git dotnet-sonarscanner versionmark + echo "✓ Tool versions captured" + + - name: Upload version capture + uses: actions/upload-artifact@v6 + with: + name: version-capture-${{ matrix.os }} + path: versionmark-build-*.json + - name: Upload Test Results uses: actions/upload-artifact@v6 with: @@ -197,6 +236,13 @@ jobs: dotnet-version: ['8.x', '9.x', '10.x'] steps: + - name: Checkout + uses: actions/checkout@v6 + with: + sparse-checkout: | + .versionmark.yaml + .config/dotnet-tools.json + - name: Download package uses: actions/download-artifact@v7 with: @@ -208,6 +254,10 @@ jobs: with: dotnet-version: ${{ matrix.dotnet-version }} + - name: Restore Tools + run: > + dotnet tool restore + - name: Install tool from package shell: bash run: | @@ -239,6 +289,17 @@ jobs: || { echo "✗ Self-validation failed"; exit 1; } echo "✓ Self-validation succeeded" + - name: Capture tool versions + shell: bash + run: | + echo "Capturing tool versions..." + # Create short job ID: int-win-8, int-win-9, int-ubuntu-8, etc. + OS_SHORT=$(echo "${{ matrix.os }}" | sed 's/windows-latest/win/;s/ubuntu-latest/ubuntu/') + DOTNET_SHORT=$(echo "${{ matrix.dotnet-version }}" | sed 's/\.x$//') + JOB_ID="int-${OS_SHORT}-${DOTNET_SHORT}" + dotnet versionmark --capture --job-id "${JOB_ID}" -- dotnet git versionmark + echo "✓ Tool versions captured" + - name: Upload integration test results if: always() uses: actions/upload-artifact@v6 @@ -301,6 +362,35 @@ jobs: - name: Restore Tools run: dotnet tool restore + - name: Download all version captures + uses: actions/download-artifact@v7 + with: + path: version-captures + pattern: 'version-capture-*' + continue-on-error: true + + - name: Capture tool versions for build-docs + shell: bash + run: | + echo "Capturing tool versions..." + dotnet versionmark --capture --job-id "build-docs" -- \ + dotnet git node npm pandoc weasyprint sarifmark sonarmark reqstream buildmark versionmark + echo "✓ Tool versions captured" + + - name: Publish Tool Versions + shell: bash + run: | + echo "Publishing tool versions..." + dotnet versionmark --publish --report docs/buildnotes/versions.md --report-depth 1 \ + -- "versionmark-*.json" "version-captures/**/versionmark-*.json" + echo "✓ Tool versions published" + + - name: Display Tool Versions Report + shell: bash + run: | + echo "=== Tool Versions Report ===" + cat docs/buildnotes/versions.md + - name: Generate Requirements Report, Justifications, and Trace Matrix run: > dotnet reqstream diff --git a/.gitignore b/.gitignore index 41d776a..605b420 100644 --- a/.gitignore +++ b/.gitignore @@ -90,9 +90,7 @@ docs/tracematrix/*.html docs/quality/sonar-quality.md docs/quality/codeql-quality.md docs/quality/*.html +docs/buildnotes/versions.md # Agent reports (not to be committed) AGENT_REPORT_*.md -*REPORT*.md -*REFERENCE*.md -*CONSISTENCY*.md diff --git a/.versionmark.yaml b/.versionmark.yaml new file mode 100644 index 0000000..b67756a --- /dev/null +++ b/.versionmark.yaml @@ -0,0 +1,66 @@ +--- +# VersionMark Configuration File +# This file defines which tools to capture and how to extract their version information. + +tools: + # .NET SDK + # Note: .NET SDK versions include up to 4 components (e.g., 10.0.102, 8.0.404) + dotnet: + command: dotnet --version + regex: '(?\d+\.\d+\.\d+(?:\.\d+)?)' + + # Git + git: + command: git --version + regex: '(?i)git version (?\d+\.\d+\.\d+)' + + # Node.js + node: + command: node --version + regex: '(?i)v(?\d+\.\d+\.\d+)' + + # npm + npm: + command: npm --version + regex: '(?\d+\.\d+\.\d+)' + + # SonarScanner for .NET (from dotnet tool list) + dotnet-sonarscanner: + command: dotnet tool list + regex: '(?i)dotnet-sonarscanner\s+(?\d+\.\d+\.\d+)' + + # Pandoc (DemaConsulting.PandocTool from dotnet tool list) + pandoc: + command: dotnet tool list + regex: '(?i)demaconsulting\.pandoctool\s+(?\d+\.\d+\.\d+)' + + # WeasyPrint (DemaConsulting.WeasyPrintTool from dotnet tool list) + weasyprint: + command: dotnet tool list + regex: '(?i)demaconsulting\.weasyprinttool\s+(?\d+\.\d+\.\d+)' + + # SonarMark (DemaConsulting.SonarMark from dotnet tool list) + sonarmark: + command: dotnet tool list + regex: '(?i)demaconsulting\.sonarmark\s+(?\d+\.\d+\.\d+)' + + # ReqStream (DemaConsulting.ReqStream from dotnet tool list) + reqstream: + command: dotnet tool list + regex: '(?i)demaconsulting\.reqstream\s+(?\d+\.\d+\.\d+)' + + # BuildMark (DemaConsulting.BuildMark from dotnet tool list) + buildmark: + command: dotnet tool list + regex: '(?i)demaconsulting\.buildmark\s+(?\d+\.\d+\.\d+)' + + # SarifMark (DemaConsulting.SarifMark from dotnet tool list --global) + # Note: SarifMark is installed globally in integration-test and build-docs jobs + sarifmark: + command: dotnet tool list --global + regex: '(?i)demaconsulting\.sarifmark\s+(?\d+\.\d+\.\d+)' + + # VersionMark (DemaConsulting.VersionMark from dotnet tool list) + versionmark: + command: dotnet tool list + regex: '(?i)demaconsulting\.versionmark\s+(?\d+\.\d+\.\d+)' diff --git a/docs/buildnotes/definition.yaml b/docs/buildnotes/definition.yaml index d93a4ba..7eb0c4c 100644 --- a/docs/buildnotes/definition.yaml +++ b/docs/buildnotes/definition.yaml @@ -7,6 +7,7 @@ input-files: - docs/buildnotes/title.txt - docs/buildnotes/introduction.md - docs/buildnotes.md + - docs/buildnotes/versions.md template: template.html diff --git a/versionmark-test.json b/versionmark-test.json new file mode 100644 index 0000000..b80c961 --- /dev/null +++ b/versionmark-test.json @@ -0,0 +1,8 @@ +{ + "JobId": "test", + "Versions": { + "dotnet": "10.0.102", + "git": "2.52.0", + "versionmark": "0.1.0" + } +} \ No newline at end of file From 122b9502985adcfdb2e03057e0b9a72b01729d64 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 16 Feb 2026 02:22:52 +0000 Subject: [PATCH 4/5] Align VersionMark implementation with template MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Reorder quality-checks job steps to match template pattern (Setup dotnet → Restore Tools → Capture versions → Quality checks) - Add missing 'Upload version capture' step to integration-test job - Ensure all jobs follow template's version capture patterns - Maintain special handling for sarifmark using 'dotnet tool list --global' Changes align with TemplateDotNetTool commit 25407e9ff3df415a1ac846f7b17d43b50c0e4ddf --- .github/workflows/build.yaml | 38 +++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 27161c7..6d88133 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -19,22 +19,6 @@ jobs: - name: Checkout uses: actions/checkout@v6 - - name: Run markdown linter - uses: DavidAnson/markdownlint-cli2-action@v22 - with: - globs: '**/*.md' - - - name: Run spell checker - uses: streetsidesoftware/cspell-action@v8 - with: - files: '**/*.{md,cs}' - incremental_files_only: false - - - name: Run YAML linter - uses: ibiqlik/action-yamllint@v3 - with: - config_file: .yamllint.yaml - - name: Setup dotnet uses: actions/setup-dotnet@v5 with: @@ -57,6 +41,22 @@ jobs: name: version-capture-quality path: versionmark-quality.json + - name: Run markdown linter + uses: DavidAnson/markdownlint-cli2-action@v22 + with: + globs: '**/*.md' + + - name: Run spell checker + uses: streetsidesoftware/cspell-action@v8 + with: + files: '**/*.{md,cs}' + incremental_files_only: false + + - name: Run YAML linter + uses: ibiqlik/action-yamllint@v3 + with: + config_file: .yamllint.yaml + build: name: Build ${{ matrix.os }} needs: quality-checks @@ -300,6 +300,12 @@ jobs: dotnet versionmark --capture --job-id "${JOB_ID}" -- dotnet git versionmark echo "✓ Tool versions captured" + - name: Upload version capture + uses: actions/upload-artifact@v6 + with: + name: version-capture-${{ matrix.os }}-dotnet${{ matrix.dotnet-version }} + path: versionmark-int-*.json + - name: Upload integration test results if: always() uses: actions/upload-artifact@v6 From e7940bfe6641850d68c92009c027874a10d7ab5d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 16 Feb 2026 02:24:19 +0000 Subject: [PATCH 5/5] chore: remove test artifact file Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com> --- versionmark-test.json | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 versionmark-test.json diff --git a/versionmark-test.json b/versionmark-test.json deleted file mode 100644 index b80c961..0000000 --- a/versionmark-test.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "JobId": "test", - "Versions": { - "dotnet": "10.0.102", - "git": "2.52.0", - "versionmark": "0.1.0" - } -} \ No newline at end of file