Description
The mirror keys tracked repositories by repos.repo_full_name and gates webhook ingestion by matching payload.repository.full_name to that row.
If a GitHub repository is renamed or transferred, webhook payloads begin carrying the new repository.full_name, while the mirror may still hold the old registered repo_full_name. In that state, normal repository-scoped events can be treated as unregistered and skipped, so ingestion silently stops for that repository.
Steps to Reproduce
- Register and ingest a repository normally, for example
owner-a/repo-x.
- Rename or transfer the repository on GitHub so its full name changes, for example
owner-b/repo-x.
- Deliver later repository-scoped webhook events such as
pull_request, issues, issue_comment, or pull_request_review.
- Observe the mirror looks up
payload.repository.full_name exactly in repos.
- If only the old
repo_full_name row is registered, observe the event is skipped as not registered.
Expected Behavior
Webhook ingestion should continue after repository rename or transfer without manual database repair. The mirror should use GitHub's stable repository ID to recognize that the new full name belongs to the already registered repository and keep repo-keyed mirror rows consistent.
Actual Behavior
Webhook routing is based on exact repo_full_name string lookup. After a rename or transfer, events with the new repository.full_name can miss the old registered row and be skipped.
Environment
- OS: Any
- Runtime/Node version: Node 20
- Browser (if applicable): N/A
Additional Context
Relevant paths:
packages/db/01_repos.sql declares repo_full_name as the primary key.
packages/das/src/webhook/webhook.service.ts reads payload.repository.full_name and gates ingestion by exact repo lookup.
packages/das/src/webhook/handlers/installation.handler.ts creates and updates repository rows by current repo.full_name, with no stable-ID rename reconciliation.
This is consumer-visible because mirror data and scoring inputs can become stale for renamed or transferred repositories until an operator manually repairs the stored repository key.
Description
The mirror keys tracked repositories by
repos.repo_full_nameand gates webhook ingestion by matchingpayload.repository.full_nameto that row.If a GitHub repository is renamed or transferred, webhook payloads begin carrying the new
repository.full_name, while the mirror may still hold the old registeredrepo_full_name. In that state, normal repository-scoped events can be treated as unregistered and skipped, so ingestion silently stops for that repository.Steps to Reproduce
owner-a/repo-x.owner-b/repo-x.pull_request,issues,issue_comment, orpull_request_review.payload.repository.full_nameexactly inrepos.repo_full_namerow is registered, observe the event is skipped as not registered.Expected Behavior
Webhook ingestion should continue after repository rename or transfer without manual database repair. The mirror should use GitHub's stable repository ID to recognize that the new full name belongs to the already registered repository and keep repo-keyed mirror rows consistent.
Actual Behavior
Webhook routing is based on exact
repo_full_namestring lookup. After a rename or transfer, events with the newrepository.full_namecan miss the old registered row and be skipped.Environment
Additional Context
Relevant paths:
packages/db/01_repos.sqldeclaresrepo_full_nameas the primary key.packages/das/src/webhook/webhook.service.tsreadspayload.repository.full_nameand gates ingestion by exact repo lookup.packages/das/src/webhook/handlers/installation.handler.tscreates and updates repository rows by currentrepo.full_name, with no stable-ID rename reconciliation.This is consumer-visible because mirror data and scoring inputs can become stale for renamed or transferred repositories until an operator manually repairs the stored repository key.