Ctrl K
ComunidadGuías…

CONTRIBUTING.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Contributing

Thanks for looking. This is a spare-time project, so responses may be slow, but issues and
pull requests are welcome.

## Before you open a pull request

```bash
pip install -r requirements.txt -r requirements-dev.txt
ruff check .                    # lint
python -m unittest test_app -v  # tests
```

CI runs the same two on Python 3.11 to 3.14, plus a Docker job that builds the image, waits
for its HEALTHCHECK and asserts the container is not running as root, plus CodeQL. The first
three must pass before a pull request can merge.

Install Poppler and Tesseract if you can — without them, the tests that exercise real
rendering and real OCR skip silently rather than fail, so you get a green run that proved
less than it looks.

```bash
brew install poppler tesseract                          # macOS
sudo apt-get install -y poppler-utils tesseract-ocr      # Debian/Ubuntu
```

## What this project will and will not take

The [README](README.md#what-it-does-not-do) lists what has been decided against, with the
reasoning. Advanced preprocessing needing OpenCV, and built-in authentication or rate
limiting, are the two big ones. Please open an issue before building either — you would be
arguing against a decision, which is fine, but do it before writing the code.

## House rules that are not negotiable

These exist because each one was a real defect:

- **A control in the UI must be read by the server.** Ten form fields were once submitted and
  silently discarded. Do not add a checkbox that nothing consumes; remove it instead.
- **The OCR clean-up pass must never rewrite a character the engine produced.** It once
  applied `0`→`O`, `1`→`I`, `5`→`S` globally, corrupting every number in every document.
  `test_fix_common_ocr_errors_never_corrupts_content` guards this deliberately.
- **A green CI run is not proof.** Optional OCR engines are lazily imported and are not
  installed in CI, so a change can break one while every check stays green. Say so in the
  pull request if your change touches that path.
- **Do not put a line count, or any other self-invalidating number, in the documentation.**

## Commit messages

Explain why, not what — the diff already says what. If you are fixing a defect, say what the
broken behaviour was, so the next person reading `git log` understands the reason the code
looks the way it does.

## Security

Do not open a public issue for a vulnerability. See [SECURITY.md](SECURITY.md).

## Code of Conduct

By participating you agree to the [Code of Conduct](CODE_OF_CONDUCT.md).