Under the hood
Code-attribution tracking now supports multiple project roots
What
The attribution tracker that records how much of each file's content came from Claude versus a human (used for the code-attribution report) now records an optional root alongside each file's content hash, Claude-contribution data, and modification time. The key used to look up a file's attribution state is now computed relative to a resolved root, instead of using a flat path-based key as before.
Why
This lets attribution tracking correctly handle files across multiple project roots, rather than assuming everything lives under a single root.