28 lines
1.1 KiB
Markdown
28 lines
1.1 KiB
Markdown
# Contributing
|
|
|
|
Bug reports and pull requests are welcome at https://github.com/sudolulo/ai-incidents.
|
|
|
|
## Development
|
|
|
|
```sh
|
|
python -m venv .venv && . .venv/bin/activate
|
|
pip install -e '.[test]'
|
|
pytest
|
|
```
|
|
|
|
The package has no runtime dependencies beyond the Python standard library (3.11+), and it should
|
|
stay that way.
|
|
|
|
## Ground rules
|
|
|
|
- **The permission envelope is the product.** Every file write goes through `WriteGuard`;
|
|
transcripts are only ever opened read-only; the judge gets text on stdin and no tools. A change
|
|
that weakens any of these needs a very good reason and a test.
|
|
- **A new pre-filter pattern needs a test** showing a transcript line it catches, and ideally one it
|
|
must not catch. The pre-filter favours recall, but every false positive costs judge tokens.
|
|
- **Never commit a real transcript.** Build fixtures with the helpers in `tests/helpers.py`. Test
|
|
secrets are assembled at runtime so the source does not trip secret scanners.
|
|
- **Keep the ledger format stable.** People hand-edit `incidents.md`; a format change must parse
|
|
the old format and must not rewrite hand-written entries.
|
|
- Update `CHANGELOG.md` under `Unreleased`.
|