Skip to content

iter56 cluster-891: endpoint-only ACK 诚实(202+Location)#914

Merged
loning merged 3 commits into
auto-refact-devfrom
refactor/iter56-cluster-891-endpoint-ack-honesty
May 23, 2026
Merged

iter56 cluster-891: endpoint-only ACK 诚实(202+Location)#914
loning merged 3 commits into
auto-refact-devfrom
refactor/iter56-cluster-891-endpoint-ack-honesty

Conversation

@loning
Copy link
Copy Markdown
Contributor

@loning loning commented May 23, 2026

摘要

iter56 cluster-891 — Phase 9 r2 unanimous(3/3 minimal/structural/delete 全 endpoint-only repair):

核心结论:Core 已经分清 DispatchAsync(accepted)/typed outcome/observation。问题在 Host/API 响应外形。

  • NyxID conversation create endpoint:返回 202 + Location 指向 status 资源
  • StreamingProxy post-message / join endpoint:202 + Location
  • workflow resume / signal / stop endpoint:202 + Location
  • service invoke run:Location header 指向 status 资源
  • response DTO 用 typed names(acceptedCommandId / statusUrl)代替模糊的 result/data

边界

  • 不动 actor / projection / event sourcing / Core CQRS 路径
  • 不新增 I*Phase / I*CommandPhase / I*OutcomeResolver 等 Core typed command phase vocabulary
  • response DTO 字段语义清晰区分 accepted 形 vs typed outcome 形

影响范围

