From 49dcabb7dee95db386e4208c893e6d77f3e08b40 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 27 Dec 2025 16:31:07 +0000 Subject: [PATCH 1/4] Initial plan From a93b35cf8659c981cb89cc0c0159133f95b60380 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 27 Dec 2025 16:35:51 +0000 Subject: [PATCH 2/4] Improve quality checks with updated linters and configuration Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com> --- .cspell.json | 3 ++- .github/ISSUE_TEMPLATE/bug_report.yml | 3 ++- .github/agents/README.md | 6 +++++ .github/workflows/build_on_push.yaml | 22 ++++++++-------- .markdownlint.json | 13 +++------- .yamllint.yaml | 37 +++++++++++++++++++++++++++ 6 files changed, 60 insertions(+), 24 deletions(-) create mode 100644 .yamllint.yaml diff --git a/.cspell.json b/.cspell.json index bd2dfb9..fcd61c1 100644 --- a/.cspell.json +++ b/.cspell.json @@ -31,7 +31,8 @@ "triaging", "trx", "vbproj", - "vcxproj" + "vcxproj", + "yamllint" ], "ignorePaths": [ "node_modules", diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 0bba6aa..d4be6cd 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -7,7 +7,8 @@ body: - type: markdown attributes: value: | - Thanks for taking the time to report a bug! Please fill out the sections below to help us understand and fix the issue. + Thanks for taking the time to report a bug! Please fill out the sections below to help us understand and + fix the issue. - type: textarea id: description diff --git a/.github/agents/README.md b/.github/agents/README.md index 0b5ca0b..12266b3 100644 --- a/.github/agents/README.md +++ b/.github/agents/README.md @@ -10,12 +10,14 @@ These agents have specialized roles and expertise to help maintain and improve t **Role**: Expert technical writer for documentation maintenance **Specialties**: + - Maintaining README, ARCHITECTURE, and other markdown files - Writing XML documentation comments for C# APIs - Ensuring documentation accuracy and clarity - Following markdown and spelling standards **When to Use**: + - Adding or updating documentation - Improving code comments - Creating usage examples @@ -28,12 +30,14 @@ These agents have specialized roles and expertise to help maintain and improve t **Role**: Code quality specialist ensuring high standards **Specialties**: + - Enforcing testing standards and code coverage - Running static analysis and linting - Code review and quality gates - Ensuring zero-warning builds **When to Use**: + - Reviewing code changes - Improving test coverage - Fixing quality issues @@ -46,6 +50,7 @@ These agents have specialized roles and expertise to help maintain and improve t **Role**: Project maintenance and improvement specialist **Specialties**: + - Managing dependencies and Dependabot PRs - Triaging and organizing issues - Identifying improvement opportunities @@ -53,6 +58,7 @@ These agents have specialized roles and expertise to help maintain and improve t - Weekly maintenance tasks **When to Use**: + - Weekly project health checks - Issue triage and prioritization - Planning enhancements diff --git a/.github/workflows/build_on_push.yaml b/.github/workflows/build_on_push.yaml index 91e5846..a81c0eb 100644 --- a/.github/workflows/build_on_push.yaml +++ b/.github/workflows/build_on_push.yaml @@ -17,22 +17,20 @@ jobs: - name: Checkout uses: actions/checkout@v6 - - name: Setup Node.js - uses: actions/setup-node@v6 + - name: Run markdown linter + uses: DavidAnson/markdownlint-cli2-action@v22 with: - node-version: '20' - - - name: Install cspell - run: npm install -g cspell - - - name: Install markdownlint-cli - run: npm install -g markdownlint-cli + globs: '**/*.md' - name: Run spell checker - run: cspell "**/*.{md,cs}" --no-progress + uses: streetsidesoftware/cspell-action@v8 + with: + files: '**/*.{md,cs}' - - name: Run markdown linter - run: markdownlint "**/*.md" --ignore node_modules + - name: Run YAML linter + uses: ibiqlik/action-yamllint@v3 + with: + config_file: .yamllint.yaml build-windows: name: Build Windows diff --git a/.markdownlint.json b/.markdownlint.json index 18afdd8..e3884ab 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -1,15 +1,8 @@ { "default": true, - "MD013": { - "line_length": 120, - "heading_line_length": 120, - "code_block_line_length": 120, - "code_blocks": true, - "tables": false, - "headings": true, - "strict": false, - "stern": false - }, + "MD003": { "style": "atx" }, + "MD007": { "indent": 2 }, + "MD013": { "line_length": 120 }, "MD033": false, "MD041": false } diff --git a/.yamllint.yaml b/.yamllint.yaml new file mode 100644 index 0000000..abd581d --- /dev/null +++ b/.yamllint.yaml @@ -0,0 +1,37 @@ +--- +# yamllint configuration for TestResults +# This configuration defines the rules for YAML file linting + +extends: default + +rules: + # Allow 'on:' in GitHub Actions workflows (not a boolean value) + truthy: + allowed-values: ['true', 'false', 'on', 'off'] + check-keys: true + + # Allow longer lines for URLs and complex expressions + line-length: + max: 120 + level: error + + # Ensure proper indentation + indentation: + spaces: 2 + indent-sequences: true + + # Ensure proper comment formatting + comments: + min-spaces-from-content: 2 + + # Document start is optional + document-start: disable + + # Allow trailing spaces + trailing-spaces: disable + + # Allow comments at various indentation levels + comments-indentation: disable + +ignore: | + spdx-workflow.yaml From 70132ad32f08c037200a349a134fb33972152c79 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 27 Dec 2025 16:37:08 +0000 Subject: [PATCH 3/4] Add comment explaining yamllint ignore rule Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com> --- .yamllint.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.yamllint.yaml b/.yamllint.yaml index abd581d..dd27c35 100644 --- a/.yamllint.yaml +++ b/.yamllint.yaml @@ -33,5 +33,6 @@ rules: # Allow comments at various indentation levels comments-indentation: disable +# Ignore spdx-workflow.yaml as it's not a standard YAML workflow but a custom workflow format ignore: | spdx-workflow.yaml From a6831373345b300b05d013a7c27e4cfeadbc3c9c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 27 Dec 2025 16:43:07 +0000 Subject: [PATCH 4/4] Fix yamllint configuration and format all YAML files Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/bug_report.yml | 6 +- .github/dependabot.yml | 2 +- .github/workflows/weekly-maintenance.yml | 2 +- .yamllint.yaml | 13 -- spdx-workflow.yaml | 175 ++++++++++++----------- 5 files changed, 93 insertions(+), 105 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index d4be6cd..a007c44 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -29,9 +29,9 @@ body: 2. Call method '...' 3. Observe error... value: | - 1. - 2. - 3. + 1. + 2. + 3. validations: required: true diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 783b7ed..8f594c5 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -11,7 +11,7 @@ updates: nuget-dependencies: patterns: - "*" - + # Maintain dependencies for GitHub Actions - package-ecosystem: "github-actions" directory: "/" diff --git a/.github/workflows/weekly-maintenance.yml b/.github/workflows/weekly-maintenance.yml index 9679e57..dc03863 100644 --- a/.github/workflows/weekly-maintenance.yml +++ b/.github/workflows/weekly-maintenance.yml @@ -18,7 +18,7 @@ permissions: jobs: maintenance: runs-on: ubuntu-latest - + steps: - name: Checkout uses: actions/checkout@v6 diff --git a/.yamllint.yaml b/.yamllint.yaml index dd27c35..70eb5ab 100644 --- a/.yamllint.yaml +++ b/.yamllint.yaml @@ -23,16 +23,3 @@ rules: # Ensure proper comment formatting comments: min-spaces-from-content: 2 - - # Document start is optional - document-start: disable - - # Allow trailing spaces - trailing-spaces: disable - - # Allow comments at various indentation levels - comments-indentation: disable - -# Ignore spdx-workflow.yaml as it's not a standard YAML workflow but a custom workflow format -ignore: | - spdx-workflow.yaml diff --git a/spdx-workflow.yaml b/spdx-workflow.yaml index 694f999..869f8fc 100644 --- a/spdx-workflow.yaml +++ b/spdx-workflow.yaml @@ -1,3 +1,4 @@ +--- # This workflow annotates the SBOM for the DemaConsulting.TestResults with # build tools, and generates a summary markdown. @@ -14,116 +15,116 @@ parameters: steps: # Get the version of the TestResults package -- command: get-version - inputs: - output: version - spdx: ${{ test-results-spdx }} - name: DemaConsulting.TestResults + - command: get-version + inputs: + output: version + spdx: ${{ test-results-spdx }} + name: DemaConsulting.TestResults # Rename the package ID for TestResults -- command: rename-id - displayName: Rename TestResults Package ID - inputs: - spdx: ${{ test-results-spdx }} - old: SPDXRef-RootPackage - new: SPDXRef-Package-DemaConsulting-TestResults-${{ version }} + - command: rename-id + displayName: Rename TestResults Package ID + inputs: + spdx: ${{ test-results-spdx }} + old: SPDXRef-RootPackage + new: SPDXRef-Package-DemaConsulting-TestResults-${{ version }} # Query for DotNet version -- command: run-workflow - displayName: Query DotNet Version - inputs: - url: https://raw.githubusercontent.com/demaconsulting/SpdxWorkflows/main/GetDotNetVersion.yaml - outputs: - version: dotnet-version + - command: run-workflow + displayName: Query DotNet Version + inputs: + url: https://raw.githubusercontent.com/demaconsulting/SpdxWorkflows/main/GetDotNetVersion.yaml + outputs: + version: dotnet-version # Add DotNet package -- command: run-workflow - displayName: Add DotNet Package ${{ dotnet-version }} - inputs: - url: https://raw.githubusercontent.com/demaconsulting/SpdxWorkflows/main/AddDotNetPackage.yaml - parameters: - spdx: ${{ test-results-spdx }} - id: SPDXRef-Package-DotNet-${{ dotnet-version }} - version: ${{ dotnet-version }} + - command: run-workflow + displayName: Add DotNet Package ${{ dotnet-version }} + inputs: + url: https://raw.githubusercontent.com/demaconsulting/SpdxWorkflows/main/AddDotNetPackage.yaml + parameters: + spdx: ${{ test-results-spdx }} + id: SPDXRef-Package-DotNet-${{ dotnet-version }} + version: ${{ dotnet-version }} # Add DotNet relationships -- command: add-relationship - displayName: Add DotNet Relationships - inputs: - spdx: ${{ test-results-spdx }} - id: SPDXRef-Package-DotNet-${{ dotnet-version }} - relationships: - - type: BUILD_TOOL_OF - element: SPDXRef-Package-DemaConsulting-TestResults-${{ version }} - comment: DemaConsulting.TestResults compiled by DotNet ${{ dotnet-version }} + - command: add-relationship + displayName: Add DotNet Relationships + inputs: + spdx: ${{ test-results-spdx }} + id: SPDXRef-Package-DotNet-${{ dotnet-version }} + relationships: + - type: BUILD_TOOL_OF + element: SPDXRef-Package-DemaConsulting-TestResults-${{ version }} + comment: DemaConsulting.TestResults compiled by DotNet ${{ dotnet-version }} # Update the Sha256 digest on the TestResults SBOM -- command: hash - displayName: Update TestResults SBOM Sha256 - inputs: - operation: generate - algorithm: sha256 - file: ${{ test-results-spdx }} + - command: hash + displayName: Update TestResults SBOM Sha256 + inputs: + operation: generate + algorithm: sha256 + file: ${{ test-results-spdx }} # Validate the TestResults SBOM -- command: validate - displayName: Validate TestResults SBOM Sha256 - inputs: - spdx: ${{ test-results-spdx }} + - command: validate + displayName: Validate TestResults SBOM Sha256 + inputs: + spdx: ${{ test-results-spdx }} # Generate the TestResults summary -- command: to-markdown - displayName: Generate TestResults SBOM summary - inputs: - spdx: ${{ test-results-spdx }} - markdown: ${{ test-results-md }} + - command: to-markdown + displayName: Generate TestResults SBOM summary + inputs: + spdx: ${{ test-results-spdx }} + markdown: ${{ test-results-md }} # Rename the package ID for TestResults.Tests -- command: rename-id - displayName: Rename TestResults.Tests Package ID - inputs: - spdx: ${{ test-results-tests-spdx }} - old: SPDXRef-RootPackage - new: SPDXRef-Package-DemaConsulting-TestResults-Tests-${{ version }} + - command: rename-id + displayName: Rename TestResults.Tests Package ID + inputs: + spdx: ${{ test-results-tests-spdx }} + old: SPDXRef-RootPackage + new: SPDXRef-Package-DemaConsulting-TestResults-Tests-${{ version }} # Add DotNet package -- command: run-workflow - displayName: Add DotNet Package ${{ dotnet-version }} - inputs: - url: https://raw.githubusercontent.com/demaconsulting/SpdxWorkflows/main/AddDotNetPackage.yaml - parameters: - spdx: ${{ test-results-tests-spdx }} - id: SPDXRef-Package-DotNet-${{ dotnet-version }} - version: ${{ dotnet-version }} + - command: run-workflow + displayName: Add DotNet Package ${{ dotnet-version }} + inputs: + url: https://raw.githubusercontent.com/demaconsulting/SpdxWorkflows/main/AddDotNetPackage.yaml + parameters: + spdx: ${{ test-results-tests-spdx }} + id: SPDXRef-Package-DotNet-${{ dotnet-version }} + version: ${{ dotnet-version }} # Add DotNet relationships -- command: add-relationship - displayName: Add DotNet Relationships - inputs: - spdx: ${{ test-results-tests-spdx }} - id: SPDXRef-Package-DotNet-${{ dotnet-version }} - relationships: - - type: BUILD_TOOL_OF - element: SPDXRef-Package-DemaConsulting-TestResults-Tests-${{ version }} - comment: DemaConsulting.TestResults.Tests compiled by DotNet ${{ dotnet-version }} + - command: add-relationship + displayName: Add DotNet Relationships + inputs: + spdx: ${{ test-results-tests-spdx }} + id: SPDXRef-Package-DotNet-${{ dotnet-version }} + relationships: + - type: BUILD_TOOL_OF + element: SPDXRef-Package-DemaConsulting-TestResults-Tests-${{ version }} + comment: DemaConsulting.TestResults.Tests compiled by DotNet ${{ dotnet-version }} # Update the Sha256 digest on the TestResults.Tests SBOM -- command: hash - displayName: Update TestResults.Tests SBOM Sha256 - inputs: - operation: generate - algorithm: sha256 - file: ${{ test-results-tests-spdx }} + - command: hash + displayName: Update TestResults.Tests SBOM Sha256 + inputs: + operation: generate + algorithm: sha256 + file: ${{ test-results-tests-spdx }} # Validate the TestResults.Tests SBOM -- command: validate - displayName: Validate TestResults.Tests SBOM Sha256 - inputs: - spdx: ${{ test-results-tests-spdx }} + - command: validate + displayName: Validate TestResults.Tests SBOM Sha256 + inputs: + spdx: ${{ test-results-tests-spdx }} # Generate the TestResults.Tests summary -- command: to-markdown - displayName: Generate TestResults.Tests SBOM summary - inputs: - spdx: ${{ test-results-tests-spdx }} - markdown: ${{ test-results-tests-md }} + - command: to-markdown + displayName: Generate TestResults.Tests SBOM summary + inputs: + spdx: ${{ test-results-tests-spdx }} + markdown: ${{ test-results-tests-md }}