The greenfield story was comfortable. Then I pointed the tool at a real Laravel codebase, 1,900 PHP files, and the comfort died in an afternoon. Nobody hand-annotates that. Not me, not a team, not for any salary.
So the tool now drafts the links itself. lattice import scans the code and proposes feature-to-symbol links. An LLM drafts them, with caching and a dumb fallback when the model has nothing. A human reviews before anything becomes truth. I made the drafts write to a sidecar map file instead of touching the source. I didn’t trust the model enough to let it edit code. Honestly, I still don’t.
I got one thing wrong first. The import reported a single “llm” label for the whole batch. That felt dishonest once I saw the real mix: 50 links from the model, 3 from cache, 2 from fallback. Now it says exactly that.
Provenance was an afterthought this week. I suspect it becomes load-bearing later.