The commits keep landing. The deploys go out. Issues close inside a day.
The repo has never looked healthier.
None of that says anything about the person maintaining it.
Output is the last thing to go. It is also the only thing anyone measures.
In a team, somebody notices first. The person who went quiet in standup. The reviewer whose comments got shorter. The one who stopped arguing in design docs. Not a process. Just proximity. Enough people nearby that someone sees it before the person does.
Solo, nobody holds that position. The only observer is the one running empty. The evidence they check is the commit log. It still looks fine.
The work continues. Something else changes instead.
What gets done is what was already due. The filed bug. The dependency that has to be bumped. The release that was promised. All of it lands. None of it was chosen.
Issues get closed instead of answered. The README stops getting updated, because nothing is being added worth documenting. The refactor that costs a week and pays back for two years stays a note. The ticket that can be finished today wins every time.
Same volume. Different price.
This does not come from too much work. It comes from work that is all owed and none chosen.
The owed work arrives on its own. Someone files it. Something breaks. A deadline lands. The other kind has to be generated. That is the part that ran out.
From outside, none of that is distinguishable from discipline.
Ships what is due. Resists scope creep. Adds nothing speculative. Keeps the project feature-complete. Nobody would call that a problem.
The behavior is identical. Only one of them is choosing.
The disciplined builder still has the ideas. They arrive, get looked at, get declined. Saying no is the work.
The empty one is not declining anything. The ideas stopped arriving. There is nothing left to say no to, and the silence gets mistaken for restraint.
So the signal that separates them is not in anything a repo tracks.
The backlog stops growing.
Not cleared. Not triaged down. It stops taking on new entries. The half-formed ideas. The "what if it also did this." The branch opened on a Sunday for something nobody asked for. Those go first. Every tool counts what got closed. Nothing counts what stopped getting opened.
Even the count is not quite the tell. A builder with hard scope discipline keeps the backlog empty on purpose.
The tell is whether the ideas still arrive. One person can see that. The same one grading themselves on the commit log.
A dead project is a different thing.
Retiring one is a decision. It costs something to make and it returns room. One fewer plate. One less domain renewed out of guilt.
This returns nothing. The project is still running. Still owed the security patch, the answered issue, the release on time. Nothing can be retired out of it, because what ran out was never a project.
The repo stays alive. That was never the question.
A dead project announces itself.
A builder running empty ships on schedule.