Skip to content

iter56 cluster-920: workflow catalog query 端到端 async + sync-blocking guard#923

Merged
loning merged 2 commits into
auto-refact-devfrom
refactor/iter56-cluster-920-workflow-catalog-async-query
May 23, 2026
Merged

iter56 cluster-920: workflow catalog query 端到端 async + sync-blocking guard#923
loning merged 2 commits into
auto-refact-devfrom
refactor/iter56-cluster-920-workflow-catalog-async-query

Conversation

@loning
Copy link
Copy Markdown
Contributor

@loning loning commented May 23, 2026

摘要

iter56 cluster-920 — Phase 9 r2 unanimous(3/3 async catalog query):

  • catalog/detail/capabilities end-to-end async:application ports + readmodel query adapter + HTTP endpoints + WS/SSE capability + WorkflowStatusTool
  • WorkflowCatalogReadModelQueryPort.Result sync-over-async reads
  • 新 architecture guard 验证 workflow production query-port 不 sync-blocking
  • 保留 WorkflowCatalogReadModelQueryPort(不删 readmodel port)
  • 不新增 actor / envelope / pipeline / sync reader

边界(per consensus)

  • 保留 readmodel port,只 fix async boundary
  • 不做规则例外

影响范围

LOC +417/-77 across 15 files

验证

  • dotnet build aevatar.slnx --nologo PASS
  • dotnet test aevatar.slnx --nologo PASS
  • bash tools/ci/test_stability_guards.sh PASS
  • bash tools/ci/architecture_guards.sh PASS(含新 sync-blocking guard)

Closes #920

🤖 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-pr923-omnibus-r1.log
工作目录 /Users/auric/aevatar
timeout 5400s(~90 min 上限)
上下文 omnibus r1 派出(architect+tests+quality;async catalog,15 files +417/-77)
下一步自动会做 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

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

     private readonly IProjectionDocumentReader<WorkflowCapabilitiesCurrentStateDocument, string> _capabilitiesReader;
     private readonly WorkflowCatalogReadModelMapper _mapper;