agents/Aevatar.GAgents.NyxidChat/NyxIdChatEndpoints.cs + LifecycleFacade
agents/Aevatar.GAgents.StreamingProxy/StreamingProxyEndpoints.cs + ChatLifecycleFacade + RoomCommandService
src/platform/Aevatar.GAgentService.Hosting/Endpoints/ServiceEndpoints.cs
src/platform/Aevatar.GAgentService.Infrastructure/Dispatch/DefaultServiceInvocationDispatcher.cs
src/workflow/Aevatar.Workflow.Infrastructure/CapabilityApi/ChatEndpoints.cs
test/Aevatar.AI.Tests/* + test/Aevatar.GAgentService.Integration.Tests/* + test/Aevatar.Workflow.Host.Api.Tests/*

LOC +169/-49 across 17 files

与 PR #913 关系

#913(iter56 cluster-894 Nyx coordinator adapter-only)也 touch StreamingProxy 部分文件。两者改动 scope 不同(本 PR 是 endpoint response shape,#913 是 room actor + coordinator boundary),但同 base,merge 顺序可能 rebase 一次。

验证

  • bash tools/ci/test_stability_guards.sh PASS
  • bash tools/ci/architecture_guards.sh PASS
  • targeted endpoint integration tests PASS
  • dotnet build aevatar.slnx --nologo PASS

Closes #891

🤖 Auto-loop / codex-refactor-loop iter56

⟦AI:AUTO-LOOP⟧

@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 23, 2026

📊 状态卡片 — reviewer 派出

维度
阶段 派出 codex(role=reviewer)
codex log review-pr914-omnibus-r1.log
工作目录 /Users/auric/aevatar
timeout 5400s(~90 min 上限)
上下文 omnibus r1 派出(architect+tests+quality 合并;ACK 诚实 202+Location;17 files)
下一步自动会做 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 23, 2026

📊 状态卡片 — fix 派出

维度
阶段 派出 codex(role=fix)
codex log fix-pr914-r2.log
工作目录 /Users/auric/aevatar-wt-iter56-cluster-891-endpoint-ack-honesty
timeout 5400s(~90 min 上限)
上下文 r1 reject(1 issue:streaming-proxy Location URL 不准)→ fix r2 派出
下一步自动会做 1. fix r 完成 marker FIX_DONE:... 2. controller commit + push 3. 派 reviewer r<N+1>
是否需要人介入 ❌ 否(自动推进)

🤖 controller status banner

⟦AI:AUTO-LOOP⟧

@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 23, 2026

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


- No new `I*Phase`, `I*CommandPhase`, or `I*OutcomeResolver` Core vocabulary found in this PR diff.
- No actor/projection/event-sourcing path change found in the reviewed head commit.
- `acceptedCommandId` / `statusUrl` naming is mostly consistent, but the bad post-message `statusUrl` is a behavior regression.
- `bash $REPO_ROOT/tools/ci/test_stability_guards.sh`: passed after rerun with correct `REPO_ROOT`.
- `bash $REPO_ROOT/tools/ci/architecture_guards.sh`: passed.
- `dotnet build aevatar.slnx --nologo`: passed with existing warnings.

REVIEW_DONE:914:omnibus:reject
tokens used
165,653
**Findings**

1. `Location`/`statusUrl` for streaming-proxy post-message points to an unregistered route.  
   [StreamingProxyEndpoints.cs](/Users/auric/aevatar-wt-iter56-cluster-891-endpoint-ack-honesty/agents/Aevatar.GAgents.StreamingProxy/StreamingProxyEndpoints.cs:289) returns `/api/scopes/{scopeId}/streaming-proxy/rooms/{roomId}/stream`, but the registered SSE route is `/api/scopes/{scopeId}/streaming-proxy/rooms/{roomId}/messages:stream` at [StreamingProxyEndpoints.cs](/Users/auric/aevatar-wt-iter56-cluster-891-endpoint-ack-honesty/agents/Aevatar.GAgents.StreamingProxy/StreamingProxyEndpoints.cs:39). This makes the new 202 ACK dishonest because `Location` does not identify an actual observation resource. The updated test currently codifies the wrong URL, so it does not catch the regression.

Verbatim demand: Fix StreamingProxy post-message accepted Location/statusUrl to point at a registered observation resource, currently `/messages:stream` rather than `/stream`, and update the test to assert that registered route.

**Checks**

- No new `I*Phase`, `I*CommandPhase`, or `I*OutcomeResolver` Core vocabulary found in this PR diff.
- No actor/projection/event-sourcing path change found in the reviewed head commit.
- `acceptedCommandId` / `statusUrl` naming is mostly consistent, but the bad post-message `statusUrl` is a behavior regression.
- `bash $REPO_ROOT/tools/ci/test_stability_guards.sh`: passed after rerun with correct `REPO_ROOT`.
- `bash $REPO_ROOT/tools/ci/architecture_guards.sh`: passed.

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

@codecov
Copy link
Copy Markdown

codecov Bot commented May 23, 2026

Codecov Report

❌ Patch coverage is 94.87179% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 83.18%. Comparing base (f3e59aa) to head (1003c79).
⚠️ Report is 2 commits behind head on auto-refact-dev.

Files with missing lines Patch % Lines
...Service.Hosting/Endpoints/ScopeServiceEndpoints.cs 94.44% 0 Missing and 1 partial ⚠️
...AgentService.Hosting/Endpoints/ServiceEndpoints.cs 75.00% 0 Missing and 1 partial ⚠️
@@                 Coverage Diff                 @@
##           auto-refact-dev     #914      +/-   ##
===================================================
- Coverage            83.19%   83.18%   -0.01%     
===================================================
  Files                  995      995              
  Lines                63513    63523      +10     
  Branches              8216     8217       +1     
===================================================
+ Hits                 52840    52842       +2     
- Misses                7133     7134       +1     
- Partials              3540     3547       +7     
Flag Coverage Δ
ci 83.18% <94.87%> (-0.01%) ⬇️

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

Files with missing lines Coverage Δ
...ure/Dispatch/DefaultServiceInvocationDispatcher.cs 94.40% <100.00%> (+0.03%) ⬆️
...flow.Infrastructure/CapabilityApi/ChatEndpoints.cs 78.72% <100.00%> (+0.32%) ⬆️
...Service.Hosting/Endpoints/ScopeServiceEndpoints.cs 83.28% <94.44%> (+0.02%) ⬆️
...AgentService.Hosting/Endpoints/ServiceEndpoints.cs 90.46% <75.00%> (-0.17%) ⬇️

... and 6 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.

@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 23, 2026

📊 状态卡片 — reviewer 派出

维度
阶段 派出 codex(role=reviewer)
codex log review-pr914-omnibus-r3.log
工作目录 /Users/auric/aevatar
timeout 5400s(~90 min 上限)
上下文 omnibus r3 派出(r2 fix Location URL → registered route 验证)
下一步自动会做 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 23, 2026

📊 状态卡片 — fix 派出

维度
阶段 派出 codex(role=fix)
codex log fix-pr914-r4-coverage.log
工作目录 /Users/auric/aevatar-wt-iter56-cluster-891-endpoint-ack-honesty
timeout 5400s(~90 min 上限)
上下文 r3 APPROVE 但 coverage-quality CI fail → fix r4(补 patch coverage)
下一步自动会做 1. fix r 完成 marker FIX_DONE:... 2. controller commit + push 3. 派 reviewer r<N+1>
是否需要人介入 ❌ 否(自动推进)

🤖 controller status banner

⟦AI:AUTO-LOOP⟧

loning added 2 commits May 24, 2026 01:58
#891 Phase 9 r2 consensus(3/3 endpoint-only repair,不新增 Core typed phase vocabulary):

- NyxID conversation create endpoint:返回 202 + Location 指向 status 资源
- StreamingProxy post-message / join endpoint:202 + Location
- workflow resume / signal / stop endpoint:202 + Location
- service invoke run:Location header 指向 status 资源
- response DTO 用 typed names(acceptedCommandId / statusUrl)代替模糊的 result/data

不动 actor / projection / event sourcing / Core CQRS 路径。
不新增 I*Phase / I*CommandPhase / I*OutcomeResolver 等 Core vocabulary。

LOC +169/-49 across 17 files
test_stability_guards.sh + architecture_guards.sh PASS
endpoint integration tests PASS

⟦AI:AUTO-LOOP⟧
omnibus r1 reject:
- StreamingProxyEndpoints.cs post-message Location 指 /stream(unregistered)
  → 改 /messages:stream(实际注册)
- ScopeServiceEndpoints 同类问题一并修
- 对应 test 更新 assert 正确路由

local PASS:
- test_stability_guards.sh + architecture_guards.sh + query_projection_priming_guard.sh
- targeted endpoint tests PASS
- dotnet build aevatar.slnx --nologo

⟦AI:AUTO-LOOP⟧
@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 23, 2026

📊 状态卡片 — fix 派出

维度
阶段 派出 codex(role=fix)
codex log fix-pr914-r5-coverage.log
工作目录 /Users/auric/aevatar-wt-iter56-cluster-891-endpoint-ack-honesty
timeout 5400s(~90 min 上限)
上下文 post-rebase 仍 coverage-quality fail → fix r5(强制 applied >= 1,查 codecov detail + 补 test)
下一步自动会做 1. fix r 完成 marker FIX_DONE:... 2. controller commit + push 3. 派 reviewer r<N+1>
是否需要人介入 ❌ 否(自动推进)

🤖 controller status banner

⟦AI:AUTO-LOOP⟧

…d 引用

coverage-quality CI 实际 fail 原因:build break(stale test enum reference 因 #913 删除)
- test/Aevatar.AI.Tests/StreamingProxyNyxParticipantCoordinatorTests.cs:430 用了被删的 .Joined
- 改用 .Accepted(post-#913 honest ACK join contract)

local PASS:
- coverage_quality_guard.sh:line 88.7% / branch 72.6%
- StreamingProxyNyxParticipantCoordinatorTests PASS

⟦AI:AUTO-LOOP⟧
@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 23, 2026

📊 状态卡片 — fix 派出

维度
阶段 派出 codex(role=fix)
codex log fix-pr914-r5-coverage.log
工作目录 /Users/auric/aevatar
timeout 5400s(~90 min 上限)
上下文 r5 fix done(stale enum reference)→ CI re-run 等待
下一步自动会做 1. fix r 完成 marker FIX_DONE:... 2. controller commit + push 3. 派 reviewer r<N+1>
是否需要人介入 ❌ 否(自动推进)

🤖 controller status banner

⟦AI:AUTO-LOOP⟧

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant