Every commit scored for change-risk against this repo's own history, so 'elevated' means elevated here rather than on some global curve.
Needs review
24 commits sit in this repo's top risk tercile, which is 33% of the 72scored. The cut is drawn against this codebase's own history rather than a global curve, so a quiet repo still fills its top band, and here it starts at 7.3 out of 10. What pushes a commit up is size and spread together: a large change confined to one area scores below a smaller one scattered across a dozen files.
Commit categories over time, read off the subject line. Fixes carry the accent because that is the series this chart exists to show.
Began feature-led, now leaning deps.
Ranked by change-risk, highest first. Priority is a tercile of this repo's own distribution, so a quiet repo still fills its top band.
| # | Commit | Author | When | Lines | Risk | Top driver |
|---|---|---|---|---|---|---|
| 1 | 03a64054Transitivity (#13) | Niklas von Moers | 2mo ago | +2.5K -1.3K | 99%Elevated | more lines added than baseline |
| 2 | 36d57bd7feat: add optional cost maps for insertion and deletion | Patrick Wagner | 1y ago | +1.8K -429 | 98%Elevated | more lines added than baseline |
| 3 | a7da5095upgrade dependencies | Niklas von Moers | 2mo ago | +821 -1.1K | 96%Elevated | more lines added than baseline |
| 4 | 1f9f067cupgrade packages | Niklas von Moers | 2mo ago | +1.1K -434 | 96%Elevated | more lines added than baseline |
| 5 | 3370df8drelease version 1.0.0 (#9) | Niklas von Moers | 10mo ago | +739 -581 | 93%Elevated | more lines added than baseline |
| 6 | 5a051cb5init | Niklas von Moers | 1y ago | +763 -0 | 93%Elevated | more lines added than baseline |
| 7 | b54f88ecFeat: Explain Edit Path (#3) | Niklas von Moers | 11mo ago | +735 -370 | 90%Elevated | more lines added than baseline |
| 8 | 28d9764aadd GitHub pages documentation | Niklas von Moers | 1y ago | +710 -1 | 90%Elevated | more lines added than baseline |
| 9 | 1adae93badd uv, mypy | Niklas von Moers | 1y ago | +682 -9 | 90%Elevated | more lines added than baseline |
| 10 | ecce55cbfix: multiple bugfixes and improvements for cost learning | Niklas von Moers | 10mo ago | +258 -74 | 86%Elevated | more lines added than baseline |
| 11 | c79b848cfeat: learn costs (#5) | Niklas von Moers | 10mo ago | +353 -16 | 86%Elevated | more lines added than baseline |
| 12 | 8a2cb7befeat: add batch calculation, improve docs | Niklas von Moers | 1y ago | +352 -24 | 83%Elevated | more lines added than baseline |
| 13 | 53f2c711feat: support substitution of multiple characters at once | Niklas von Moers | 1y ago | +362 -159 | 83%Elevated | more lines added than baseline |
| 14 | 49d9cc65add unittests for rust-python-interface | Niklas von Moers | 10mo ago | +312 -4 | 81%Elevated | more lines added than baseline |
| 15 | e9f4335aupdate documentation | Niklas von Moers | 1y ago | +139 -39 | 80%Elevated | more lines added than baseline |
| 16 | fd79a650improve custom types | Niklas von Moers | 1y ago | +117 -51 | 78%Elevated | more lines added than baseline |
| 17 | d114da8cfeat: add find_best_candidate function | Niklas von Moers | 1y ago | +141 -10 | 78%Elevated | more lines added than baseline |
| 18 | 324fac24calculate max_token_characters instead of having to supply it | Niklas von Moers | 1y ago | +154 -150 | 75%Elevated | more lines added than baseline |
| 19 | 727bb529add ruff config | Niklas von Moers | 1y ago | +88 -0 | 75%Elevated | more lines added than baseline |
| 20 | f4020dfeconfigure default cost map in Python | Niklas von Moers | 1y ago | +104 -142 | 73%Elevated | more lines added than baseline |
| 21 | e617ee9brefactor | Niklas von Moers | 1y ago | +73 -75 | 71%Elevated | more lines added than baseline |
| 22 | 21425f77add max_token_characters argument for control over speed/substitution token length | Niklas von Moers | 1y ago | +105 -44 | 71%Elevated | more lines added than baseline |
| 23 | 3ec1009btest coverage | Niklas von Moers | 1y ago | +94 -2 | 69%Elevated | more lines added than baseline |
| 24 | e0b2c960add documentation, license | Niklas von Moers | 1y ago | +70 -1 | 67%Elevated | more lines added than baseline |
| 25 | fdb0e112update documentation | Niklas von Moers | 1y ago | +62 -7 | 65%Typical | more lines added than baseline |
| 26 | 33effbc6refactor | Niklas von Moers | 1y ago | +51 -43 | 65%Typical | more lines added than baseline |
| 27 | 275b2bfefeat: optionally include matches in edit path | Niklas von Moers | 10mo ago | +59 -10 | 63%Typical | more lines added than baseline |
| 28 | 7b80e387improve documentation | Niklas von Moers | 11mo ago | +54 -20 | 63%Typical | more lines added than baseline |
| 29 | 485eb8e3fix ci/cd pipeline (#4) | Niklas von Moers | 10mo ago | +33 -16 | 60%Typical | more lines added than baseline |
| 30 | c961b238refactor | Niklas von Moers | 1y ago | +42 -23 | 60%Typical | more lines added than baseline |
| 31 | cef25a88drop support for PyPy, bugfix for Python 3.9 (#7) | Niklas von Moers | 10mo ago | +48 -56 | 58%Typical | more lines added than baseline |
| 32 | c3e6882fupdate default substitution costs | Niklas von Moers | 1y ago | +29 -7 | 56%Typical | more lines added than baseline |
| 33 | 6efc4756docs: improve examples | Niklas von Moers | 10mo ago | +19 -13 | 53%Typical | more lines added than baseline |
| 34 | 08e50ee8add release recipe | Niklas von Moers | 11mo ago | +20 -0 | 53%Typical | more lines added than baseline |
| 35 | 830544d2docs: update readme | Niklas von Moers | 1y ago | +19 -0 | 53%Typical | more lines added than baseline |
| 36 | 57ae84bfupgrade pytest | Niklas von Moers | 2mo ago | +28 -258 | 50%Typical | more lines added than baseline |
| 37 | 42edda19refactor | Niklas von Moers | 1y ago | +17 -12 | 50%Typical | more lines added than baseline |
| 38 | 00e89199build(deps): bump pyo3 from 0.28.3 to 0.29.0 (#14) | dependabot[bot] | 1mo ago | +17 -12 | 48%Typical | more lines added than baseline |
| 39 | d69e0b53feat: convenience classmethod for unweighted levenshtein distance | Niklas von Moers | 11mo ago | +21 -4 | 46%Typical | more lines added than baseline |
| 40 | 65420b79validate default_cost | Niklas von Moers | 1y ago | +18 -0 | 46%Typical | more lines added than baseline |
| 41 | c0a1cce4fix WeightedLevenshtein.from_dict | Niklas von Moers | 10mo ago | +19 -3 | 44%Typical | more lines added than baseline |
| 42 | 8967bebbfix: return matches for equal strings in explain, move unittests | Niklas von Moers | 10mo ago | +20 -6 | 42%Typical | more lines added than baseline |
| 43 | be562635feat: implement equality for WeightedLevenshtein | Niklas von Moers | 10mo ago | +13 -0 | 41%Typical | more lines added than baseline |
| 44 | 7cc97245small runtime improvements | Niklas von Moers | 10mo ago | +13 -1 | 40%Typical | more lines added than baseline |
| 45 | 1db32446improve EditOperation | Niklas von Moers | 10mo ago | +12 -2 | 38%Typical | more scattered than baseline |
| 46 | a2d59e29improve documentation | Niklas von Moers | 11mo ago | +8 -6 | 37%Typical | more scattered than baseline |
| 47 | 18eb8f6fdocs: improve find_best_candidate example | Niklas von Moers | 10mo ago | +7 -5 | 35%Typical | fewer lines added than baseline |
| 48 | 509460f4docs: improve descriptions | Niklas von Moers | 10mo ago | +7 -7 | 35%Typical | fewer lines added than baseline |
| 49 | c3638b61runtime improvements | Niklas von Moers | 10mo ago | +7 -1 | 32%Below typical | fewer lines added than baseline |
| 50 | d13610aedocs: document learning costs | Niklas von Moers | 10mo ago | +7 -0 | 32%Below typical | fewer lines added than baseline |
Two views of the same model: where the cuts fall, and what commit shape lands you above them.
Every scored commit, binned on the raw 0 to 10 score rather than the percentile. Percentile ranks are uniform by construction, so that axis has no shape to draw. The dashed lines are the tercile cuts behind each row's priority pill.
The 72 most recent commits, on their own recency sample rather than the feed above: that defaults to risk-sorted, so reusing it would plot only the top tercile and call it the spread. Big and scattered is what the model penalises. Click a dot to open it.
niklasvonm/ocr-stringdist has 72 commits in its history from 3 contributors, the first of them Apr 18, 2025. In the last 90 days 13 files were touched, 15 times in total, most often _observable_dict.py. Every commit is scored for change risk from its size, spread and the history of the files it touches.