惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
GbyAI
GbyAI
S
SegmentFault 最新的问题
量子位
爱范儿
爱范儿
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
aimingoo的专栏
aimingoo的专栏
V
Visual Studio Blog
U
Unit 42
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The Cloudflare Blog
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
J
Java Code Geeks
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
IT之家
IT之家
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
雷峰网
雷峰网

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Why 'Who Last Touched This File' Is the Wrong Question
karl-heinz reichel · 2026-05-28 · via DEV Community

A file can have five contributors on record and still be fully owned by
someone who left the company fourteen months ago.

The commit history looks healthy. The risk is invisible.

This is the gap that most repository analytics tools don't close — and
the reason I built Calyntro around a different concept: temporal ownership.


The Problem with Static Ownership Snapshots

Standard ownership tools take a snapshot. They look at the current state
of the repository and assign files to whoever touched them most recently,
or most often, within a fixed window.

That snapshot misses something critical: time.

Consider a module where one developer wrote 80% of the code over a
two-year period, then left 18 months ago. Since their departure, three
other developers have each made small fixes. A static tool shows:
four contributors, recent activity, looks fine.

What it doesn't show: the architectural decisions, the implicit
constraints, the edge cases that were never documented — all of that
left with the person who built it.


Temporal Ownership: A Different Question

Calyntro tracks what we call temporal ownership — who wrote the code,
when they wrote it, whether they are still active in that module, and
whether anyone else has built real understanding of it since.

The question is not "who owns this file today?"

It is: "who would be left holding it if the person who built it walked
out the door tomorrow?"

This distinction matters most in modules with high churn — code that
is actively changing. A siloed module nobody touches is a known, stable
risk. A siloed module that changes every sprint is an incident waiting
to happen.


What This Looks Like in Practice: MongoDB

We ran Calyntro against the MongoDB open-source repository — roughly
500,000 commits, one of the most professionally maintained codebases
in the world. Structured contribution guidelines, active code review,
long-term maintainers.

Here is what temporal ownership analysis found:

  • 17 of 43 modules show measurable knowledge risk
  • 2 modules at 100% silo ratio — one person, no meaningful backup
  • 1 developer holds exclusive knowledge of 161 files in a single module
  • The module with the highest churn rate carries 38.2% silo risk

That last combination is the most dangerous: code that changes constantly,
understood by exactly one person.

This is not a startup with three engineers and no processes. If knowledge
concentration shows up in MongoDB, it shows up everywhere.


The Metrics Calyntro Uses

Silo Ratio
The share of files in a module where a single developer holds exclusive
knowledge. A silo ratio of 100% means one person is the sole knowledge
holder for every file in that module.

Bus Factor
The number of people whose departure would immediately create a knowledge
gap. A bus factor of 1 is a single point of failure.

Churn Rate
How actively a module is changing. High churn combined with high silo
risk is the most dangerous combination.

Knowledge Risk Score
A combined metric that weights silo ratio, churn, and the activity status
of knowledge holders. It surfaces modules that need attention — before
a departure forces the issue.


How It Works Technically

Calyntro reads only Git history — not your source code.

No code leaves your system. No agents. No instrumentation. The analysis
runs against commit metadata: who committed what, when, to which files,
how often.

Stack:

  • Backend: FastAPI + DuckDB (embedded, no external database required)
  • Frontend: React + Vite
  • Deployment: Docker, fully self-hosted
  • All metrics accessible via open REST API

The DuckDB approach for analytical queries over Git history was one of
the more interesting technical decisions — it handles the time-series
aggregations cleanly without needing a dedicated database server. Happy
to go into detail on that in the comments if there's interest.


Try It

Live demo running against the MongoDB repository: demo.calyntro.com

Self-hosting docs: calyntro.com

If you've dealt with knowledge loss after a key engineer left — or you're
trying to figure out which parts of your codebase are quietly becoming
single points of failure — I'd genuinely like to hear how you're
approaching it.