2026-04-16 to 2026-04-17
Pareto distribution across files, developers, and directories. Few items carrying 80% of activity means high concentration. Red and yellow markers deserve a closer look โ concentration may signal a critical core module or a knowledge bottleneck, depending on context.
Monthly commit heatmap. Darker = more commits. Sudden drop-offs may mark team changes, re-orgs, or freezes; steady cadence signals healthy pace. Hover for details; toggle to table for exact numbers.
| Period | Commits | Additions | Deletions | Del/Add |
|---|---|---|---|---|
| 2026-04 | 112 | 9514 | 2505 | 0.26 |
Ranked by commit count. High commit count with low lines may indicate small fixes; low count with high lines may indicate large features.
| Name | Commits | Additions | Deletions | ||
|---|---|---|---|---|---|
| lex0c | lex0c@proton.me | 112 | 9514 | 2505 |
Most frequently changed files. High churn with few devs = knowledge silo. High churn with many devs = shared bottleneck.
| Path | Commits | Churn | Devs | |
|---|---|---|---|---|
| README.md | 31 | 567 | 1 | |
| cmd/gitcortex/main.go | 31 | 1128 | 1 | |
| internal/stats/stats.go | 23 | 1952 | 1 | |
| internal/report/template.go | 20 | 517 | 1 | |
| internal/report/report.go | 20 | 687 | 1 | |
| internal/stats/reader.go | 15 | 570 | 1 | |
| docs/RUNBOOK.md | 12 | 508 | 1 | |
| internal/report/profile_template.go | 12 | 287 | 1 | |
| internal/stats/format.go | 12 | 553 | 1 | |
| internal/extract/extract.go | 12 | 925 | 1 | |
| internal/stats/stats_test.go | 7 | 906 | 1 | |
| docs/TODO.md | 6 | 124 | 1 | |
| internal/git/stream.go | 6 | 430 | 1 | |
| internal/git/commands.go | 5 | 1064 | 1 | |
| .gitignore | 3 | 5 | 1 | |
| internal/extract/extract_test.go | 3 | 137 | 1 | |
| .github/workflows/ci.yml | 3 | 37 | 1 | |
| internal/git/catfile.go | 3 | 124 | 1 | |
| go.mod | 3 | 14 | 1 | |
| Makefile | 2 | 30 | 1 | |
| internal/report/report_test.go | 2 | 248 | 1 | |
| docs/DEPLOY.md | 2 | 109 | 1 | |
| docs/METRICS.md | 2 | 194 | 1 | |
| internal/git/discard.go | 2 | 94 | 1 | |
| internal/git/parse.go | 2 | 354 | 1 | |
| internal/model/model.go | 1 | 52 | 1 | |
| LICENSE | 1 | 21 | 1 | |
| internal/git/stream_test.go | 1 | 224 | 1 | |
| .github/workflows/pages.yml | 1 | 53 | 1 | |
| go.sum | 1 | 10 | 1 |
Module-level health. Commits and churn aggregated by directory. Low bus factor = knowledge concentrated in few people.
| Directory | Commits | Churn | Files | Devs | Bus Factor |
|---|---|---|---|---|---|
| internal/stats | 57 | 3981 | 4 | 1 | 1 |
| internal/report | 54 | 1739 | 4 | 1 | 1 |
| . | 41 | 647 | 6 | 1 | 1 |
| cmd/gitcortex | 31 | 1128 | 1 | 1 | 1 |
| docs | 22 | 935 | 4 | 1 | 1 |
| internal/git | 20 | 2344 | 7 | 1 | 1 |
| internal/extract | 15 | 1062 | 2 | 1 | 1 |
| .github/workflows | 5 | 131 | 3 | 1 | 1 |
| internal/model | 1 | 52 | 1 | 1 | 1 |
Files ranked by recent churn weighted by bus factor. High risk = lots of recent changes owned by few people. Prioritize knowledge transfer here.
| Path | Risk | Recent Churn | Bus Factor | Last Change | |
|---|---|---|---|---|---|
| internal/stats/stats.go | 1937.0 | 1937.0 | 1 | 2026-04-16 | |
| cmd/gitcortex/main.go | 1119.7 | 1119.7 | 1 | 2026-04-17 | |
| internal/git/commands.go | 1054.6 | 1054.6 | 1 | 2026-04-16 | |
| internal/extract/extract.go | 917.0 | 917.0 | 1 | 2026-04-17 | |
| internal/stats/stats_test.go | 899.5 | 899.5 | 1 | 2026-04-16 | |
| internal/report/report.go | 682.8 | 682.8 | 1 | 2026-04-16 | |
| internal/stats/reader.go | 565.6 | 565.6 | 1 | 2026-04-16 | |
| README.md | 562.9 | 562.9 | 1 | 2026-04-17 | |
| internal/stats/format.go | 548.7 | 548.7 | 1 | 2026-04-16 | |
| internal/report/template.go | 513.9 | 513.9 | 1 | 2026-04-17 | |
| docs/RUNBOOK.md | 504.1 | 504.1 | 1 | 2026-04-17 | |
| internal/git/stream.go | 426.4 | 426.4 | 1 | 2026-04-16 | |
| internal/git/parse.go | 350.9 | 350.9 | 1 | 2026-04-16 | |
| internal/report/profile_template.go | 285.5 | 285.5 | 1 | 2026-04-17 | |
| internal/report/report_test.go | 247.7 | 247.7 | 1 | 2026-04-17 | |
| internal/git/stream_test.go | 222.2 | 222.2 | 1 | 2026-04-16 | |
| docs/METRICS.md | 193.0 | 193.0 | 1 | 2026-04-17 | |
| internal/extract/extract_test.go | 136.0 | 136.0 | 1 | 2026-04-17 | |
| docs/TODO.md | 123.1 | 123.1 | 1 | 2026-04-16 | |
| internal/git/catfile.go | 122.9 | 122.9 | 1 | 2026-04-16 | |
| docs/DEPLOY.md | 108.4 | 108.4 | 1 | 2026-04-16 | |
| internal/git/discard.go | 93.3 | 93.3 | 1 | 2026-04-16 | |
| internal/git/parse_test.go | 53.6 | 53.6 | 1 | 2026-04-16 | |
| .github/workflows/pages.yml | 52.7 | 52.7 | 1 | 2026-04-16 | |
| internal/model/model.go | 51.5 | 51.5 | 1 | 2026-04-16 | |
| .github/workflows/release.yml | 40.8 | 40.8 | 1 | 2026-04-16 | |
| .github/workflows/ci.yml | 36.8 | 36.8 | 1 | 2026-04-17 | |
| Makefile | 29.8 | 29.8 | 1 | 2026-04-16 | |
| LICENSE | 20.9 | 20.9 | 1 | 2026-04-16 | |
| go.mod | 13.9 | 13.9 | 1 | 2026-04-16 |
Files with fewest developers owning 80%+ of changes. Bus factor 1 = if that person leaves, nobody else knows the code.
| Path | Bus Factor | Top Devs |
|---|---|---|
| internal/git/parse.go | 1 | lex0c@proton.me |
| internal/git/parse_test.go | 1 | lex0c@proton.me |
| internal/git/stream.go | 1 | lex0c@proton.me |
| internal/stats/stats_test.go | 1 | lex0c@proton.me |
| cmd/gitcortex/main.go | 1 | lex0c@proton.me |
| .github/workflows/ci.yml | 1 | lex0c@proton.me |
| internal/extract/extract_test.go | 1 | lex0c@proton.me |
| internal/stats/stats.go | 1 | lex0c@proton.me |
| .github/workflows/release.yml | 1 | lex0c@proton.me |
| Makefile | 1 | lex0c@proton.me |
| docs/TODO.md | 1 | lex0c@proton.me |
| internal/git/commands.go | 1 | lex0c@proton.me |
| internal/git/discard.go | 1 | lex0c@proton.me |
| go.sum | 1 | lex0c@proton.me |
| docs/METRICS.md | 1 | lex0c@proton.me |
| internal/report/template.go | 1 | lex0c@proton.me |
| .github/workflows/pages.yml | 1 | lex0c@proton.me |
| docs/DEPLOY.md | 1 | lex0c@proton.me |
| go.mod | 1 | lex0c@proton.me |
| internal/git/stream_test.go | 1 | lex0c@proton.me |
| internal/model/model.go | 1 | lex0c@proton.me |
| internal/report/profile_template.go | 1 | lex0c@proton.me |
| LICENSE | 1 | lex0c@proton.me |
| internal/report/report_test.go | 1 | lex0c@proton.me |
| README.md | 1 | lex0c@proton.me |
| internal/extract/extract.go | 1 | lex0c@proton.me |
| internal/stats/format.go | 1 | lex0c@proton.me |
| internal/git/catfile.go | 1 | lex0c@proton.me |
| docs/RUNBOOK.md | 1 | lex0c@proton.me |
| internal/report/report.go | 1 | lex0c@proton.me |
Files that always change together. Expected for test+code pairs. Unexpected coupling between unrelated modules signals hidden dependencies.
| File A | File B | Co-changes | Coupling |
|---|---|---|---|
| cmd/gitcortex/main.go | internal/stats/stats.go | 15 | |
| internal/report/report.go | internal/report/template.go | 13 | |
| internal/stats/format.go | internal/stats/stats.go | 12 | |
| README.md | docs/RUNBOOK.md | 11 | |
| cmd/gitcortex/main.go | internal/stats/format.go | 10 | |
| cmd/gitcortex/main.go | internal/extract/extract.go | 9 | |
| cmd/gitcortex/main.go | internal/report/report.go | 9 | |
| cmd/gitcortex/main.go | internal/stats/reader.go | 8 | |
| cmd/gitcortex/main.go | internal/report/template.go | 7 | |
| internal/stats/reader.go | internal/stats/stats.go | 6 | |
| internal/report/report.go | internal/stats/stats.go | 6 | |
| internal/report/template.go | internal/stats/stats.go | 6 | |
| cmd/gitcortex/main.go | internal/git/commands.go | 5 | |
| internal/extract/extract.go | internal/git/commands.go | 5 | |
| internal/extract/extract.go | internal/git/stream.go | 5 |
Commit distribution by day and hour. Reveals team timezones, work-life balance, and off-hours work patterns.
Largest commits by lines changed. Unusually large commits may be imports, generated code, or risky big-bang changes worth reviewing.
| SHA | Author | Date | Lines | Files |
|---|---|---|---|---|
| 542f47ed92c0 | lex0c | 2026-04-16 | 1400 | 6 |
| 20c0f0e600ed | lex0c | 2026-04-16 | 1391 | 9 |
| 303fdb523ad6 | lex0c | 2026-04-16 | 763 | 3 |
| 84dd74ac76e4 | lex0c | 2026-04-16 | 737 | 4 |
| 4a19388afdad | lex0c | 2026-04-16 | 712 | 3 |
| 13af042987ad | lex0c | 2026-04-16 | 684 | 4 |
| 17b33dfbc7b3 | lex0c | 2026-04-16 | 394 | 1 |
| 6ae4afd182a7 | lex0c | 2026-04-16 | 379 | 4 |
| b6e80be54de9 | lex0c | 2026-04-17 | 273 | 4 |
| 4957e872532b | lex0c | 2026-04-16 | 251 | 7 |
| c6dc96c0d1ea | lex0c | 2026-04-16 | 229 | 3 |
| 8658c89778fb | lex0c | 2026-04-16 | 213 | 4 |
| b5cc24515f09 | lex0c | 2026-04-16 | 196 | 4 |
| c47bd1952d9b | lex0c | 2026-04-16 | 189 | 1 |
| fa44c6a2599d | lex0c | 2026-04-16 | 180 | 2 |
| afb78e236eb0 | lex0c | 2026-04-16 | 170 | 3 |
| 520c80325dc8 | lex0c | 2026-04-16 | 156 | 3 |
| a805b78e708c | lex0c | 2026-04-16 | 154 | 5 |
| 1bf9bd6ab269 | lex0c | 2026-04-16 | 151 | 3 |
| dbfa375bb106 | lex0c | 2026-04-16 | 141 | 6 |
| 7c19dc328289 | lex0c | 2026-04-16 | 139 | 1 |
| b6168797b0ab | lex0c | 2026-04-16 | 138 | 2 |
| 50ff1e0deebd | lex0c | 2026-04-16 | 135 | 1 |
| 371e59e9d0d7 | lex0c | 2026-04-16 | 132 | 1 |
| 6fc0e9aab08c | lex0c | 2026-04-16 | 125 | 3 |
| a7fc76f62d6f | lex0c | 2026-04-16 | 122 | 1 |
| 76f79d5237eb | lex0c | 2026-04-16 | 118 | 3 |
| 0bdd496b04df | lex0c | 2026-04-16 | 109 | 2 |
| f01dec82ddd1 | lex0c | 2026-04-16 | 103 | 5 |
| cdbc8e0268bc | lex0c | 2026-04-16 | 97 | 1 |
Per-developer view. Use to spot silos (narrow scope + few collaborators), knowledge concentration (high pace on few directories), and cultural patterns (weekend or refactor-heavy work).