From 4f6bc3d77b042d2124d9d83183be69d1c5a6df30 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Oct 2025 19:45:08 +0000 Subject: [PATCH 01/12] Initial plan From 85c34d6fcd8c41b7e08c9575d28a3bb79502c459 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Oct 2025 19:48:43 +0000 Subject: [PATCH 02/12] Add GitHub Copilot instructions for SSVC repository Co-authored-by: ahouseholder <2594236+ahouseholder@users.noreply.github.com> --- .github/copilot-instructions.md | 203 ++++++++++++++++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100644 .github/copilot-instructions.md diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 00000000..bc63f977 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,203 @@ +# GitHub Copilot Instructions for SSVC + +This repository contains the **Stakeholder-Specific Vulnerability Categorization (SSVC)** project, which provides a system for prioritizing actions during vulnerability management. + +## Project Overview + +SSVC is a modular decision-making framework for vulnerability management that includes: +- Python modules for decision points, decision tables, and outcomes +- MkDocs-based documentation website +- Interactive calculators and policy explorers +- JSON/CSV data files for decision tables +- Docker-based development and deployment + +## Technology Stack + +- **Primary Language**: Python 3.x +- **Package Management**: uv (package and project manager) +- **Documentation**: MkDocs with Material theme +- **Testing**: pytest +- **Data Models**: Pydantic for JSON schema validation +- **Scientific Computing**: NumPy, SciPy, scikit-learn +- **Web Framework**: FastAPI (for API endpoints) +- **Containerization**: Docker and Docker Compose + +## Project Structure + +- `/src/ssvc/` - Core Python modules for SSVC functionality +- `/docs/` - Markdown documentation source files +- `/data/` - JSON and CSV data files for decision tables +- `/test/` - Unit tests (located in `/src/test/`) +- `/docker/` - Docker configurations +- `/obsolete/` - Deprecated code (do not modify) + +## Development Workflow + +### Getting Started + +1. **Set up development environment**: `make dev` or `uv sync --dev --project src` +2. **Run local documentation server**: `make docs_local` or `make docs` (Docker) +3. **Run tests**: `make test` (local) or `make docker_test` (Docker) +4. **Run API locally**: `make api_dev` + +### Building and Testing + +- Always run tests before committing: `make test` or `uv run --project src pytest -v` +- Run markdown linting with auto-fix: `make mdlint_fix` +- Preview documentation changes: `make docs_local` +- Build documentation in Docker: `make docs` + +### Common Commands + +```bash +# Show available make targets +make help + +# Set up dev environment +make dev + +# Run tests locally +make test + +# Run tests in Docker +make docker_test + +# Serve documentation locally +make docs_local + +# Regenerate JSON data files +make regenerate_json +``` + +## Coding Conventions + +### Python Code + +- Follow PEP 8 style guidelines +- Use type hints for function signatures +- Use Pydantic models for data validation +- Document classes and functions with docstrings +- Prefer explicit imports over wildcard imports +- Module structure uses absolute imports from `ssvc` package + +### File Organization + +- Decision points are in `/src/ssvc/decision_points/` +- Decision tables are in `/src/ssvc/decision_tables/` +- Tests mirror the source structure in `/src/test/` +- Documentation pages are in `/docs/` + +### Naming Conventions + +- Python files: `snake_case.py` +- Classes: `PascalCase` +- Functions/variables: `snake_case` +- Constants: `UPPER_SNAKE_CASE` +- JSON/CSV files: `kebab-case.json` + +## Testing Requirements + +### Test Structure + +- Unit tests use pytest framework +- Tests are located in `/src/test/` +- Test files follow pattern: `test_*.py` +- Run tests with: `make test` or `uv run --project src pytest -v` + +### Test Coverage + +- Write tests for new Python modules +- Ensure decision points and tables have corresponding tests +- Test JSON schema validation +- Validate data model serialization/deserialization + +### Before Committing + +1. Run all tests: `make test` +2. Ensure no test failures +3. Fix any linting issues: `make mdlint_fix` +4. Verify documentation builds: `make docs_local` + +## Documentation + +### Writing Documentation + +- Documentation uses MkDocs with Material theme +- Files are in Markdown format in `/docs/` +- Use Python exec blocks for dynamic content generation +- Include examples and code snippets +- Follow existing documentation structure + +### Documentation Features + +- Automatic API documentation via mkdocstrings +- Code execution in Markdown via markdown-exec +- BibTeX citations via mkdocs-bibtex +- Include markdown files with mkdocs-include-markdown-plugin + +### Building Documentation + +```bash +# Local preview (with hot reload) +make docs_local + +# Docker build (production-like) +make docs + +# Access at: http://localhost:8000/SSVC/ +``` + +## Data Files + +### JSON Files + +- Located in `/data/json/` +- Generated from Python Pydantic models +- Use JSON schema validation +- Regenerate with: `make regenerate_json` + +### CSV Files + +- Located in `/data/csv/` +- Generated from Python modules +- Define decision table outcomes +- Primary way to customize SSVC for specific environments + +## Common Pitfalls + +1. **Import Paths**: Use absolute imports like `from ssvc.module import Class`, not relative imports +2. **PYTHONPATH**: When running scripts directly, set `export PYTHONPATH=$PYTHONPATH:$(pwd)/src` +3. **JSON Regeneration**: After modifying decision points/tables, regenerate JSON with `make regenerate_json` +4. **Docker Context**: Some make targets use Docker, others run locally - check the Makefile +5. **Package Management**: Use `uv` commands with `--project src` flag, not pip directly +6. **Obsolete Code**: Never modify files in `/obsolete/` directory + +## API Development + +- FastAPI application is in `/src/ssvc/api/` +- Run locally with auto-reload: `make api_dev` +- Run in Docker: `make api` +- API documentation available at `/docs` endpoint when running + +## Git Workflow + +- Create feature branches for new work +- Write descriptive commit messages +- Reference issue numbers in commits when applicable +- Keep commits focused and atomic +- Run tests before pushing + +## Additional Resources + +- Main documentation: https://certcc.github.io/SSVC/ +- Source repository: https://github.com/CERTCC/SSVC +- SSVC Calculator: https://certcc.github.io/SSVC/ssvc-calc/ +- Contributing guide: See CONTRIBUTING.md +- Project wiki: https://github.com/CERTCC/SSVC/wiki + +## Special Notes + +- This project uses Carnegie Mellon University licensing (see LICENSE file) +- Decision points and tables follow SSVC specification +- Backward compatibility is important for existing data files +- Documentation changes should be reflected in both `/docs/` and `/src/README.md` when applicable From ab834d023fd69d0a167910b8ff662793103d0f50 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 15 Oct 2025 13:54:46 +0000 Subject: [PATCH 03/12] Address review feedback on Copilot instructions Co-authored-by: ahouseholder <2594236+ahouseholder@users.noreply.github.com> --- .github/copilot-instructions.md | 100 +++++++++++++------------------- 1 file changed, 40 insertions(+), 60 deletions(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index bc63f977..4e2d49ab 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -9,12 +9,13 @@ SSVC is a modular decision-making framework for vulnerability management that in - MkDocs-based documentation website - Interactive calculators and policy explorers - JSON/CSV data files for decision tables -- Docker-based development and deployment +- Docker and Make-based development and deployment ## Technology Stack - **Primary Language**: Python 3.x - **Package Management**: uv (package and project manager) +- **Build Tool**: Make - **Documentation**: MkDocs with Material theme - **Testing**: pytest - **Data Models**: Pydantic for JSON schema validation @@ -35,46 +36,23 @@ SSVC is a modular decision-making framework for vulnerability management that in ### Getting Started -1. **Set up development environment**: `make dev` or `uv sync --dev --project src` -2. **Run local documentation server**: `make docs_local` or `make docs` (Docker) +1. **Set up development environment**: `make dev` +2. **Run local documentation server**: `make docs_local` (local) or `make docs` (Docker) 3. **Run tests**: `make test` (local) or `make docker_test` (Docker) -4. **Run API locally**: `make api_dev` +4. **Run API**: `make api_dev` (local) or `make api` (Docker) ### Building and Testing -- Always run tests before committing: `make test` or `uv run --project src pytest -v` +- Always run tests before committing: `make test` - Run markdown linting with auto-fix: `make mdlint_fix` -- Preview documentation changes: `make docs_local` -- Build documentation in Docker: `make docs` - -### Common Commands - -```bash -# Show available make targets -make help - -# Set up dev environment -make dev - -# Run tests locally -make test - -# Run tests in Docker -make docker_test - -# Serve documentation locally -make docs_local - -# Regenerate JSON data files -make regenerate_json -``` +- Regenerate JSON data files: `make regenerate_json` ## Coding Conventions ### Python Code - Follow PEP 8 style guidelines -- Use type hints for function signatures +- Use type hints for function signatures and return types - Use Pydantic models for data validation - Document classes and functions with docstrings - Prefer explicit imports over wildcard imports @@ -82,10 +60,15 @@ make regenerate_json ### File Organization -- Decision points are in `/src/ssvc/decision_points/` -- Decision tables are in `/src/ssvc/decision_tables/` -- Tests mirror the source structure in `/src/test/` -- Documentation pages are in `/docs/` +- `/src/ssvc/` - Core Python modules including: + - `decision_points/` - Decision point definitions + - `decision_tables/` - Decision table implementations + - `api/` - FastAPI application + - `outcomes/` - Outcome definitions + - `dp_groups/` - Decision point groups + - `registry/` - Registry functionality +- `/src/test/` - Unit tests mirroring source structure +- `/docs/` - Documentation pages ### Naming Conventions @@ -93,7 +76,6 @@ make regenerate_json - Classes: `PascalCase` - Functions/variables: `snake_case` - Constants: `UPPER_SNAKE_CASE` -- JSON/CSV files: `kebab-case.json` ## Testing Requirements @@ -102,7 +84,7 @@ make regenerate_json - Unit tests use pytest framework - Tests are located in `/src/test/` - Test files follow pattern: `test_*.py` -- Run tests with: `make test` or `uv run --project src pytest -v` +- Run tests with: `make test` ### Test Coverage @@ -131,21 +113,9 @@ make regenerate_json ### Documentation Features - Automatic API documentation via mkdocstrings -- Code execution in Markdown via markdown-exec +- Python module imports for dynamic content generation - BibTeX citations via mkdocs-bibtex -- Include markdown files with mkdocs-include-markdown-plugin - -### Building Documentation - -```bash -# Local preview (with hot reload) -make docs_local - -# Docker build (production-like) -make docs - -# Access at: http://localhost:8000/SSVC/ -``` +- Include markdown files by specifying them in mkdocs.yml ## Data Files @@ -154,12 +124,10 @@ make docs - Located in `/data/json/` - Generated from Python Pydantic models - Use JSON schema validation -- Regenerate with: `make regenerate_json` ### CSV Files - Located in `/data/csv/` -- Generated from Python modules - Define decision table outcomes - Primary way to customize SSVC for specific environments @@ -167,17 +135,29 @@ make docs 1. **Import Paths**: Use absolute imports like `from ssvc.module import Class`, not relative imports 2. **PYTHONPATH**: When running scripts directly, set `export PYTHONPATH=$PYTHONPATH:$(pwd)/src` -3. **JSON Regeneration**: After modifying decision points/tables, regenerate JSON with `make regenerate_json` -4. **Docker Context**: Some make targets use Docker, others run locally - check the Makefile -5. **Package Management**: Use `uv` commands with `--project src` flag, not pip directly -6. **Obsolete Code**: Never modify files in `/obsolete/` directory +3. **Docker Context**: Some make targets use Docker, others run locally - check the Makefile +4. **Package Management**: Use `make` commands or `uv` directly, not pip +5. **Obsolete Code**: Never modify files in `/obsolete/`, `/doc/`, or `/pdfs/` directories ## API Development - FastAPI application is in `/src/ssvc/api/` -- Run locally with auto-reload: `make api_dev` -- Run in Docker: `make api` -- API documentation available at `/docs` endpoint when running +- Run locally with auto-reload: `make api_dev` (serves on http://127.0.0.1:8000/docs) +- Run in Docker: `make api` (serves on http://127.0.0.1:8001/SSVC/) + +## Make Commands + +Use `make help` to see all available commands. Common targets include: + +- `make dev` - Set up development environment +- `make test` - Run tests locally +- `make docker_test` - Run tests in Docker +- `make docs_local` - Serve documentation locally (http://localhost:8000/SSVC/) +- `make docs` - Build and run documentation in Docker +- `make api_dev` - Run API locally with auto-reload +- `make api` - Build and run API in Docker +- `make mdlint_fix` - Run markdown linting with auto-fix +- `make regenerate_json` - Regenerate JSON files from Python modules ## Git Workflow @@ -197,7 +177,7 @@ make docs ## Special Notes -- This project uses Carnegie Mellon University licensing (see LICENSE file) +- This project uses a MIT (SEI)-style license with Carnegie Mellon University copyright (see LICENSE file) - Decision points and tables follow SSVC specification - Backward compatibility is important for existing data files - Documentation changes should be reflected in both `/docs/` and `/src/README.md` when applicable From 9ade107998d1f8a9872f3c0cc3af80dc079b517d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 15 Oct 2025 13:59:08 +0000 Subject: [PATCH 04/12] Restore aspirational guidance based on feedback Co-authored-by: ahouseholder <2594236+ahouseholder@users.noreply.github.com> --- .github/copilot-instructions.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 4e2d49ab..dcb92076 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -76,6 +76,7 @@ SSVC is a modular decision-making framework for vulnerability management that in - Classes: `PascalCase` - Functions/variables: `snake_case` - Constants: `UPPER_SNAKE_CASE` +- JSON/CSV files: `kebab-case.json` ## Testing Requirements @@ -135,9 +136,10 @@ SSVC is a modular decision-making framework for vulnerability management that in 1. **Import Paths**: Use absolute imports like `from ssvc.module import Class`, not relative imports 2. **PYTHONPATH**: When running scripts directly, set `export PYTHONPATH=$PYTHONPATH:$(pwd)/src` -3. **Docker Context**: Some make targets use Docker, others run locally - check the Makefile -4. **Package Management**: Use `make` commands or `uv` directly, not pip -5. **Obsolete Code**: Never modify files in `/obsolete/`, `/doc/`, or `/pdfs/` directories +3. **JSON Regeneration**: After modifying decision points/tables, regenerate JSON with `make regenerate_json` +4. **Docker Context**: Some make targets use Docker, others run locally - check the Makefile +5. **Package Management**: Use `make` commands or `uv` directly, not pip +6. **Obsolete Code**: Never modify files in `/obsolete/`, `/doc/`, or `/pdfs/` directories ## API Development From 355379cab9293eef684dab88d295a700cee89ef1 Mon Sep 17 00:00:00 2001 From: Renae Metcalf Date: Mon, 27 Oct 2025 15:24:09 -0400 Subject: [PATCH 05/12] Clean up --- .github/copilot-instructions.md | 57 +++++++++++---------------------- 1 file changed, 19 insertions(+), 38 deletions(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index dcb92076..fd0a61b5 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -26,26 +26,33 @@ SSVC is a modular decision-making framework for vulnerability management that in ## Project Structure - `/src/ssvc/` - Core Python modules for SSVC functionality + - `decision_points/` - Decision point definitions + - `decision_tables/` - Decision table implementations + - `api/` - FastAPI application + - `outcomes/` - Outcome definitions + - `dp_groups/` - Decision point groups + - `registry/` - Registry functionality - `/docs/` - Markdown documentation source files - `/data/` - JSON and CSV data files for decision tables -- `/test/` - Unit tests (located in `/src/test/`) +- `/src/test/` - Unit tests - `/docker/` - Docker configurations - `/obsolete/` - Deprecated code (do not modify) -## Development Workflow - -### Getting Started +## Make Commands -1. **Set up development environment**: `make dev` -2. **Run local documentation server**: `make docs_local` (local) or `make docs` (Docker) -3. **Run tests**: `make test` (local) or `make docker_test` (Docker) -4. **Run API**: `make api_dev` (local) or `make api` (Docker) +Use `make help` to see all available commands. Common targets include: -### Building and Testing +- `make dev` - Set up development environment +- `make test` - Run tests locally +- `make docker_test` - Run tests in Docker +- `make docs_local` - Serve documentation locally (http://localhost:8000/SSVC/) +- `make docs` - Build and run documentation in Docker +- `make api_dev` - Run API locally with auto-reload +- `make api` - Build and run API in Docker +- `make mdlint_fix` - Run markdown linting with auto-fix +- `make regenerate_json` - Regenerate JSON files from Python modules -- Always run tests before committing: `make test` -- Run markdown linting with auto-fix: `make mdlint_fix` -- Regenerate JSON data files: `make regenerate_json` +## Development Workflow ## Coding Conventions @@ -58,18 +65,6 @@ SSVC is a modular decision-making framework for vulnerability management that in - Prefer explicit imports over wildcard imports - Module structure uses absolute imports from `ssvc` package -### File Organization - -- `/src/ssvc/` - Core Python modules including: - - `decision_points/` - Decision point definitions - - `decision_tables/` - Decision table implementations - - `api/` - FastAPI application - - `outcomes/` - Outcome definitions - - `dp_groups/` - Decision point groups - - `registry/` - Registry functionality -- `/src/test/` - Unit tests mirroring source structure -- `/docs/` - Documentation pages - ### Naming Conventions - Python files: `snake_case.py` @@ -147,20 +142,6 @@ SSVC is a modular decision-making framework for vulnerability management that in - Run locally with auto-reload: `make api_dev` (serves on http://127.0.0.1:8000/docs) - Run in Docker: `make api` (serves on http://127.0.0.1:8001/SSVC/) -## Make Commands - -Use `make help` to see all available commands. Common targets include: - -- `make dev` - Set up development environment -- `make test` - Run tests locally -- `make docker_test` - Run tests in Docker -- `make docs_local` - Serve documentation locally (http://localhost:8000/SSVC/) -- `make docs` - Build and run documentation in Docker -- `make api_dev` - Run API locally with auto-reload -- `make api` - Build and run API in Docker -- `make mdlint_fix` - Run markdown linting with auto-fix -- `make regenerate_json` - Regenerate JSON files from Python modules - ## Git Workflow - Create feature branches for new work From 55ff831ddae5cd5c6a207135a649d6f34242cc4a Mon Sep 17 00:00:00 2001 From: Renae Metcalf Date: Tue, 28 Oct 2025 11:23:56 -0400 Subject: [PATCH 06/12] test markdown lint to exclude .github --- .markdownlint.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.markdownlint.yml b/.markdownlint.yml index 3c95d570..943f09e5 100644 --- a/.markdownlint.yml +++ b/.markdownlint.yml @@ -27,3 +27,4 @@ MD049: MD050: style: "asterisk" +!*.github From da6b958f82d99a05a47c75a97617f880f654fec6 Mon Sep 17 00:00:00 2001 From: Renae Metcalf Date: Wed, 29 Oct 2025 10:53:51 -0400 Subject: [PATCH 07/12] Change syntax of markdownlint ignores --- .markdownlint.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.markdownlint.yml b/.markdownlint.yml index 943f09e5..7be5007a 100644 --- a/.markdownlint.yml +++ b/.markdownlint.yml @@ -1,3 +1,5 @@ +ignores: + - .github/** default: true # disable noisy rules # 0004 Unordered List style @@ -27,4 +29,3 @@ MD049: MD050: style: "asterisk" -!*.github From 107cd68171701ec7b78587395544ade1f2cff8a6 Mon Sep 17 00:00:00 2001 From: Renae Metcalf Date: Wed, 29 Oct 2025 11:22:28 -0400 Subject: [PATCH 08/12] Remove mention of kebab case --- .github/copilot-instructions.md | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index fd0a61b5..dde1fba7 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -71,7 +71,6 @@ Use `make help` to see all available commands. Common targets include: - Classes: `PascalCase` - Functions/variables: `snake_case` - Constants: `UPPER_SNAKE_CASE` -- JSON/CSV files: `kebab-case.json` ## Testing Requirements From 4049910df3c44233227b0b936d663267185501de Mon Sep 17 00:00:00 2001 From: "Allen D. Householder" Date: Wed, 29 Oct 2025 11:31:29 -0400 Subject: [PATCH 09/12] Update .github/copilot-instructions.md --- .github/copilot-instructions.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index dde1fba7..b397230a 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -110,7 +110,9 @@ Use `make help` to see all available commands. Common targets include: - Automatic API documentation via mkdocstrings - Python module imports for dynamic content generation - BibTeX citations via mkdocs-bibtex -- Include markdown files by specifying them in mkdocs.yml +- Add markdown files to site navigation by specifying them in `mkdocs.yml` +- Include markdown files in other markdown files with `mkdocs-include-markdown-plugin` +- Dynamically generate content from python code blocks using the `markdown-exec` plugin ## Data Files From 92546b63da5af7fcef70bca06c69be41e1eed4c6 Mon Sep 17 00:00:00 2001 From: "Allen D. Householder" Date: Wed, 29 Oct 2025 11:31:37 -0400 Subject: [PATCH 10/12] Update .github/copilot-instructions.md --- .github/copilot-instructions.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index b397230a..751ac9f3 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -126,7 +126,8 @@ Use `make help` to see all available commands. Common targets include: - Located in `/data/csv/` - Define decision table outcomes -- Primary way to customize SSVC for specific environments +- Generated from python modules (The python data objects are authoritative) +- Allows users to explore customizing SSVC for specific environments ## Common Pitfalls From c06cdc23aab2c4e803e9edc07cdfdcc400f8a9c3 Mon Sep 17 00:00:00 2001 From: "Allen D. Householder" Date: Wed, 29 Oct 2025 11:31:46 -0400 Subject: [PATCH 11/12] Update .github/copilot-instructions.md --- .github/copilot-instructions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 751ac9f3..7d5c0f9d 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -136,7 +136,7 @@ Use `make help` to see all available commands. Common targets include: 3. **JSON Regeneration**: After modifying decision points/tables, regenerate JSON with `make regenerate_json` 4. **Docker Context**: Some make targets use Docker, others run locally - check the Makefile 5. **Package Management**: Use `make` commands or `uv` directly, not pip -6. **Obsolete Code**: Never modify files in `/obsolete/`, `/doc/`, or `/pdfs/` directories +6. **Obsolete Code and Documentation**: Never modify files in `/obsolete/`, `/doc/`, or `/pdfs/` directories ## API Development From 84a9767312a8f5e7c4821bf410c0b2d2f681af39 Mon Sep 17 00:00:00 2001 From: "Allen D. Householder" Date: Wed, 29 Oct 2025 11:31:57 -0400 Subject: [PATCH 12/12] Update .github/copilot-instructions.md --- .github/copilot-instructions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 7d5c0f9d..95d88e14 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -79,7 +79,7 @@ Use `make help` to see all available commands. Common targets include: - Unit tests use pytest framework - Tests are located in `/src/test/` - Test files follow pattern: `test_*.py` -- Run tests with: `make test` +- Run tests with: `make test` or `uv run pytest -v` ### Test Coverage