Skip to content

fix(score): preserve bounded PR evidence - #172

Open
sago-cream wants to merge 2 commits into
hikariming:mainfrom
sago-cream:fix/bounded-pr-evidence
Open

fix(score): preserve bounded PR evidence#172
sago-cream wants to merge 2 commits into
hikariming:mainfrom
sago-cream:fix/bounded-pr-evidence

Conversation

@sago-cream

@sago-cream sago-cream commented Aug 3, 2026

Copy link
Copy Markdown

Description

Accounts with ≤300 PRs currently aggregate up to 300, but one with 301 PRs skips aggregation and turns ecosystem evidence into zero. This can abruptly lower an account's score with just few new PRs.

Proposed solution to make the scoring more fair:

Validation

  • go test ./...

@vercel

vercel Bot commented Aug 3, 2026

Copy link
Copy Markdown

@Hsiii is attempting to deploy a commit to the hikariming's projects Team on Vercel.

A member of the Team first needs to authorize it.

@AsperforMias

Copy link
Copy Markdown
Collaborator

hi bro,我正在做主站的后端分离相关,可能要晚点处理完架构问题再来审最近的issue,看怎么把语义rebase上去

@sago-cream

Copy link
Copy Markdown
Author

了解,是 #170 這邊的 Go migration 對嗎? 我可以等轉成 Go 之後把這邊的改動改在 Go 那邊

@AsperforMias

Copy link
Copy Markdown
Collaborator

hi~我已经做完前后端分离重构啦,可以麻烦老师重新更新一下内容吗?

@sago-cream

Copy link
Copy Markdown
Author

恭喜!沒問題!

@sago-cream

sago-cream commented Aug 7, 2026

Copy link
Copy Markdown
Author

@AsperforMias migrate 完成,再麻煩審核了,感謝!

@AsperforMias

Copy link
Copy Markdown
Collaborator

hi~可以修下与最新main的conflict并补下popular/project这边的mock吗?

@sago-cream
sago-cream force-pushed the fix/bounded-pr-evidence branch from 9369243 to f460aa7 Compare August 12, 2026 17:46
@sago-cream

Copy link
Copy Markdown
Author

沒問題,更新了!

@AsperforMias

Copy link
Copy Markdown
Collaborator

感谢补上 high-history account 的测试。 request changes:>300 merged PR 的原始契约不是让 quick scan 用前 300 条作为 score input,而是标记 native merged-PR evidence 不完整,进入 durable paginator;只有全量 public history 收集完成后才能发布 final score。

当前改动会把 fetchMergedPRContribRepos(..., 300) 的结果直接传入
MergeContribRepoAggs -> ComputeImpactFromContribMap -> Score。该查询按 CREATED_AT DESC 取前 300 条,因此高 PR 账号的 canonical score 会依赖一个部分且有时间偏差的贡献集合,早期高价值 PR 仍可能被遗漏。

另外,mergedAggregationIncomplete 目前只写入 metrics,没有阻止 Go worker 持久化结果;worker 仍会把它写成 complete_public 且声明 native_prs: complete。因此这个 flag 并不能把该结果降级为 pending / partial。

请不要把 300 条 bounded aggregate 作为最终评分输入。正确修复需要迁移原有 durable native-merged-PR paginator:按 cursor 分页保存全部 native merged PR,完成聚合后再计算并持久化 score;未完成时返回 pending,而不是 complete_public

建议新增测试:

  1. 480 条 PR,关键高影响 PR 位于第 301 条之后,完成全量扫描后仍计入 impact;
  2. 分页未完成时不得写入 complete_public / canonical score;
  3. cursor resume 后不能重复计数。

@sago-cream

Copy link
Copy Markdown
Author

@AsperforMias 感谢老師的详细 review。
我同意 bounded 结果并不完整,也存在偏差。但 #142#144 明确采用了不等待完整历史的 quick scan。这个 PR 的目标正是在现有机制下修复 300/301 的断层,让计分更加公平。因為現在 300 个 PR 时会计入 native merged-PR evidence,超过 300 后反而完全不计。
完整的 durable paginator 属于另一项架构改动。如果当前方向仍是 bounded quick scan,我认为这个修复仍然有价值。想确认一下我的理解是否合理,感谢。

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants