Ga naar inhoud

Data model — wat we wel/niet bewaren

Per pull-cycle vervangen we de hele snapshot van een org.

Veld Bron Hashed?
user_login_hash SHA256(lowercase login) ✓
user_login_prefix Eerste 4 chars + ‘…’ partial
plan_type “business” / “enterprise” nee
assignee_team Naam van de team die de seat toewees nee
last_activity_at RFC3339 timestamp nee
last_activity_editor “VSCode” / “JetBrains” / “Neovim” / … nee
pending_cancellation_date DATE of NULL nee
snapshot_at Wanneer wij gepulled hebben nee

Append-only. Idempotent op (connection_id, github_event_id).

Veld Bron Hashed?
github_event_id GitHub’s _document_id nee
event_type action veld (bv. copilot.seat_assigned) nee
actor_login_hash SHA256(lowercase actor.login) ✓
actor_login_prefix Eerste 4 chars + ‘…’ partial
target_login_hash SHA256(lowercase user.login) ✓
target_login_prefix Eerste 4 chars + ‘…’ partial
occurred_at @timestamp veld nee
payload_json Rest van GitHub’s payload, met PII-velden gefilterd partial

Volgende velden uit GitHub’s audit-log entries worden voor opslag gedropt (zie isPIIField in hub/api/handlers/copilot_worker.go):

  • actor, user, actor_login, user_login — al opgeslagen als hash
  • actor_id, user_id — interne GitHub user IDs
  • actor_email, user_email, emails — e-mails
  • name, full_name — weergave-namen

Alles wat overblijft (action codes, org metadata, repository names, business-namen) gaat onveranderd in payload_json.

  • Volledige username, e-mailadres, weergave-naam — gedropt bij ingest
  • Code-suggesties, prompts, completions — Copilot bewaart die zelf, wij hebben er geen toegang toe
  • IP-adressen — niet in GitHub’s admin API beschikbaar
  • Welke files de dev open had — privé bij de dev
  • Hoe vaak / hoe lang Copilot gebruikt is per dev — alleen last_activity_at; GitHub geeft geen granulaire tijd-tracking

Het user_login_prefix veld toont jan… voor user jan.peeters. Match dit prefix in jouw HR-systeem of GitHub-organisatie-bestand om te weten wie het is. Wij hebben de mapping niet en willen die niet hebben.