Skip to content

[H-10 / Phase 2] [LOW] Stable sort for GitHub repo selection #10

@matthewod11-stack

Description

@matthewod11-stack

Full spec: docs/hardening-roadmap-2026-04-16.md#h-10

Description

github-adapter.ts:71 sorts by stargazers_count to pick top 3 repos for commit fetching. Two repos with equal star counts order by GitHub API response order, which is not guaranteed stable across requests. Breaks idempotent canonicalId when commit-extracted emails differ.

Current State

  • .sort((a, b) => b.stargazers_count - a.stargazers_count) at packages/adapters/adapter-github/src/github-adapter.ts:71.

Suggested Fix

  • Tie-breaker: b.stargazers_count - a.stargazers_count || a.name.localeCompare(b.name).
  • Grep all adapters for .sort( and apply same treatment where ordering matters.

Verification

  • pnpm build passes
  • pnpm test passes
  • pnpm typecheck clean
  • Unit test: 100 shuffled inputs with equal-star repos produce identical selection

Automation Hints

scope: packages/adapters/adapter-github/src
do-not-touch: other adapters
approach: add-validation
risk: low
max-files-changed: 3
blocked-by: none
bail-if: adapter-github tests fail

Priority

Low

Metadata

Metadata

Assignees

No one assigned

    Labels

    tech-debtEligible for automated overnight fixing

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions