Files with the highest combination of change frequency and waste ratio. These are candidates for refactoring or closer review.
Cumulative contribution over time. Watch developers race as positions shift month by month.
Commit activity distribution by hour and day of week across all contributors in this repository.
Performance has many faces. Navigara breaks down the effort to visualize what parts of codebase has been changed and where energy flowed. Our Architect AI can break the performance even further into particular components and patterns.
Breakdown of file changes over time. Play the timeline to see how change types evolved across periods.
Monthly overview of bugs introduced and fixed, based on symbol-level commit analysis. Fixes show whether the original author fixed their own bug (self-fix) or someone else did (cross-fix).
Bug attribution uses symbol-level matching from commit history. For each fix commit, we look at the changed symbols (functions, classes, methods) and trace backwards to find who last modified that symbol in a non-fix commit. This person is the probable bug introducer. The algorithm only works when commits have symbol-level data from the Navigara analysis engine — the coverage rate shows what percentage of fix commits had this data available.
The current metrics model has a semantic inversion: when developer A creates a feature with a bug, they receive grow (positive). When developer B fixes that bug, they receive waste (negative). The bug creator is rewarded while the fixer is penalized. Bug attribution addresses this by explicitly tracking who introduced bugs and who fixed them, providing a more accurate picture of code quality contributions.
Currently computed client-side from commit data. Ideal server-side endpoint:
POST /v1/repositories/{repositoryId}/bug-attributions
Content-Type: application/json
Request:
{
"startTime": "2025-01-01T00:00:00Z",
"endTime": "2025-12-31T23:59:59Z"
}
Response:
{
"totalBugsAttributed": 42,
"selfFixRate": 35,
"coverageRate": 78,
"attributions": [
{
"filePath": "src/lib/auth.ts",
"symbol": "validateToken",
"introducer": { "name": "Alice", "email": "alice@co.com", "commitSha": "abc123" },
"fixer": { "name": "Bob", "email": "bob@co.com", "commitSha": "def456" },
"fixedAt": "2025-06-15T10:30:00Z",
"isSelfFix": false
}
]
}Reclassifies engineering effort based on bug attribution. Commits that introduced bugs are retrospectively counted as poor investments.
Investment Quality reclassifies engineering effort based on bug attribution data. Commits identified as buggy origins (those that introduced bugs later fixed by someone) have their grow and maintenance time moved into the Wasted Time category. Their waste (fix commits) remains counted as productive. All other commits retain their standard classification: grow is productive, maintenance is maintenance, and waste (fixes) is productive.
The standard model classifies commits as Growth, Maintenance, or Fixes. Investment Quality adds a quality lens: a commit that introduced a bug is retrospectively counted as a poor investment — the engineering time spent on it was wasted because it ultimately required additional fix work. Fix commits (Fixes in the standard model) are reframed as productive, because fixing bugs is valuable work.
Currently computed client-side from commit and bug attribution data. Ideal server-side endpoint:
POST /v1/organizations/{orgId}/investment-quality
Content-Type: application/json
Request:
{
"startTime": "2025-01-01T00:00:00Z",
"endTime": "2025-12-31T23:59:59Z",
"bucketSize": "BUCKET_SIZE_MONTH",
"groupBy": ["repository_id" | "deliverer_email"]
}
Response:
{
"productivePct": 74,
"maintenancePct": 18,
"wastedPct": 8,
"buckets": [
{
"bucketStart": "2025-01-01T00:00:00Z",
"productive": 4.2,
"maintenance": 1.8,
"wasted": 0.6
}
]
}Latest analyzed commits in this repository.
| Hash | Message | Author | Effort |
|---|---|---|---|
| 5a453c9 | Handle resizable BufferSources in Response initializers | James M Snell | maint |
| 50417a4 | Add compat flag to prevent creating Blob with resizable ArrayBuffer | James M Snell | maint |
| 58ad97f | add ArrayBuffer, ArrayBufferView, SharedArrayBuffer, and BackingStore to Rust JSG (#6398) | Yagiz Nizipli | grow |
| 2ed5d7a | Changing conditional etag parsing from recursive to iterative | James M Snell | maint |
| d160fa5 | STREAM-6735: change input types on watermarks and captions to be ReadableStream | natewong1313 | maint |
| 56862af | Multiple improvements to blob implementation | James M Snell | maint |
| 6359118 | Remove experimental gate from snapshots API | Greg Anders | grow |
| 5555f40 | Release 2026-03-31 | Workers DevProd | maint |
| 7a8550f | containers: Use $ to prefix the std properties to avoid collision with stdio | Gabi Villalonga Simon | maint |
| 2db3d89 | update dependencies to latest version | Workers DevProd | maint |
Handle resizable BufferSources in Response initializers
Add compat flag to prevent creating Blob with resizable ArrayBuffer
add ArrayBuffer, ArrayBufferView, SharedArrayBuffer, and BackingStore to Rust JSG (#6398)
Changing conditional etag parsing from recursive to iterative
STREAM-6735: change input types on watermarks and captions to be ReadableStream
Multiple improvements to blob implementation
Remove experimental gate from snapshots API
Release 2026-03-31
containers: Use $ to prefix the std properties to avoid collision with stdio
update dependencies to latest version
Average context complexity and engagement score of file changes over time. Higher complexity means more intricate changes; higher impact means broader effect on the codebase.
Contributors ranked by total performance (ETV) from analyzed commits.
| # | |||||
|---|---|---|---|---|---|
| 1 | Yagiz Nizipli380 commits | 128.7 | 55.9 | 42.4 | 30.3 |
| 2 | James M Snell509 commits | 87.5 | 33.3 | 32.9 | 21.3 |
| 3 | Nicholas Paun115 commits | 37.8 | 5.7 | 28.5 | 3.7 |
| 4 | Felix Hanau286 commits | 33.5 | 3.7 | 23.7 | 6.1 |
| 5 | Kenton Varda231 commits | 19.2 | 6 | 9.1 | 4.1 |
| 6 | Hood Chatham157 commits | 16 | 2.4 | 8 | 5.7 |
| 7 | Dan Lapid4 commits | 14.8 | 3.8 | 2.3 | 8.7 |
| 8 | Erik Corry23 commits | 13.8 | 0.2 | 3.6 | 10.1 |
| 9 | Dominik Picheta115 commits | 12.4 | 4.9 | 2.5 | 5 |
| 10 | Guy Bedford21 commits | 9.4 | 5.4 | 3.8 | 0.3 |
| 11 | Mike Aizatsky83 commits | 7.6 | 1.3 | 5.4 | 0.9 |
| 12 | Workers DevProd340 commits | 6.9 | 0 | 6.9 | 0 |
| 13 | mar-cf59 commits | 5.2 | 1.3 | 2.4 | 1.5 |
| 14 | Gregory Anders14 commits | 4.5 | 3.2 | 1.2 | 0.1 |
| 15 | Gabi41 commits | 4.3 | 1.8 | 0.6 | 1.9 |
| 16 | Harris Hancock35 commits | 4 | 1.2 | 1.9 | 0.9 |
| 17 | Pete Bacon Darwin8 commits | 4 | 0.3 | 0.3 | 3.3 |
| 18 | Ketan Gupta36 commits | 3.9 | 0.7 | 3 | 0.3 |
| 19 | Kevin Jain17 commits | 3.7 | 2.7 | 0.9 | 0 |
| 20 | Somhairle MacLeòid24 commits | 2.6 | 0.3 | 1 | 1.4 |
| 21 | tewaro24 commits | 2.4 | 0.5 | 1.1 | 0.7 |
| 22 | Gabriel Massadas8 commits | 2.3 | 1.9 | 0.2 | 0.3 |
| 23 | Jeremy Morrell (Cloudflare)21 commits | 2 | 0.8 | 0.8 | 0.4 |
| 24 | Joe Lee21 commits | 1.6 | 0.1 | 0.5 | 1 |
| 25 | justin-mp23 commits | 1.6 | 0.7 | 0.5 | 0.3 |
| 26 | Caio Nogueira0 commits | 1.5 | 1.2 | 0 | 0.2 |
| 27 | Milan Miladinovic14 commits | 1.1 | 0.2 | 0.2 | 0.8 |
| 28 | Alex Robinson14 commits | 1 | 0.5 | 0.2 | 0.3 |
| 29 | Lambros Petrou0 commits | 0.9 | 0.2 | 0.6 | 0.1 |
| 30 | Josh Howard9 commits | 0.8 | 0.6 | 0.2 | 0 |
| 31 | Nuno Pereira10 commits | 0.7 | 0.4 | 0.2 | 0.1 |
| 32 | Victor Berchet25 commits | 0.7 | 0.1 | 0.4 | 0.2 |
| 33 | Sunil Pai3 commits | 0.4 | 0.3 | 0.1 | 0 |
| 34 | emily-shen11 commits | 0.3 | 0 | 0.3 | 0 |
| 35 | Daniel Walsh0 commits | 0.2 | 0 | 0 | 0.2 |
| 36 | Matt Silverlock12 commits | 0.1 | 0.1 | 0.1 | 0 |
| 37 | Edmund Hung2 commits | 0.1 | 0.1 | 0 | 0 |
| 38 | deathbyknowledge1 commits | 0.1 | 0.1 | 0 | 0 |
Repository
workerd
The JavaScript / Wasm runtime that powers Cloudflare Workers
Average Developer Performance (ETV)
Year-by-year Trend:+676%