Skip to content

iter57 cluster-070: 拆分 VoicePresence lease 与 relay pump#951

Merged
loning merged 1 commit into
auto-refact-devfrom
refactor/iter57-cluster-070-voice-presence-lease
May 24, 2026
Merged

iter57 cluster-070: 拆分 VoicePresence lease 与 relay pump#951
loning merged 1 commit into
auto-refact-devfrom
refactor/iter57-cluster-070-voice-presence-lease

Conversation

@loning
Copy link
Copy Markdown
Contributor

@loning loning commented May 24, 2026

问题

cluster-070 / #948 指出 VoicePresenceModule 的本地 VoiceTransportLease 同时承载 actor acceptance、session/owner/expiry lease 事实和本地 relay 生命周期,导致 actor-owned lease fact 与 process-local mirror 混在一起。

方案

  • 删除本地 actor acceptance mirror:移除 IsActorAccepted 与相关本地置位/清理逻辑,provider audio 是否能写回 transport 由 actor turn 中的 VoicePresenceRuntimeState 先验收,再只用不可变 transport key 对账本地 pump。
  • 删除 fire-and-forget leased attach:带 sessionId 的同步 AttachTransport(...) 直接拒绝,正式路径必须走 AttachTransportAsync(...) 并等待 attach signal dispatch 结果。
  • 拆分本地 relay pump:将本地对象收敛为 VoiceTransportRelayPump + VoiceTransportRelayKey,pump 只持 transport I/O、dispatcher、取消源和 relay task;lease fact 继续在 actor state 中维护。
  • 保留 /ws/voice endpoint contract、VoicePresenceSession、现有 typed signals 和 transport reconciliation keys;未新增 core actor/envelope/proto。

影响路径

  • src/Aevatar.Foundation.VoicePresence/Modules/VoicePresenceModule.cs
  • test/Aevatar.Foundation.VoicePresence.Tests/VoicePresenceModuleTests.cs
  • test/Aevatar.Foundation.VoicePresence.Tests/VoiceTransportRelayTests.cs

验证

  • dotnet test test/Aevatar.Foundation.VoicePresence.Tests/Aevatar.Foundation.VoicePresence.Tests.csproj --no-restore --nologo
  • bash tools/ci/architecture_guards.sh && bash tools/ci/test_stability_guards.sh && dotnet build aevatar.slnx --nologo

⟦AI:AUTO-LOOP⟧

删除本地 actor acceptance mirror,带 lease 的 attach 必须等待 dispatch 结果;本地 relay pump 仅保留 transport I/O 与不可变对账 key。

⟦AI:AUTO-LOOP⟧
@loning loning marked this pull request as ready for review May 24, 2026 04:54
@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 24, 2026

📊 状态卡片 — reviewer 派出

维度
阶段 派出 codex(role=reviewer)
codex log review-pr951-omnibus-r1.log
工作目录 /Users/auric/aevatar
timeout 5400s(~90 min 上限)
上下文 omnibus r1(架构/测试/质量综合)
下一步自动会做 1. 三 reviewer 完成 verdict marker 2. controller 计算 consensus 3. unanimous → auto-merge / reject → fix r<N+1>
是否需要人介入 ❌ 否(自动推进)

🤖 controller status banner

⟦AI:AUTO-LOOP⟧

@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 24, 2026

📊 codex 进展 review-pr951-omnibus-r1 (⏳ 进行中; 已跑 11 min)

src/Aevatar.Foundation.VoicePresence/VoicePresenceModuleFactory.cs:12:    private readonly IReadOnlyDictionary<string, VoicePresenceModuleRegistration> _registrationsByName;
src/Aevatar.Foundation.VoicePresence/VoicePresenceModuleFactory.cs:36:    private static IReadOnlyDictionary<string, VoicePresenceModuleRegistration> BuildRegistrationMap(
src/Aevatar.Foundation.VoicePresence/VoicePresenceModuleFactory.cs:39:        var map = new Dictionary<string, VoicePresenceModuleRegistration>(StringComparer.OrdinalIgnoreCase);
src/Aevatar.Foundation.VoicePresence/Events/VoicePresenceEventPolicy.cs:15:    private readonly HashSet<string> _recentKeys = [];

exec
/bin/zsh -lc 'git diff --check origin/auto-refact-dev...HEAD' in /Users/auric/aevatar-wt-iter57-cluster-070-voice-presence-lease
 succeeded in 0ms:
exec
/bin/zsh -lc 'git status --short --branch' in /Users/auric/aevatar-wt-iter57-cluster-070-voice-presence-lease
 succeeded in 0ms:
## refactor/iter57-cluster-070-voice-presence-lease...origin/refactor/iter57-cluster-070-voice-presence-lease

codex
approve

No blocking findings. The diff cleanly removes the local acceptance mirror and fire-and-forget leased attach, keeps lease acceptance in actor state, and limits `VoiceTransportRelayPump` to local transport I/O/dispatch/cancellation. Targeted verification passed: `161/161` VoicePresence tests.

REVIEW_DONE:951:omnibus:approve
⟦AI:AUTO-LOOP⟧
tokens used
97,405
approve

No blocking findings. The diff cleanly removes the local acceptance mirror and fire-and-forget leased attach, keeps lease acceptance in actor state, and limits `VoiceTransportRelayPump` to local transport I/O/dispatch/cancellation. Targeted verification passed: `161/161` VoicePresence tests.

自动更新每 10 分钟;edit-in-place 不堆评论;codex 完成后此 comment 自动删除(per Auric "完成后删掉就好了 否则太占空间")。
🤖 controller progress reporter

@codecov
Copy link
Copy Markdown

codecov Bot commented May 24, 2026

Codecov Report

❌ Patch coverage is 90.47619% with 8 lines in your changes missing coverage. Please review.
✅ Project coverage is 83.54%. Comparing base (f82a239) to head (623c859).
⚠️ Report is 38 commits behind head on auto-refact-dev.

Files with missing lines Patch % Lines
...ation.VoicePresence/Modules/VoicePresenceModule.cs 90.47% 1 Missing and 7 partials ⚠️
@@                 Coverage Diff                 @@
##           auto-refact-dev     #951      +/-   ##
===================================================
+ Coverage            82.83%   83.54%   +0.70%     
===================================================
  Files                  998      987      -11     
  Lines                63092    63559     +467     
  Branches              8161     8214      +53     
===================================================
+ Hits                 52261    53098     +837     
+ Misses                7304     6905     -399     
- Partials              3527     3556      +29     
Flag Coverage Δ
ci 83.54% <90.47%> (+0.70%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...ation.VoicePresence/Modules/VoicePresenceModule.cs 88.33% <90.47%> (+0.71%) ⬆️

... and 69 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant