Skip to content

feat(framework): resolve one person across tools and machines #661

Description

@blafourcade

As a team lead reading a report
I want one person to appear as one person, whatever tool they used
So that a weekly figure is a fact rather than an artefact of how many tools someone happens to run

Acceptance

  • The same human working through two different tools appears once in a report, not twice.
  • The same human on two machines appears once.
  • A person absent from the mapping is reported as unresolved and counted separately, never silently merged into someone else or dropped.
  • The mapping is auditable: given a report line, one can see which raw identities produced it.
  • A person can see the identities mapped to them before anyone else reads a report about them.
  • Whether identities are stored as names or as pseudonyms follows the decision issue, and is not chosen here.

Why this is not trivial

Measured: the same human carries a different identifier per tool, and none of them is the git identity that appears in commits.

Tool Identity attributes it exports
Claude Code user.email, user.account_uuid, user.account_id, user.id, organization.id
Codex CLI user.email, account_id
Cursor user_email in the hook payload
GitHub Copilot enduser.pseudo.id, described as pseudonymous
OpenCode not established

Copilot's is pseudonymous by construction, so it cannot be reconciled by matching an address — it needs a mapping someone maintains, or it stays unresolved. Nothing in the design produces an actor attribute of its own: the run record has no author field at all.

"Team" has the same problem one level up: it is named in #656's output and defined nowhere, with no source of truth.

Out of scope

  • The anonymity decision itself, which gates this.
  • Any hosted directory integration. The mapping's source is a separate choice; this issue owns the shape and the guarantees.

Relations

Field Value
parent #652
depends_on the anonymity decision
blocks #656

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Fields

    Priority

    High

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions