Problem
A commit is attributed to a session if its timestamp falls inside [firstTimestamp, lastTimestamp + 1h] (src/yield.ts:154). Attribution is per repo, falling back to cwd when projectPath is missing. Two sessions overlapping in the same repo each see the other's commits inside their window, so a session that shipped nothing can land in the productive bucket. The rendered output then states the classification as fact ("sessions shipped to main", src/yield.ts:236-238) with no caveat; the only hedge is the word (experimental) in --help, which never appears in the report itself.
Evidence
- src/yield.ts:152-160 (window), :199-205 (repo/cwd fallback), :236-238 (unhedged wording)
- Verified on main at 1a75484.
Proposed fix
- Put a one-line attribution caveat in the text report and a field in the JSON.
- Mark sessions with overlapping windows in the same repo as ambiguous instead of double-crediting.
- Optionally tighten correlation (branch match, or commit author-time strictly inside the session span) before the +1h grace applies.
Problem
A commit is attributed to a session if its timestamp falls inside
[firstTimestamp, lastTimestamp + 1h](src/yield.ts:154). Attribution is per repo, falling back to cwd whenprojectPathis missing. Two sessions overlapping in the same repo each see the other's commits inside their window, so a session that shipped nothing can land in the productive bucket. The rendered output then states the classification as fact ("sessions shipped to main", src/yield.ts:236-238) with no caveat; the only hedge is the word (experimental) in --help, which never appears in the report itself.Evidence
Proposed fix