Skip to content

Contributing

obslog is governed by a single source of truth: PRODUCT.md. Please read it before contributing. The full contribution guide lives in CONTRIBUTING.md; the essentials:

Ground rules

  1. Trace your work to a requirement. Reference the PRODUCT.md requirement ID(s) your change implements or modifies (e.g. FR-001, NFR-PERF-002). If nothing covers your need, amend PRODUCT.md first, then build.
  2. Respect the constitution. PRIN-002 (strictly domain-agnostic) and PRIN-008 (never call an LLM) are non-negotiable.
  3. Contracts are expensive. Changes to a frozen public API (API-*) or the Record schema (SCHEMA-*) require an ADR and must follow the versioning policy.

Development

python -m pip install -e ".[dev]"

ruff check .
ruff format --check .
mypy
pytest --cov
  • Public API must pass strict type checking and be fully typed and documented.
  • New behavior needs tests; prefer property-based tests for processors/formatters.
  • Add a CHANGELOG.md entry under Unreleased.

Benchmarks

pytest tests/benchmarks -m benchmark