Queueing: canonicalize repo keys before storage and worker updates#41
Open
vultuk wants to merge 1 commit into
Open
Queueing: canonicalize repo keys before storage and worker updates#41vultuk wants to merge 1 commit into
vultuk wants to merge 1 commit into
Conversation
Prevent mixed-case owner/repo requests from splitting queue, live-status, and repo_reports identities. Add targeted regressions and a migration that deduplicates legacy case-only repo_report rows.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #40
Summary
Why this improves Discofork
GitHub repository paths are case-insensitive, but Discofork was treating mixed-case variants as different backend identities. That could split queue jobs, cached rows, and worker ready updates for the same repository. This change keeps one canonical backend identity per repo and adds rollout compatibility for older mixed-case Redis/DB state.
What changed
owner/repokeys to lowercaserepo_reportswritesmigrations/0004_repo_report_canonical_full_names.sqlto deduplicate case-onlyrepo_reportsrows, lowercase stored identifiers, and enforce uniqueness onlower(full_name)Validation
npx bun run typechecknpx bun testRisks / tradeoffs / follow-ups
repo_reportsidentity, preferring ready data first and then newer rowsExec plan
.hermes/plans/2026-04-09-canonicalize-repo-keys.md