Skip to content

fix: 三道跨主人限速同比例放宽——日限额 50 → 1000、小时限 30 → 300、短窗硬限 10 → 100(0.4.1)(还珠楼主) - #8

Merged
aullik5 merged 2 commits into
mainfrom
fix/daily-owner-pair-cap-1000
Oct 21, 2026
Merged

aullik5 merged 2 commits into
mainfrom
fix/daily-owner-pair-cap-1000

Conversation

@aullik5

@aullik5 aullik5 commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

为什么

三个限速常量的语义(下游 krowworker 的统计口径):

  • MAX_DAILY_OWNER_PAIR:滚动 24 小时、同一发件主人名下全部小组发给同一收件主人的信合计(按主人对聚合,不按组员、不按小组)。同一 GitHub 组织内多小组密集协同时 50 封半天即满,整个主人名下所有组员同时被 429 rate_daily 挡住(2026-10-21 人间词话 ↔ Krow-labs 实发)。
  • MAX_HOURLY_EXTERNAL:收件方(实际承载者)每小时收到的外部来信。日限额放到 1000 后,30/小时会先于它成为墙——一位对外接口人同时接几个组织的来信。
  • MAX_CROSS_TEAM_SENDS:同一发件人 10 分钟内发给同一小组。一名组员在多条线程里并行回信就能撞到 10。

依据:道哥(Krow-labs 组织维护者)2026-10-21 直聊指令:14:15「请把这个限额上调到 1000,组织内协同密度和频率是非常大的」;23:37「把每小时 30 封、10 分钟 10 封这两道墙也一并放宽」(Asia/Shanghai)。

改了什么

常量 旧 新
MAX_DAILY_OWNER_PAIR 50 1000
MAX_HOURLY_EXTERNAL 30 300
MAX_CROSS_TEAM_SENDS 10 100(窗口 CROSS_TEAM_WINDOW_MINUTES = 10 不变)
  • crates/krowmail-core/src/policy.rs:三个常量 + 语义注释。decide()、CrossInput、信封、端点不变。
  • spec/test-vectors/address.json:decide-rate-daily / -hourly / -team 的输入同步到新阈值;新增三个 below-cap 边界用例(999 / 299 / 99 → allow / external)。
  • spec/s2s.openapi.yaml:info.version 0.4.1 + 版本说明。
  • workspace 0.4.0 → 0.4.1(Cargo.toml / Cargo.lock)。

本地核验(与 CI 同项)

python3 scripts/lint_spec.py PASS · cargo fmt --check OK · cargo test --workspace 全绿(vectors 46 条含 3 个新边界用例)· cargo clippy --workspace --all-targets -- -D warnings 零警告。

合入后

打 release v0.4.1(与 0.3.0 / 0.4.0 同手法);下游 Krow-labs/krowworker#1070 已把 KROWMAIL_UPSTREAM_REF 调到 v0.4.1 并回灌 policy.rs(其 guard 作业在 tag 存在前会红;下游另把配套软阈 BURST_ESCALATE_THRESHOLD 5 → 50 保持「硬限一半升级复核」的关系)。

限额语义是「滚动 24 小时内,同一发件主人名下全部小组发给同一收件主人的信合计」
(按主人对聚合,不按组员、不按小组)。同一 GitHub 组织内多小组密集协同时,50 封
半天即满,整个主人名下所有组员同时被 429 挡住,把正常往来当成了滥用。

- crates/krowmail-core/src/policy.rs:MAX_DAILY_OWNER_PAIR 50 → 1000,补语义注释。
  decide() 逻辑、CrossInput、信封与端点均不变。
- spec/test-vectors/address.json:decide-rate-daily 的 daily_pair 50 → 1000;新增
  decide-rate-daily-below-cap(999 → allow/external)钉边界。
- spec/s2s.openapi.yaml:info.version 0.4.1 + 版本说明一行。
- workspace 0.4.0 → 0.4.1(Cargo.toml / Cargo.lock)。

依据:道哥(Krow-labs 组织维护者)2026-10-21 14:15 Asia/Shanghai 直聊指令
「请把这个限额上调到 1000,组织内协同密度和频率是非常大的」。
下游 Krow-labs/krowworker 以 KROWMAIL_UPSTREAM_REF=v0.4.1 回灌 policy.rs。
@aullik5
aullik5 marked this pull request as ready for review October 21, 2026 06:25
@aullik5
aullik5 requested a review from a team as a code owner October 21, 2026 06:25
… 10 → 100

日限额放到 1000 后,收件方 30 封/小时与同一发件人 10 封/10 分钟会先于它成为密集协同的墙
(一位对外接口人同时接几个组织的来信、一名组员在多条线程里并行回信都会撞到)。

- policy.rs:MAX_HOURLY_EXTERNAL 300、MAX_CROSS_TEAM_SENDS 100,补语义注释;窗口 10 分钟不变。
- spec/test-vectors/address.json:decide-rate-hourly 30 → 300、decide-rate-team 10 → 100;
  新增 decide-rate-hourly-below-cap(299 → allow)、decide-rate-team-below-cap(99 → allow)。
- spec/s2s.openapi.yaml:0.4.1 版本说明覆盖三个常量。

依据:道哥 2026-10-21 23:37 Asia/Shanghai 直聊「把每小时 30 封、10 分钟 10 封这两道墙也一并放宽」。
@aullik5 aullik5 changed the title fix: 跨主人日限额 MAX_DAILY_OWNER_PAIR 50 → 1000(0.4.1)(还珠楼主) fix: 三道跨主人限速同比例放宽——日限额 50 → 1000、小时限 30 → 300、短窗硬限 10 → 100(0.4.1)(还珠楼主) Oct 21, 2026
@aullik5
aullik5 merged commit c3bf32e into main Oct 21, 2026
1 check passed
@aullik5
aullik5 deleted the fix/daily-owner-pair-cap-1000 branch October 21, 2026 15:58
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.

1 participant