Reporting exports now come in two versions: version 3, the default, and version 5 for joint cells. `--schema-version 4` is rejected before the archive opens. Integrations get one joint contract instead of two, and the export code loses the second joint path that #2304 added. This benefits both users and developers.
Version 5 has the same fields and accounting as version 4 and differs only in how it groups projects. Version 4 puts every contribution under one project label. A single session with missing or different repository evidence therefore hides a verified repository's activity. Moving to version 5 already requires new project keys and refreshed digests, so keeping version 4 would preserve only that hiding behavior. Retiring it now means 0.46.0, the first release with version 5, ships a single joint version. Versions 1 and 2 were retired the same way when version 3 arrived. Version 3 stays as the default because it has a different shape (no joint cells, bucket choice, or project scope) and plain invocations rely on it.
**Breaking change:** integrations using version 4 must switch to version 5. They must read new project keys from the project breakdowns or `joint.projects` of an unscoped export, and refresh saved digests. The changelog and the export guide say so.
Where to look:
- `internal/db/reporting_export.go`: identity grouping now always applies to joint exports.
- `internal/db/reporting_identity_test.go`: one test required every session under a label to share evidence, which is version 4 behavior. Its snapshot-consistency and identity-correction checks now assert the version 5 result: the verified repository keeps its key, and the corrected session moves to an unknown group. Its other cases already exist in the version 5 grouping tests.
- `docs/reporting-export.md`: the identity-evidence section no longer says that a key identifies only a label, or that conflicting identities produce `ambiguous`.
Most other test changes update version numbers or unwrap loops over versions 4 and 5.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Wes McKinney <wesm@users.noreply.github.com>
Reporting export version 5 keeps known repository activity selectable when another session with the same project name has missing, conflicting, or different repository evidence. Today those contributions collapse into one unresolved project, hiding the known portion from scoped reports.
The new version groups activity and usage by each session’s saved identity before aggregation. Project selection applies to the complete report, including totals and concurrency. It uses existing archive evidence without inspecting checkouts or changing stored data.
Versions 3 and 4 keep their existing behavior. Consumers opting into version 5 must obtain new project keys and refresh saved digests. See the export contract for the grouping rules.