@@ -26,6 +27,7 @@
     //   New principle: WorkflowGAgent per-definition authority; query ports only read freshness-bearing readmodels; file discovery/parsing happens at startup/import time, not in query path.
     public async Task<IReadOnlyList<WorkflowCatalogItem>> ListWorkflowCatalogAsync(CancellationToken ct = default)
     {
+        _ = GuardProbeTask.Result;
         var documents = await QueryCatalogDocumentsAsync(ct);
         return documents
             .Select(_mapper.ToCatalogItem)

tokens used
168,423
No blocking findings for PR #923.

Verified:
- `test_stability_guards.sh`: pass
- `architecture_guards.sh`: pass
- `dotnet test aevatar.slnx --nologo`: pass
- Sync-blocking guard: verified by temporarily adding `.Result` in `WorkflowCatalogReadModelQueryPort`; guard rejected it with the expected “Workflow production query ports must not sync-block async reads” failure, then restored clean worktree.
- PR scope is the expected 15-file single commit over `auto-refact-dev`; `WorkflowCatalogReadModelQueryPort` is retained and now awaits readmodel readers end-to-end.
- Tests include the `TaskCompletionSource` deferred reader case proving catalog query does not complete before the async reader completes.

Caveat: GitHub `coverage-quality` is still pending, so I could not independently confirm the final patch coverage percentage from CI. The local required verification 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

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 83.31%. Comparing base (a3bca79) to head (9eaf9dd).

@@                 Coverage Diff                 @@
##           auto-refact-dev     #923      +/-   ##
===================================================
+ Coverage            83.21%   83.31%   +0.09%     
===================================================
  Files                  991      991              
  Lines                63471    63466       -5     
  Branches              8211     8211              
===================================================
+ Hits                 52820    52876      +56     
+ Misses                7107     7045      -62     
- Partials              3544     3545       +1     
Flag Coverage Δ
ci 83.31% <100.00%> (+0.09%) ⬆️

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

Files with missing lines Coverage Δ
...ation/Queries/RegistryBackedWorkflowCatalogPort.cs 100.00% <100.00%> (+92.45%) ⬆️
...ueries/WorkflowExecutionQueryApplicationService.cs 82.25% <100.00%> (+9.67%) ⬆️
...flow.Infrastructure/CapabilityApi/ChatEndpoints.cs 78.81% <100.00%> (+0.09%) ⬆️
...Infrastructure/CapabilityApi/ChatQueryEndpoints.cs 95.55% <100.00%> (+2.33%) ⬆️
...ion/Workflows/WorkflowCatalogReadModelQueryPort.cs 93.02% <100.00%> (ø)
🚀 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

📊 状态卡片 — fix 派出

维度
阶段 派出 codex(role=fix)
codex log fix-pr923-r2-coverage.log
工作目录 /Users/auric/aevatar-wt-iter56-cluster-920-workflow-catalog-async-query
timeout 5400s(~90 min 上限)
上下文 r1 APPROVE 但 codecov/patch fail → fix r2 补 coverage
下一步自动会做 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 进展 bootstrap-audit-61-issues (⏳ 进行中; 已跑 3 min)

- 从 committed workflow binding facts 物化 workflow actor kind / existence / binding。
- 如果产品仍需要 unbound actor lookup,定义显式 actor-owned binding/status contract,而不是读取 runtime type。
- 已有 command provisioning 仍可通过 infrastructure port 使用 runtime lifecycle;本 cluster 只约束 query/read path shape。

## design_question

当 workflow actor 还没有 binding document 时,查询层应该返回 not found / unsupported,还是要求 actor 在创建或绑定时提交一个明确的 binding/status fact?

⟦AI:AUTO-LOOP⟧
EOF' in /Users/auric/aevatar
 succeeded in 1725ms:
https://github.com/aevatarAI/aevatar/issues/925

codex
BOOTSTRAP_DONE:audit-iter-61:opened-1:skipped-1

Opened issue: #925  
https://github.com/aevatarAI/aevatar/issues/925

Skipped cluster-2: #920 / PR #923 已实施 workflow catalog 端到端 async + sync-blocking guard,与 cluster-2 scope 完全重叠。
tokens used
12,541
BOOTSTRAP_DONE:audit-iter-61:opened-1:skipped-1

Opened issue: #925  

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

loning added 2 commits May 24, 2026 03:36
…guard

#920 Phase 9 r2 consensus(3/3 unanimous):

- catalog/detail/capabilities 改 sync → async end-to-end:
  - application ports
  - readmodel query adapter
  - HTTP query endpoints
  - WebSocket/SSE capability resolution
  - WorkflowStatusTool
- WorkflowCatalogReadModelQueryPort 删 `.Result` sync-over-async reads
- 新 architecture guard:tools/ci/architecture_guards.sh 加 workflow production query-port sync-blocking 验证
- Regression test:TaskCompletionSource readmodel reader 验证 catalog query 不 complete until async reader complete
- 保留 WorkflowCatalogReadModelQueryPort(不删 readmodel port)
- 不新增 actor / envelope / pipeline / sync reader

LOC +417/-77 across 15 files
dotnet build aevatar.slnx + dotnet test aevatar.slnx PASS
test_stability_guards.sh + architecture_guards.sh PASS

⟦AI:AUTO-LOOP⟧
…-end coverage

omnibus r1 APPROVE 但 codecov/patch fail(64.52%,11 lines miss in RegistryBackedWorkflowCatalogPort)

修复:
- 加 WorkflowExecutionQueryApplicationServiceTests:
  - async catalog listing + deterministic sorting
  - workflow detail lookup with trimmed name
  - blank + missing detail paths
  - capabilities generation
- 11 missed patch lines全部 hit

local:line 88.8% / branch 72.6%
test_stability_guards.sh + coverage_quality_guard.sh PASS

⟦AI:AUTO-LOOP⟧
@loning loning force-pushed the refactor/iter56-cluster-920-workflow-catalog-async-query branch from 9b1fa8f to 9eaf9dd Compare May 23, 2026 19:36
@loning
Copy link
Copy Markdown
Contributor Author

loning commented May 23, 2026

📊 状态卡片 — fix 派出

维度
阶段 派出 codex(role=fix)
codex log fix-pr923-r2-coverage.log
工作目录 /Users/auric/aevatar
timeout 5400s(~90 min 上限)
上下文 r2 fix done(+44 test lines,line 88.8%)+ rebased on trunk → CI re-run
下一步自动会做 1. fix r 完成 marker FIX_DONE:... 2. controller commit + push 3. 派 reviewer r<N+1>
是否需要人介入 ❌ 否(自动推进)

🤖 controller status banner

⟦AI:AUTO-LOOP⟧

@loning loning merged commit c74b406 into auto-refact-dev May 23, 2026
12 checks passed
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