Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 82 additions & 0 deletions .github/ISSUE_TEMPLATE/question.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
---
name: ❓ Question / Help
description: Ask a usage question or get help with the SpdxModel
title: "[Question]: "
labels: ["question"]
assignees: []
body:
- type: markdown
attributes:
value: |
Thanks for reaching out! Please fill out the sections below so we can help you as quickly as possible.
For general discussion, you can also use
[GitHub Discussions](https://github.com/demaconsulting/SpdxModel/discussions).

- type: textarea
id: question
attributes:
label: Question
description: A clear and concise description of what you need help with.
placeholder: What would you like to know or understand?
validations:
required: true

- type: textarea
id: what-tried
attributes:
label: What Have You Tried?
description: Describe what you have already attempted, including any code or configuration you have used.
placeholder: |
```csharp
// Your code here
```
render: csharp

- type: textarea
id: expected
attributes:
label: Expected Outcome
description: A clear and concise description of what you expected to happen or what you are trying to achieve.
placeholder: Describe the outcome you are looking for...
validations:
required: true

- type: input
id: version
attributes:
label: Library Version
description: What version of DemaConsulting.SpdxModel are you using?
placeholder: e.g., 1.0.0
validations:
required: true

- type: dropdown
id: dotnet-version
attributes:
label: .NET Version
description: What version of .NET are you using?
options:
- ".NET 8"
- ".NET 9"
- ".NET 10"
- Other (please specify in additional context)
validations:
required: true

- type: textarea
id: additional-context
attributes:
label: Additional Context
description: Add any other context, screenshots, or links that may help answer your question.
placeholder: Any additional information...

- type: checkboxes
id: checklist
attributes:
label: Checklist
description: Please confirm the following
options:
- label: I have searched existing issues and discussions to ensure this has not been answered before
required: true
- label: I have provided a clear description of my question
required: true
7 changes: 4 additions & 3 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ jobs:

strategy:
matrix:
os: [windows-latest, ubuntu-latest]
os: [windows-latest, ubuntu-latest, macos-latest]

runs-on: ${{ matrix.os }}

Expand Down Expand Up @@ -137,8 +137,8 @@ jobs:
run: |
mkdir -p artifacts
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/')
# Create short job ID: build-windows, build-ubuntu, build-macos
OS_SHORT=$(echo "${{ matrix.os }}" | sed 's/-latest//')
JOB_ID="build-${OS_SHORT}"
dotnet versionmark --capture --job-id "${JOB_ID}" \
--output "artifacts/versionmark-${JOB_ID}.json" -- \
Expand Down Expand Up @@ -252,6 +252,7 @@ jobs:
uses: github/codeql-action/init@v4
with:
languages: csharp
build-mode: manual
queries: security-and-quality
config-file: ./.github/codeql-config.yml

Expand Down
15 changes: 14 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,18 @@ and deserializing SPDX SBOMs into an in-memory representation.
- **Repo Consistency Agent** - Ensures SpdxModel remains consistent with the
[TemplateDotNetLibrary](https://github.com/demaconsulting/TemplateDotNetLibrary) template patterns

## Agent Selection Guide

- Fix a bug → **Software Developer**
- Add a new feature → **Requirements Agent** → **Software Developer** → **Test Developer**
- Write a test → **Test Developer**
- Fix linting or static analysis issues → **Code Quality Agent**
- Update documentation → **Technical Writer**
- Add or update requirements → **Requirements Agent**
- Ensure test coverage linkage in `requirements.yaml` → **Requirements Agent**
- Run security scanning or address CodeQL alerts → **Code Quality Agent**
- Propagate template changes → **Repo Consistency Agent**

## Tech Stack

- C# 12, .NET 8.0/9.0/10.0, dotnet CLI, NuGet
Expand All @@ -38,6 +50,7 @@ evidence. This is critical for platform and framework requirements - **do not re

- `windows@TestName` - proves the test passed on a Windows platform
- `ubuntu@TestName` - proves the test passed on a Linux (Ubuntu) platform
- `macos@TestName` - proves the test passed on a macOS platform
- `net8.0@TestName` - proves the test passed under the .NET 8 runtime
- `net9.0@TestName` - proves the test passed under the .NET 9 runtime
Comment on lines 51 to 55

Copilot AI Mar 6, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

macos@TestName was added here, but the more detailed agent docs in .github/agents/ still list only windows@/ubuntu@ (and framework) filters. To keep guidance consistent for agents, update those docs to include macos@TestName as a supported source filter as well.

Copilot uses AI. Check for mistakes.
- `net10.0@TestName` - proves the test passed under the .NET 10 runtime
Expand Down Expand Up @@ -91,7 +104,7 @@ dotnet test --configuration Release
## CI/CD

- **Quality Checks**: Markdown lint, spell check, YAML lint
- **Build**: Multi-platform .NET 8/9/10
- **Build**: Multi-platform (Windows/Linux/macOS) .NET 8/9/10
- **CodeQL**: Security scanning
- **SonarCloud**: Code quality analysis

Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,11 @@ comprehensive in-memory model for reading, manipulating, and writing SPDX Softwa
- 🎯 **Type-Safe** - Strongly-typed C# API with nullable reference types
- 🔍 **Transform Support** - Built-in utilities for manipulating SPDX relationships
- ⚡ **Multi-Target** - Supports .NET 8, 9, and 10
- 🖥️ **Multi-Platform** - Builds and runs on Windows, Linux, and macOS
- 🧪 **Well-Tested** - Comprehensive test suite with high code coverage
- 📚 **Well-Documented** - XML documentation for all public APIs
- 🔒 **Continuous Compliance** - Compliance evidence generated automatically on every CI run, following
the [Continuous Compliance](https://github.com/demaconsulting/ContinuousCompliance) methodology

## Installation

Expand Down
15 changes: 15 additions & 0 deletions docs/guide/guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,20 @@ The library fully supports the following SPDX specifications:
- **SPDX 2.2**: Full support for SPDX 2.2 specification
- **SPDX 2.3**: Full support for SPDX 2.3 specification

# Continuous Compliance

This library follows the [Continuous Compliance][continuous-compliance] methodology, which ensures
compliance evidence is generated automatically on every CI run.

## Key Practices

- **Requirements Traceability**: Every requirement is linked to passing tests, and a trace matrix is
auto-generated on each release
- **Linting Enforcement**: markdownlint, cspell, and yamllint are enforced before any build proceeds
- **Automated Audit Documentation**: Each release ships with generated requirements, justifications,
trace matrix, and quality reports
- **CodeQL and SonarCloud**: Security and quality analysis runs on every build

# Installation

## Prerequisites
Expand Down Expand Up @@ -668,3 +682,4 @@ Made with ❤️ by [DEMA Consulting][dema-consulting]
[github-issues]: https://github.com/demaconsulting/SpdxModel/issues
[github-discussions]: https://github.com/demaconsulting/SpdxModel/discussions
[dema-consulting]: https://github.com/demaconsulting
[continuous-compliance]: https://github.com/demaconsulting/ContinuousCompliance
10 changes: 10 additions & 0 deletions requirements.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,16 @@ sections:

- title: Platform Requirements
requirements:
- id: SpdxModel-Plt-MacOS
title: The library shall build and run on macOS platforms.
tags:
- platform
justification: |
DEMA Consulting libraries must support macOS for developers using Apple platforms.
tests:
# Tests link to "macos" to ensure results come from macOS platform
- "macos@Spdx2JsonDeserializer_Deserialize_ValidSpdx22JsonReturnsExpectedDocument"

- id: SpdxModel-Plt-Net8
title: The library shall support .NET 8 runtime.
tags:
Expand Down