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
69 commits sit in this repo's top risk tercile, which is 34% of the 204scored. 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 8.5 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 chore.
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 | Review priority | Top driver |
|---|---|---|---|---|---|---|
| 1 | 30e50628feat(file-exchange): upload direction (register_file_exchange_upload, spec v0.4) (#68) | Peter van Liesdonkclaudeassisted | 3mo ago | +6.6K -391 | 100thElevated | more lines added than baseline |
| 2 | 2acf0e9afeat(file-exchange): implement MCP File Exchange v0.2.5 end-to-end (#33) | Peter van Liesdonkclaudeassisted | 4mo ago | +5.8K -15 | 100thElevated | more lines added than baseline |
| 3 | 433196f5chore: sync uv.lock to released version [skip ci] | github-actions | 4d ago | +2.0K -2.0K | 98thElevated | more lines added than baseline |
| 4 | 4f665790chore(deps): bump cryptography from 48.0.1 to 50.0.0 (#239) | dependabot[bot] | 5d ago | +2.0K -2.0K | 98thElevated | more lines added than baseline |
| 5 | 8d7c5b87chore: sync uv.lock to released version [skip ci] | github-actions | 2w ago | +2.0K -2.0K | 98thElevated | more lines added than baseline |
| 6 | f45b2dc7chore: sync uv.lock to released version [skip ci] | github-actions | 3w ago | +2.0K -2.0K | 98thElevated | more lines added than baseline |
| 7 | b1efe917feat(authorization): opt-in submodule for downstream access control (#61) | Peter van Liesdonkclaudeassisted | 3mo ago | +4.5K -12 | 98thElevated | more lines added than baseline |
| 8 | e804b2e8feat(instructions)!: InstructionsBuilder — composable, tool-aware server instructions (#289) | Peter van Liesdonkclaudeassisted | 5d ago | +2.1K -104 | 95thElevated | more lines added than baseline |
| 9 | c0397ad8feat(jobs): dual-mode long-running tools — Jobs seam, KV job store, generic polling tool (#271) | Peter van Liesdonkclaudeassisted | 2w ago | +2.1K -0 | 95thElevated | more lines added than baseline |
| 10 | cff6d27ffeat(authorization)!: rebuild on FastMCP-native auth checks (#193) | Peter van Liesdonkclaudeassisted | 2mo ago | +1.9K -1.9K | 95thElevated | more lines added than baseline |
| 11 | 64cefc62Unify file-exchange downstream byte surface to one source + one sink hook (#107) | Peter van Liesdonk | 3mo ago | +1.6K -1.3K | 95thElevated | more lines added than baseline |
| 12 | c3156594feat(file-exchange): sender-side http_upload primitive (#98) | Peter van Liesdonkclaudeassisted | 3mo ago | +2.0K -14 | 95thElevated | more lines added than baseline |
| 13 | c188ab39docs(spec)!: add http_upload transfer method, bump to v0.3.0 (closes #71) (#82) | Peter van Liesdonkclaudeassisted | 3mo ago | +1.3K -11 | 95thElevated | more lines added than baseline |
| 14 | 5290832dfeat(tasks): unify background-task backend selection behind the config surface (#270) | Peter van Liesdonkclaudeassisted | 2w ago | +2.6K -2.0K | 92thElevated | more lines added than baseline |
| 15 | 8a0811d4feat(config): field metadata + server_config_surface() for generated config docs (#236) | Peter van Liesdonkclaudeassisted | 1mo ago | +1.4K -89 | 92thElevated | more lines added than baseline |
| 16 | a6403b24feat: unified key-value storage factory (closes #121) (#122) | Peter van Liesdonkclaudeassisted | 3mo ago | +1.6K -77 | 92thElevated | more lines added than baseline |
| 17 | c2de5d74impl: re-implement http_upload receiver primitive against v0.3.0 spec (#74) (#92) | Peter van Liesdonkclaudeassisted | 3mo ago | +1.4K -383 | 92thElevated | more lines added than baseline |
| 18 | f625bebfrefactor(file-exchange)!: audit register_file_exchange kwargs (closes #72) (#81) | Peter van Liesdonkclaudeassisted | 3mo ago | +2.2K -148 | 92thElevated | more lines added than baseline |
| 19 | cbb940f9feat(file-exchange): adopt v0.3 spec + ship protocol surface | Peter van Liesdonkclaudeassisted | 4mo ago | +1.5K -0 | 92thElevated | more lines added than baseline |
| 20 | ac86a983chore: initial project structure with workflows | Peter van Liesdonk | 4mo ago | +2.4K -0 | 92thElevated | more lines added than baseline |
| 21 | 5e658e8cfeat(transfer): TransferSinkError — sink-signalled HTTP statuses (#233) (#257) | Peter van Liesdonkclaudeassisted | 3w ago | +1.1K -11 | 88thElevated | more lines added than baseline |
| 22 | d910cc6bfeat(transfer): build_transfer_links path-2 minter seam (#249) (#254) | Peter van Liesdonkclaudeassisted | 3w ago | +1.2K -61 | 88thElevated | more lines added than baseline |
| 23 | 2d9e09abfeat(transfer): SSRF-hardened fetch_url primitive (#214) (#219) | Peter van Liesdonkclaudeassisted | 1mo ago | +935 -0 | 88thElevated | more lines added than baseline |
| 24 | 89cdf9aefeat(logging): demote uvicorn/MCP-SDK access loggers below INFO (#94) | Peter van Liesdonkclaudeassisted | 3mo ago | +1.3K -0 | 88thElevated | more lines added than baseline |
| 25 | 4cee7b7cimpl: migrate capability builder to v0.3.0 source/sink shape (#86) (#89) | Peter van Liesdonkclaudeassisted | 3mo ago | +1.0K -295 | 88thElevated | more lines added than baseline |
| 26 | 5015829bspec: dual-role capability declaration via source/sink sub-objects (#83) (#84) | Peter van Liesdonkclaudeassisted | 3mo ago | +766 -33 | 88thElevated | more lines added than baseline |
| 27 | fd81e86cfeat(file-exchange): ship FileExchange runtime (env, exclusive-create, atomic IO, sweep) | Peter van Liesdonkclaudeassisted | 4mo ago | +888 -11 | 88thElevated | more lines added than baseline |
| 28 | 12ecc193feat(transfer): register_transfer_routes + link tools + TransferConfig (#218) (#226) | Peter van Liesdonkclaudeassisted | 1mo ago | +721 -9 | 85thElevated | more lines added than baseline |
| 29 | 9b43dc64feat(transfer): TransferSink seam + make_transfer_handler route (#217) (#225) | Peter van Liesdonkclaudeassisted | 1mo ago | +695 -5 | 85thElevated | more lines added than baseline |
| 30 | 049f1afbfeat(transfer): KV-backed TransferStore — one-time token store (#216) (#221) | Peter van Liesdonkclaudeassisted | 1mo ago | +794 -3 | 85thElevated | more lines added than baseline |
| 31 | e2631289feat(env): public dual-mode numeric env helpers (env_int/env_float) (#182) | Peter van Liesdonkclaudeassisted | 2mo ago | +765 -10 | 85thElevated | more lines added than baseline |
| 32 | f9a8488aspec: http_upload sender source union → origin_id; HTTP-capability clarification (#93) (#97) | Peter van Liesdonkclaudeassisted | 3mo ago | +615 -26 | 85thElevated | more lines added than baseline |
| 33 | 9ea9bb3bfeat(auth)!: support {PREFIX}_BEARER_TOKENS_FILE for token→subject mapping (#39) | Peter van Liesdonkclaudeassisted | 3mo ago | +931 -32 | 85thElevated | more lines added than baseline |
| 34 | 4910e587feat(config): domain_env_surface() — provenance + field metadata for composed sub-config vars (#241) | Peter van Liesdonkclaudeassisted | 3w ago | +556 -23 | 82thElevated | more lines added than baseline |
| 35 | 28c2568fdocs: add ADR 0001 for lifting transfer/fetch/base64 into pvl-core (#213) | Peter van Liesdonkclaudeassisted | 1mo ago | +490 -0 | 82thElevated | more lines added than baseline |
| 36 | bde321dcMake pvl-core cleanly foldable for independent forks (#195) | Peter van Liesdonkclaudeassisted | 2mo ago | +898 -31 | 82thElevated | more lines added than baseline |
| 37 | 7a9cdebffeat(apps): app_tool_meta, app_tool_address, client_supports_apps helpers (#179) | Peter van Liesdonkclaudeassisted | 3mo ago | +625 -0 | 82thElevated | more lines added than baseline |
| 38 | 64f516c4file-exchange v0.5: decouple origin_id from transport encoding (#112) | Peter van Liesdonkclaudeassisted | 3mo ago | +479 -241 | 82thElevated | more lines added than baseline |
| 39 | 7ff6e7d9test(file-exchange): e2e coverage for produce-and-consume dual-role path (#100) | Peter van Liesdonkclaudeassisted | 3mo ago | +528 -0 | 82thElevated | more lines added than baseline |
| 40 | 87ab51f7feat(visibility): operator tool allow-/denylists via TOOLS_ALLOW/TOOLS_DENY (#261) | Peter van Liesdonkclaudeassisted | 2w ago | +461 -10 | 80thElevated | more lines added than baseline |
| 41 | e2214e5dfile-exchange v0.6: symmetrize sink reference (path -> destination) (#115) | Peter van Liesdonkclaudeassisted | 3mo ago | +566 -54 | 80thElevated | more lines added than baseline |
| 42 | 7f284bfdfeat(logging): conforming tool-aware logging middleware (#96) | Peter van Liesdonkclaudeassisted | 3mo ago | +456 -124 | 80thElevated | more lines added than baseline |
| 43 | b1df0cfcdocs(spec): strip abandoned PR #37 sections from auth-subject-authz; rewrite ctx_or_request paragraph (#56) | Peter van Liesdonkclaudeassisted | 3mo ago | +333 -282 | 80thElevated | more lines added than baseline |
| 44 | 6f0913c6feat(debug): add maybe_start_debugpy helper for containerised consumers (#38) | Peter van Liesdonkclaudeassisted | 3mo ago | +589 -2 | 80thElevated | more lines added than baseline |
| 45 | 2c12723efix(auth): advertise openid + offline_access, not required_scopes (#280) (#281) | Peter van Liesdonkclaudeassisted | 1w ago | +483 -5 | 77thElevated | more lines added than baseline |
| 46 | 63783198docs(adr): ADR 0002 — task-backend config surface and dual-mode long-running tools (#266) | Peter van Liesdonkclaudeassisted | 2w ago | +356 -0 | 77thElevated | more lines added than baseline |
| 47 | bddc7731feat: add ArtifactStore with one-time token semantics | Peter van Liesdonk | 4mo ago | +386 -0 | 77thElevated | more lines added than baseline |
| 48 | 8ace334dfeat: add individual auth builders (bearer, oidc-proxy, remote) | Peter van Liesdonk | 4mo ago | +424 -3 | 77thElevated | more lines added than baseline |
| 49 | c900d339feat(artifacts): add per-token TTL, build_url/put_ephemeral, singleton accessor | Peter van Liesdonkclaudeassisted | 4mo ago | +325 -6 | 76thElevated | more lines added than baseline |
| 50 | 26e6b6affeat(icons): add register_tool_icons helper (#16) | Claudeclaudeautonomous | 4mo ago | +312 -0 | 76thElevated | more 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 200 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.
pvliesdonk/fastmcp-pvl-core has 225 commits in its history from 5 contributors, the first of them Apr 20, 2026. In the last 90 days 65 files were touched, 186 times in total, most often __init__.py. Every commit is scored for change risk from its size, spread and the history of the files it touches.