-
Notifications
You must be signed in to change notification settings - Fork 1
Contributing
Auto-generated mirror. This page mirrors
CONTRIBUTING.md, the canonical source of truth. Do not edit this file directly; editCONTRIBUTING.mdand re-runscripts/wiki/sync_mirrors.py.
Thanks for considering a contribution. Evidentia is early-stage and a small number of focused contributions will make a disproportionate difference.
Please read CODE_OF_CONDUCT.md before participating.
Phase 1 is complete and the architecture is stable. The most valuable places to contribute right now:
-
Production OSCAL catalogs. The bundled NIST 800-53 Moderate catalog has 16 hand-curated controls for demonstration purposes. Replacing it with the full ~323-control NIST OSCAL content repo (or adding the High and Rev 5 Full baselines, NIST CSF 2.0, ISO 27001:2022, CIS v8, CMMC 2.0, or PCI DSS 4.0) is a drop-in JSON addition to
packages/evidentia-core/src/evidentia_core/catalogs/data/. -
Additional crosswalks. The highest-leverage missing ones are:
- ISO 27001:2022 ↔ NIST 800-53 Rev 5
- PCI DSS 4.0 ↔ SOC 2 TSC
- NIST CSF 2.0 ↔ NIST 800-53 Rev 5
- CIS Controls v8 ↔ NIST 800-53 Rev 5
Crosswalks live in
packages/evidentia-core/src/evidentia_core/catalogs/data/mappings/as JSON files matching theCrosswalkDefinitionPydantic model. -
Phase 2 collectors. AWS, GitHub, and Okta are the highest priority. The collector base class and contract are specified in the canonical architecture plan; see
Evidentia-Architecture-and-Implementation-Plan.md. -
Test coverage. Particularly edge cases in CSV header matching, OSCAL parsing with unusual catalog structures, and status normalization for non-English spreadsheets.
git clone https://github.com/polycentric-labs/evidentia.git
cd evidentia
uv sync --all-packages
uv run pytest tests/ -q # expected: full test suite passes (1259+ tests as of v0.7.8)
uv run ruff check . # expected: All checks passed!Python 3.12+ and uv 0.4+ are required.
Evidentia follows established style guides, mechanically enforced in CI:
-
Python: PEP 8 (style), PEP 257 (docstrings), PEP 484 / PEP 604 (type
hints). Enforced by
ruff(rule groups E/W/F/I/B/UP/RUF/SIM) +mypy --strictwith the Pydantic plugin. Configuration:pyproject.toml. -
TypeScript (
packages/evidentia-ui/): ESLint with the@typescript-eslint/recommendedruleset + Prettier formatting. Configuration:packages/evidentia-ui/eslint.config.js. -
Pre-commit hooks (
.pre-commit-config.yaml) catch most issues before commit-time. Install withpre-commit install.
Beyond the style guides:
-
Python 3.12 syntax. Use
str | NonenotOptional[str],list[str]notList[str],from datetime import UTCnottimezone.utc. -
from __future__ import annotationsat the top of every module. -
Pydantic v2 with
ConfigDict(use_enum_values=True, extra="forbid", str_strip_whitespace=True). Prefer strict validation over permissive parsing. -
Explicit UTF-8 encoding on every file read. Windows default
encoding is cp1252 and will corrupt em-dashes in compliance content.
Always pass
encoding="utf-8"toopen(). -
Ruff + mypy are configured in
pyproject.toml. Runuv run ruff check .before pushing. - Docstrings on every public class and function. One-line summary, blank line, details.
- No emoji or non-ASCII characters in CLI output — the Rich console must render on Windows cp1252 terminals. Em-dashes and Unicode arrows belong in data, not in print statements.
- Tests pass locally:
uv run pytest tests/ -q - Ruff passes locally:
uv run ruff check . - Any new public class or function has a docstring
- New features include at least one test
- New third-party dependencies are justified in the PR description
- The PR description explains the "why", not just the "what"
Security issues do not belong in public bug reports. See
SECURITY.md for the private vulnerability
disclosure process — GitHub Private Vulnerability Reporting is
the preferred channel; email is documented as a backup.
Use the GitHub issue templates:
- Bug report — for something that doesn't work as documented
- Feature request — for new functionality or behavior changes
For questions, use GitHub Discussions rather than issues. For security issues, see the section above — never use the bug report template for vulnerabilities.
By contributing to Evidentia, you agree that your contributions will be licensed under the Apache License 2.0.
-
- AI Governance
- Air Gapped Install
- Ci Integration
- CONMON Deployment
- Emit Cyclonedx VEX
- Emit OCSF Detection
- Emit SARIF
- Explain Controls
- Generate And Quantify Risk
- Governance Metrics And Workflows
- Ingest OCSF
- Manage Model Risk
- Manage POAM
- Manage Third Party Risk
- MCP Client Setup
- OSPS Self Assessment
- Run Gap Analysis
- Serve The Web Ui
- Sign And Verify Evidence