Guide
Quality and releases
Every change runs the same checks in the open, and each release is verified before it is published.
On every change
- Backend: formatting and lint with Ruff, strict type checking with mypy, and pytest with branch coverage of at least 85 percent.
- Frontend: dependency audit, unit tests, type-checked build, and Playwright browser and app-install tests.
- Both run on Linux, Windows and macOS.
- End to end: real parsing, embeddings, Qdrant, reranking and streaming, with a stand-in model. At least 7 of 8 paraphrased Persian questions must cite their own section first.
- Locally, every backend test runs without skips and without Docker: PARSRAG_E2E=1 runs the end-to-end tests against an in-memory Qdrant unless QDRANT_HOST names a server.
- Packaging: the Docker image is built and the app imported inside it.
Supply chain
- Dependency review on pull requests and a Python vulnerability audit.
- A software bill of materials is generated, and the image is scanned; fixable high or critical findings block the build.
- Dependabot proposes weekly dependency updates.
Measured improvements in 1.0
Measured improvements in 1.1
- Questions with several parts: 5 of the 6 answers that missed a part became complete, with no regressions.
- Pictures read several at a time: a report with 96 images parsed in 33 s instead of 121 s, with identical text. Indexing the whole report went from about 4.5 minutes to about 3.
- Screenshot OCR: facts read from 33 to 37 of 40, for about a third more time per image.
- Thinking models: on a 6 GB GPU with qwen3.5:4b, an empty reply after 59 s became a cited answer in 7 s.
These measurements were made on document sets that aren't published, so they can't be reproduced from the public repository.