Knowledge resilience report
Fragile Resilience 41/100 · F · team profile
Dapper/SqlMapper.cs
Business implication AI-assisted onboarding cannot soften a departure here — 6 services lack the operational context (CLAUDE.md, specs, ADRs) a new contributor or agent would load first.
Establish a successor for Marc Gravell (marc.gravell@gmail.com)'s work — 10 files would orphan without them
Resilience is **Fragile** (41/100). Weakest dimension: review hygiene (F).
Risk inventory: 10 file(s) would become orphans if the top contributor leaves; 1 file(s) carry rubber-stamp review patterns; 6 service(s) lack AI-readable operational context.
Top recommended action: Establish a successor for Marc Gravell (marc.gravell@gmail.com)'s work — 10 files would orphan without them
--api-key sk-ant-... --provider anthropic --model claude-sonnet-4-6or set
narrative.api_key in .blindspot.yaml.
Without a key, this rule-based narrator is used — deterministic,
in-process, no network.
Fragile resilience overall (score 41). Weakest dimension: review hygiene at 0.
Team-based Multiple maintainers without a single dominant contributor.
Six concrete questions, each with a one-number answer. This is the
report. Each signal opens up below into the files, services and people
behind its number — run with --detailed for the
architecture deep-dive.
Concrete next steps derived from the signals in this report. Each action is tied to a specific finding — treat them as conversation starters with the team, not directives.
| Priority | Confidence | Category | Title | Target | Evidence |
|---|---|---|---|---|---|
| Medium | Low | Review Hygiene |
Review without scrutiny
Add review depth requirement for Dapper/SqlMapper.cs
100% of approvals on this file arrived without a substantive review comment (across 2 reviews). Introduce a review checklist or require at least one substantive comment before approval is allowed.
▸ 100% of approvals on this file arrived without a substantive review comment (2 reviews).
|
Dapper/SqlMapper.cs |
rubber_stamp_ratio=100%, reviews=2 |
Each signal above, opened up — the files, services and people behind the headline number. Risk signals are expanded by default; healthy ones stay collapsed.
Bus factor measures how many people would need to leave before knowledge of a service is critically lost. A bus factor of 1 means a single person carries the service.
| Service | Files | Bus factor | Risk | Top owner | Their coverage |
|---|---|---|---|---|---|
(root) |
7 | 1 | critical | Marc Gravell (marc.gravell@gmail.com) | 85% |
Dapper.StrongName |
1 | 1 | critical | Marc Gravell (marc.gravell@gmail.com) | 100% |
.github |
1 | 1 | critical | Marc Gravell (marc.gravell@gmail.com) | 100% |
Dapper |
11 | 2 | high | Henrik (henrik.gedionsen@gmail.com) | 67% |
tests |
4 | 2 | high | Marc Gravell (marc.gravell@gmail.com) | 50% |
benchmarks |
3 | 2 | high | Henrik (henrik.gedionsen@gmail.com) | 67% |
Dapper.SqlBuilder |
2 | 2 | high | David Federman (david.federman@outlook.com) | 50% |
Entirely owned by one person — the most acute knowledge risk.
| File | Owner | Coverage |
|---|---|---|
Dapper/SqlMapper.Settings.cs |
Andi (andreasblueher@github) | 100% |
Dapper.SqlBuilder/SqlBuilder.cs |
Henrik (henrik.gedionsen@gmail.com) | 100% |
Dapper/DefaultTypeMap.cs |
Henrik (henrik.gedionsen@gmail.com) | 100% |
Dapper/DynamicParameters.cs |
Henrik (henrik.gedionsen@gmail.com) | 100% |
Dapper/FeatureSupport.cs |
Henrik (henrik.gedionsen@gmail.com) | 100% |
Dapper/SqlMapper.CacheInfo.cs |
Henrik (henrik.gedionsen@gmail.com) | 100% |
Dapper/SqlMapper.DontMap.cs |
Henrik (henrik.gedionsen@gmail.com) | 100% |
Dapper/SqlMapper.Link.cs |
Henrik (henrik.gedionsen@gmail.com) | 100% |
Dapper/SqlMapper.TypeDeserializerCache.cs |
Henrik (henrik.gedionsen@gmail.com) | 100% |
For each of the top contributors by aggregate ownership coverage, this is what would happen if they left tomorrow: how many files lose their primary expert, how many become unowned (orphan, top remaining coverage < 30%), and which services take the largest hit. Use this to prioritise pair-work and knowledge transfer.
(root)
6/7 files, 5 orphan, 85% avg loss
tests
2/4 files, 2 orphan, 50% avg loss
Dapper.StrongName
1/1 files, 1 orphan, 100% avg loss
Dapper
7/11 files, 7 orphan, 67% avg loss
benchmarks
2/3 files, 2 orphan, 67% avg loss
Dapper.SqlBuilder
1/2 files, 1 orphan, 50% avg loss
tests
2/4 files, 2 orphan, 50% avg loss
Dapper
3/11 files, 2 orphan, 24% avg loss
(root)
1/7 files, 9% avg loss
Decay rises when an owner stops touching a file and others have been changing it. The 90-day projection shows the trajectory if nothing changes.
| File | Top owner | Days since touch | Decay score | Risk | 90-day projection |
|---|---|---|---|---|---|
Dapper.SqlBuilder/SqlBuilder.cs |
Henrik (henrik.gedionsen@gmail.com) | 21 | 12% | low | 37% |
Dapper/DefaultTypeMap.cs |
Henrik (henrik.gedionsen@gmail.com) | 21 | 12% | low | 37% |
Dapper/DynamicParameters.cs |
Henrik (henrik.gedionsen@gmail.com) | 21 | 12% | low | 37% |
Dapper/FeatureSupport.cs |
Henrik (henrik.gedionsen@gmail.com) | 21 | 12% | low | 37% |
Dapper/SqlMapper.CacheInfo.cs |
Henrik (henrik.gedionsen@gmail.com) | 21 | 12% | low | 37% |
Dapper/SqlMapper.DontMap.cs |
Henrik (henrik.gedionsen@gmail.com) | 21 | 12% | low | 37% |
Dapper/SqlMapper.Link.cs |
Henrik (henrik.gedionsen@gmail.com) | 21 | 12% | low | 37% |
Dapper/SqlMapper.TypeDeserializerCache.cs |
Henrik (henrik.gedionsen@gmail.com) | 21 | 12% | low | 37% |
Dapper/SqlMapper.Settings.cs |
Andi (andreasblueher@github) | 4 | 3% | low | 34% |
Dapper/SqlMapper.cs |
Andi (andreasblueher@github) | 4 | 3% | low | 34% |
Review data fetched from GitHub (21 PRs analyzed). A rubber-stamp ratio is the share of approvals on a file that arrived without a single review comment. Reviewer diversity measures whether several people share the review load.
| File | Reviewers | Reviews | Comments | Rubber-stamp |
|---|---|---|---|---|
Dapper/SqlMapper.cs |
1 | 2 | 0 | 100% |
Coverage of AI-readable organizational memory — agent rules, specs, prompts, architecture decisions, skills. The repo-root row is what the signal grades; per-service rows are shown for context. This is not an AI-generated-code detector.
| Surface | Agent rules | Specs | Prompts | Architecture | Skills | Coverage |
|---|---|---|---|---|---|---|
| (repo) | — | — | — | — | — | 0% |
| .github | — | — | — | — | — | 0% |
| Dapper | — | — | — | — | — | 0% |
| Dapper.SqlBuilder | — | — | — | — | — | 0% |
| Dapper.StrongName | — | — | — | — | — | 0% |
| benchmarks | — | — | — | — | — | 0% |
| tests | — | — | — | — | — | 0% |