iter50 cluster-050 streaming-proxy-participant-authority: 删 singleton + dual store,room actor 单事实源#893
Conversation
📊 codex 进展 review-pr893-architect-r1 (⏳ 进行中; 已跑 10 min)
|
📊 codex 进展 review-pr893-quality-r1 (⏳ 进行中; 已跑 10 min)
|
📊 状态 — r1 2/3 reject → fix-r2 dispatchr1: tests APPROVE / architect REJECT / quality REJECT。2 同根 BLOCKER:
派 fix-r2:加 activation provider(参考 #882 pattern)+ dedupe 决策移入 actor 内部。 ⟦AI:AUTO-LOOP⟧ |
📊 状态 — fix-r2 push,派 omnibus r2 reviewcommit 派 omnibus r2(架构 + 测试 + 质量 三角度单 codex)。approve + CI green → merge。 ⟦AI:AUTO-LOOP⟧ |
📊 codex 进展 fix-pr893-r2 (⏳ 进行中; 已跑 8 min)
|
📊 状态 — omnibus r2 mixed → fix-r3 dispatch(activation provider 回归测试)omnibus 评 r2 实现架构 OK 但缺 ⟦AI:AUTO-LOOP⟧ |
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## auto-refact-dev #893 +/- ##
===================================================
+ Coverage 82.83% 82.89% +0.05%
===================================================
Files 998 995 -3
Lines 63092 63043 -49
Branches 8161 8156 -5
===================================================
- Hits 52261 52258 -3
+ Misses 7304 7260 -44
+ Partials 3527 3525 -2
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 4 files with indirect coverage changes 🚀 New features to boost your workflow:
|
📊 状态 — fix-r3 push,派 omnibus r3 reviewcommit ⟦AI:AUTO-LOOP⟧ |
✅ Phase 8 Reviewer omnibus r3 APPROVE
待 CI 重跑(刚 push)green 后 merge。Closes #887。 ⟦AI:AUTO-LOOP⟧ |
📊 codex 进展 review-pr893-omnibus-r3 (⏳ 进行中; 已跑 4 min)
|
…实源,删 singleton + dual store + readmodel design consensus(Phase 9 r1 unanimous,#887):room-actor-authority-delete-singleton。 删除: - StreamingProxyParticipantGAgent(singleton cluster-scoped actor) - streaming_proxy_participant_messages.proto + State - Projection/projector + studio_projection_readmodels.proto 内 StreamingProxyParticipantCurrentStateDocument - projection readmodel registration + cluster-scoped 启动注册 - ActorBackedStreamingProxyParticipantStore(dual-write surface)+ 应用层 IActorRuntime 注入 保留/重做: - StreamingProxyGAgent per room 作 participant authority(已 own participants 字段) - Endpoint 改 typed application/interaction service 注入,移走 IActorRuntime - 应用层调 room current-state query 替代旧 store - 不动 StreamingProxyNyxParticipantCoordinator(facade 边界,#885 并行) - 不动 NyxID LLM provider / room chat semantics - 不动 chat lifecycle path(那是 #885/#877) 测试:room actor authority + endpoint typed service + 删 singleton 后无引用残留 + projection 物化路径。 31 files +399/-1235(净 -836 LOC,真删除而非空壳)。 ⟦AI:AUTO-LOOP⟧
… + actor-owned idempotent join quality+architect r1 2 BLOCKER: 1. Participant readmodel 无 projection activation path → 加 StreamingProxyCommittedStateProjectionActivationPlanProvider + ServiceCollectionExtensions DI 2. Cold/stale projection 漏入 write control flow → 删 service-layer dedupe(read projection 决定 dispatch);dedupe 决策上移 actor 内(StreamingProxyGAgent.HandleGroupChatParticipantJoined 见 participants.Contains(id) → 不 publish event) 更新 stale test: - StreamingProxyCoverageTests:duplicate same-id joins 期望 publish count 1(不再 2),actor-owned idempotent ⟦AI:AUTO-LOOP⟧
…nProviderTests + DI 注册 + 物化链 omnibus r2 mixed:架构 OK 但缺 activation provider 回归测试。 加 8 tests covering: - Provider 真给出 activation plan - Plan 真覆盖 room state-event types - DI 注册 provider 到 dispatcher chain - committed state-event → projection runs → readmodel populated ⟦AI:AUTO-LOOP⟧
3a7dfc3 to
e7cf6c7
Compare
Issue / Design
Closes #887 — Phase 9 r1 consensus(unanimous):
room-actor-authority-delete-singleton。#874 follow-up:#874 reuse
StreamingProxyGAgent作 authority,但 singleton + dual store 仍存。本 PR 真清理。改动
删除 dual fact source:
StreamingProxyParticipantGAgent(singleton cluster-scoped actor)streaming_proxy_participant_messages.proto+ StateProjection/StreamingProxyParticipantProjector+StreamingProxyParticipantCurrentStateDocumentActorBackedStreamingProxyParticipantStore(dual-write surface)IStreamingProxyParticipantStore应用层 surface保留/重做:
StreamingProxyGAgentper room 作 participant authority(已 ownparticipants)IActorRuntime注入StreamingProxyNyxParticipantCoordinator(facade 边界,iter47 issue-877 chat-endpoints-own-lifecycle-and-compensation: typed facade + actor-owned compensation #885 并行)与 #885 协调
#885 改
StreamingProxyNyxParticipantCoordinator(facade);本 PR 不动。merge 顺序:#874 已 merged → #885 待 → 本 PR(独立)。验证
dotnet test ... StreamingProxyPASS(72)dotnet test ... ActorBacked / StoreAdapter / StudioProjectionPASS(141)bash tools/ci/test_stability_guards.shPASSbash tools/ci/query_projection_priming_guard.sh/projection_state_version_guard.sh/projection_state_mirror_current_state_guard.sh/projection_route_mapping_guard.shPASSbash tools/docs/lint.shPASS净改动
31 files +399/-1235(净 -836 LOC,真删除而非空壳)。
📢 cc @loning @eanzhao
⟦AI:AUTO-LOOP⟧