Case study — shipped

Symbiote

An autonomous engine that types an entire Python codebase and hands your team one reviewable PR. Strictly additive, collision-free by construction, and merged by maintainers who owed me nothing.

Status

Shipped · in production at CallMed AI

Public proof

9 PRs merged: mpfb2 ×7, aeon, mellea

Delivery gate

0 pyright errors, confirmed pre-delivery

Scale

2,029 files mapped in one pass (LangChain)

Safety

Additive-only · Bouncer locks · kernel.log audit

The job nobody schedules

Every Python team I've talked to has the same item rotting at the bottom of the backlog: type the codebase. Everyone agrees it should happen. Static analysis would work, IDE autocomplete would work, the linters would finally go quiet. And nobody will spend three sprints of a senior engineer's time on it, because typing ten thousand functions by hand is miserable work with no visible feature at the end.

That's the gap Symbiote fills. It's an autonomous engine that reads a Python repository, works out what every function actually accepts and returns, and delivers complete PEP 484 type annotations as a single reviewable pull request. Your team reviews and merges. I never touch main.


How it works

Symbiote runs in three stages.

Perception. The engine parses the repository into a typed AST dependency graph and computes a blast radius for every file: which modules import it, which call paths run through it, what breaks if it changes. On the LangChain framework this pass mapped 2,029 files in a single cycle. The output doubles as a free Reconnaissance Scan, so a prospective client sees their missing-coverage map before paying anything.

The Mirror Pass. An agent walks the graph and writes typed signatures file by file. The design constraint that matters most here is that the pass is strictly additive. It adds annotations to existing signatures and does nothing else. Execution logic stays untouched. Docstrings, inline comments, and doctests are preserved verbatim. Before any write reaches disk, a deterministic check aborts it if a function's existing docstring would shrink by more than 20% — a hard guard against the quiet destruction that full-file LLM rewrites are prone to.

Delivery. All work happens on a dedicated symbiote/plan-{id} branch, and the client receives one pull request with 0 pyright errors confirmed before it goes out. Worst-case rollback is git branch -D.


The Bouncer

The hard problem in autonomous code mutation isn't generating plausible edits. It's letting multiple agents write to one repository without stepping on each other. Two agents editing overlapping dependency chains at the same time will produce a merge that compiles and lies.

Symbiote's answer is a concurrency layer I call the Bouncer. Every write is preceded by a granted lock with transitive blast-radius checking, so two agents physically cannot modify overlapping dependency chains simultaneously. Every lock acquire, wait, release, and denial lands in kernel.log with monotonic-nanosecond timestamps, and every run ends with a verdict line: COLLISION-FREE ✓ or COLLISION DETECTED ⚠. Not a summary. A verdict you can grep.


Proof

I don't think a system like this can be evaluated from a demo, so the evidence is public. Nine Symbiote pull requests have been reviewed and merged by open-source maintainers across three projects: seven in mpfb2 (the MakeHuman Blender plugin — #377, #378, #380, #381, #384, #385, #390), one in aeon #235, and one in mellea #1263.

Maintainers of established projects have no reason to be polite to a stranger's bot. They merged because the diffs were correct and boring, which is exactly what a type-annotation diff should be.

In a self-refactor run, the engine produced over 2,000 insertions across 19 files without breaking a single dependency lock.


What it doesn't do, on purpose

Symbiote v1 does not generate docstrings, even though clients ask for it. I tested docstring generation and found that full-file rewrites under context-budget pressure will sometimes compress existing prose on large, well-documented codebases. That failure mode is unacceptable, so the feature waits for the v2 architecture, which splices changes at the ParsedNode level instead of rewriting files. Shipping less was the right call.


Engagement

A Mirror Pass on a full Python repository is $1,500 flat, delivered as a reviewable PR within 72 hours of kickoff. The Reconnaissance Scan is free, read-only, and includes a fixed quote. Details at callmedai.com.


← All workRepoMend