Thanks for your interest in hermeneutic. This document describes how to propose changes.
hermeneutic is a focused tool: it mines correction triples from chat logs and gates outgoing assistant drafts. It is not a general-purpose evaluation framework, nor a model benchmarker, nor an LLM router for production traffic.
In-scope: new chat-log readers, new evidence-based risk patterns, calibration recipes for PressureProbe, bug fixes, docs, test coverage.
Out-of-scope:
- Aggregate model evaluation — use a benchmark suite.
- Static analysis of prompt scaffolds — that belongs in scaffold-lint.
- Agent-config structural analysis — that belongs in lintlang.
- Anything that adds a mandatory runtime dependency. Stage 2 (hermes-rubric) and stage 3 (your LLM) stay optional and pluggable.
Open an issue first if you're unsure.
git clone https://github.com/hermes-labs-ai/hermeneutic
cd hermeneutic
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"ruff check .
pytest -raCI runs the same commands on Python 3.10–3.13.
Patterns must be evidence-based: derived from real corrections you've mined.
- Add the pattern to
_RAW_PATTERNSinsrc/hermeneutic/gates/regex.pywith(rule_id, severity, regex, description). - Add a test in
tests/test_regex.pycovering both a draft it should flag and one it should not. - In the PR description, include: how many corrections in your mined corpus matched this pattern, and a sanitized example.
- Update
CHANGELOG.mdunder[Unreleased].
Severity guide: high = strong drift signal that almost always warrants a downstream check. med = often associated with drift but more false positives. low = stylistic tell only.
- Subclass
LogReaderinsrc/hermeneutic/triples.py. - Implement
iter_turns(path) -> Iterator[(role, text, timestamp)]. - Register your reader in the
READERSdict. - Add a round-trip test in
tests/test_triples.py.
-
ruff check .passes -
pytest -rapasses - No new mandatory runtime dependency added
-
CHANGELOG.mdupdated under[Unreleased] - New rules / readers have tests
- No backward-incompatible API change without a major-version bump
Minimum useful report: Python version, OS, exact command, draft text (or a minimal reproducer), observed output, expected output.
For mining-related issues, please include a sanitized example log entry that reproduces the problem.
See CODE_OF_CONDUCT.md.
By contributing, you agree that your contributions are licensed under the MIT License (see LICENSE).