iter57 cluster-071: typed ChatRequestEvent.llm_control + WorkflowChatSource (#953)#957
Conversation
…Source(#953) Phase 9 r4 consensus(4-round + reflector r1 救场;CLAUDE 单一语义判 ToolContext 出局): - 新 typed LLMControlContext + ChatRequestEvent.llm_control proto field - 新 typed WorkflowChatSource + normalized chat source handling - 删 Metadata fallback + ToolContext-as-LLM-control paths(单一语义) - 迁移 active LLM routing/auth control 到 LLMControlContext - 涉及:NyxID/channel reply generation / Studio authoring / scheduled skill runner / workflow / streaming proxy / response paths - 测试 typed carrier behavior closes #953 local PASS:architecture + test_stability + build + focused channel/runtime suites ⟦AI:AUTO-LOOP⟧
…rId 字段 + Mapper 真传 PR #957 r1 reject P1: - ChatRunRequestNormalizer.cs:159 parsed actorId 但未传 InlineYamlBundle - WorkflowRunActorResolver 依赖 source.ActorId 解 / 验证 source actor - typed inline-yaml + source.actorId 静默当作新 inline run(不用指定 actor) - legacy workflowYamls+agentId 路径保留此 field → typed-source regression 修: - WorkflowChatSource.InlineYamlBundle 加 ActorId 字段 - Mapper 真传 actorId 到 typed bundle - ChatRunRequestNormalizer.cs:159 真传值 - 新 regression test 覆盖 typed inline-yaml + source.actorId 等价 legacy 行为 ⟦AI:AUTO-LOOP⟧
PR #957 r3 reviewer reject:r2 regression test 只覆盖 typed inline-yaml,legacy Workflow+AgentId non-inline 路径未覆盖。 修: - 新 test 覆盖 legacy Workflow + AgentId non-inline 路径 - 验证 typed + legacy 两 path 都正确 resolve / validate source actor ⟦AI:AUTO-LOOP⟧
📊 codex 进展 fix-pr957-r3 (⏳ 进行中; 已跑 3 min)
|
📊 codex 进展 review-pr957-omnibus-r3 (⏳ 进行中; 已跑 12 min)
|
|
Verified r3 fix at head 0283beb. Verdict: approve. GitHub refused a formal approve review because this checkout is authenticated as the PR author, so recording this as a PR comment. No blocking findings. The legacy Workflow + AgentId non-inline path now normalizes to DefinitionActor(agentId, workflowName), and resolver coverage validates that the source actor binding is read and used for the run. The typed inline-yaml + source.actorId path is also covered at both normalizer and resolver levels. Validation run from detached PR worktree:
⟦AI:AUTO-LOOP⟧ |
…rce / mapper coverage(coverage-quality fail) PR #957 coverage-quality fail。补 narrow tests 覆盖 194 production lines on: - LLMControlContext typed contract - LLMControlContextMapper - WorkflowChatSource normalize - ITypedConversationReplyGenerator local PASS:LLMControl filter 3/3 + test_stability_guards ⟦AI:AUTO-LOOP⟧
📊 当前状态 — 🔧 fixing(test r4 — 不需要人介入)
下一步自动会做:fix codex 把每个失败测试的 Metadata-based setup/assertion 迁到 typed 何时需要人介入:
🤖 controller status banner ⟦AI:AUTO-LOOP⟧ |
… 测试到 typed LLMControl PR #957 coverage-quality fail 根因:test-add r1 commit 757feb7 只补 LLMControlContext/Mapper/WorkflowChatSource 覆盖,未迁旧 endpoint 测试;~30 个 dotnet test 阶段挂(NyxIdChatEndpointsCoverageTests / NyxIdLLMProviderRoutingTests / StreamingProxyNyxParticipantCoordinatorTests / ConnectedServicesContextMiddlewareTests / ScopeServiceEndpointsTests)。 fix r4(28 测试断言迁移,test-only,production 不动): - NyxId LLM provider routing:LLMControlContext 承载 access_token/route_preference/model_override - NyxId chat endpoint/interaction:断言 ChatRequestEvent.LlmControl 而非 Metadata - StreamingProxy participant coordinator:断言 LlmControl token/route - ConnectedServices middleware:typed ToolContext.ConnectedServices - ScopeService helper:BuildScopedLlmControlAsync,headers 只保留真实 header/passthrough 验证: - Aevatar.AI.Tests:653 passed - Aevatar.GAgentService.Integration.Tests:297 passed - Aevatar.AI.Core build:passed ⟦AI:AUTO-LOOP⟧
🤖 Phase 8 fix r4 — 28 测试已迁完到 typed LLMControl
变更摘要:
下一步自动:CI 重检(coverage-quality)→ 全绿即 Phase 8 unanimous + auto-merge → close issue #953。 ⟦AI:AUTO-LOOP⟧ |
🤖 Phase 8 Re-review —
|
✅ Phase 8 r4 + r6 quick-verify approve — auto-merging
r4 fix 是 28 测试断言迁移(NyxIdLLMProviderRouting / NyxIdChatEndpointsCoverage / StreamingProxyNyxParticipantCoordinator / ConnectedServicesContextMiddleware / ScopeServiceEndpoints)到 typed 下一步: 🤖 controller consensus + auto-merge ⟦AI:AUTO-LOOP⟧ |
摘要
iter57 cluster-071(severity:high)— 新 typed
ChatRequestEvent.llm_control+WorkflowChatSource,删 Metadata/ToolContext-as-LLM-control 双重语义LLMControlContext+ typedWorkflowChatSource;删 Metadata fallback + ToolContext-as-LLM-control paths违反:CLAUDE.md「核心语义强类型」「字段命名 Metadata 决策树」「API 字段单一语义」
Phase 9 共识链路(4-round + reflector)
META_JUDGE_DONE:consensus:structural:add narrow ChatRequestEvent.llm_control and typed WorkflowChatSource; remove Metadata/ToolContext carrier paths✅Scope
LLMControlContexttyped contract +LLMControlContextMapperITypedConversationReplyGeneratorWorkflowChatSourcetypedlocal PASS:architecture + test_stability + build + focused suites
closes #953
🤖 Generated with Claude Code via codex-refactor-loop iter57
⟦AI:AUTO-LOOP⟧