One inversion kept surfacing all week. Every rule I’d want (annotate every function, one feature per folder, spec before code) is exactly the discipline human teams reject. Too much friction.
So why are we giving AI the freedoms we gave humans, when it’s the constraints that would make its output checkable?
I started a small Go CLI to test this. Tree-sitter parses the source, annotations on the code declare intent, and a deterministic pipeline builds a knowledge graph linking every symbol to the feature it implements. Same input, byte-identical graph, every time. I’m strict about that part. A graph you can’t reproduce is a graph you can’t trust. Everything lives in one lattice/ directory, in git.
The bet: this graph is the project context. Hand it to the AI instead of the repo and the re-explaining ritual dies.
Doubt for the record: will anyone (including me) keep annotations honest? A stale link might be worse than no link.