chore: auto-refact-dev → dev 自动同步 (22 commits)#1167
Conversation
… Script outcome channel) Phase 9 r3 consensus(framing=structural; 3/3 unanimous propose option A): Script run actor 内发 actor-owned ScriptRunOutcomeRecordedEvent committed fact; caller 通过 existing projection-session observation 获取 outcome,不在 dispatch callstack 内 wait outcome;不 touch handled-dispatch files;不新增 readmodel / query port。 8 files (+442/-50). Includes integration test flake fix (Scenario2_CreateAgentTree parallel race after r2 staged changes — fixed in r3 with deterministic fixture isolation). Phase chain:r1 escalate cross-cluster-coupling → reflector r1 wait-for-#1132-merge → #1132 merged → r2 narrow(reflector ruling)→ r2 judge converge round-3 → r3 三 solver unanimous propose option A → r3 judge consensus → implement r1 死(API 503)→ r2 resume from staged → partial:1 flake → r3 fix flake → ok. closes #1133 ⟦AI:AUTO-LOOP⟧
…tcome test + marker addresses architect+tests reject: - atomic batch persist:facts+outcome 一次 PersistDomainEventsAsync,outcome StateVersion 用自己的 committed version - 加 ScriptExecutionSessionEventProjector iter149/cluster-1133 refactor marker - 加 validation-failure path tests:mismatched definition/scope/revision branches assert exactly one ScriptRunOutcomeRecordedEvent(Status=Failed)+ RunId/CommandId/CorrelationId/ScopeId/CommittedFactCount=0/error text FIX_DONE:1143:round-1:applied-3:tests-pass(full slnx build+test 0 fail per hard rule 10) ⟦AI:AUTO-LOOP⟧
…528-085535 chore: dev → auto-refact-dev 自动同步 (2 commits)
…duplicated prose) Phase 9 r4 consensus(framing=structural,3/3 hybrid 后 reflector r1 retry-fix:hybrid): - 新建 prompts/_shared.md(hard rules,sentinel/红线,~30 行) - spawn-codex.sh 启动前 prepend _shared.md(幂等) - 删 prompts 内重复 prose(bilingual EN+ZH / rationale / 事故段 / 重复 GitHub post rules) - soft refs(_github-post-rules.md / SKILL.md)保留 references,不 prepend 17 files (+300/-869, 净 -569 LOC, ~65% size reduction)。spawn-codex.sh + 共 16 prompt template slim。 closes #1148 ⟦AI:AUTO-LOOP⟧
…dit + stale refs addresses tests+quality reject: - 新建 scripts/test_spawn_codex.sh(3 case:prepend / 幂等 no-double-prepend / --dry-run) - 加入 tools/ci/test_stability_guards.sh 自动调用 - spawn-codex.sh 加 Refactor (#1148) Old/New self-doc 注释 - _shared.md 移除 gh pr edit 禁令(controller 仍可 edit,与 _github-post-rules.md 调和) - 改 4 处 stale "see GitHub post section below" → "see _github-post-rules.md" FIX_DONE:1155:round-1:applied-4:tests-pass ⟦AI:AUTO-LOOP⟧
…token-slim-hybrid skill #1148: codex prompt token-slim hybrid(_shared prelude + delete duplicated prose,-65% size)
最近 3 design issue(#1084 PR1151 / #1156 / #1157)全被 reflector ruled re-cluster, 浪费 ~90 codex on cluster-scope misalignment。 audit prompt 收紧: - rule_ids 数量 ≤2(优选 1),多 rule 命中同代码 → 拆 cluster - files_touched_estimate 严格上限 6(从 ≤30/≤15 收紧) - Sub-concern detection self-check:emit 前自问 implementer 能否一 PR 修完 - Pre-check:rule_ids.length>2 OR estimate.max>6 → split,未通过禁止 emit audit-iter-155/156 in-flight 仍用旧 prompt(已 spawn);iter-157+ 用新 prompt 应避免再 re-cluster。 ⟦AI:AUTO-LOOP⟧
…-tighten-cluster-scope skill: audit prompt 收紧 cluster scope(防 reflector 连续 re-cluster)
…first + judge no-new-core branch) per retro `.refactor-loop/runs/reflector-pattern-retro-2026-05-28.md`,3 改进: 1. **spawn-codex.sh placeholder guard**:render 后 grep `cluster ''`/`audit-iter-.md`/未替占位符 → exit non-zero(防 #1156/#1157 类 blank-placeholder leak 已现) 2. **Solver split-first obligation**:solver-minimal/structural/delete 必答 "Can this split into no-new-abstraction first slice + later design slice?";structural 不应 monolithic bundle 3. **Meta-judge no-new-core-slice branch**:solvers 同意违反真实 AND 至少 1 solver 提出 first-slice → 必须 emit `split:<first>:<later>` 而非 `escalate-human` 4. SKILL.md 路由表加 `split` verdict 处理(controller close 当前 issue + open 2 sub-issue) 6 files changed。skill prompt only,无 dotnet test 需求。 ⟦AI:AUTO-LOOP⟧
addresses tests reject: - test_spawn_codex.sh 加 4 个 case(case4 cluster placeholder reject / case5 audit-iter-MISSING reject / case6 envsubst 未替占位符 reject / case7 valid prompt --dry-run pass) - spawn-codex.sh placeholder guard 块加 Refactor (#1159) Old/New 注释(addresses architect comment) bash test_spawn_codex.sh 全 case pass。 FIX_DONE:1159:round-1:applied-2:tests-pass ⟦AI:AUTO-LOOP⟧
… regex r1 commit 含未解析的 <<<<<<<= conflict markers(stash pop 后没解,直接 commit), spawn-codex.sh 直接 shell syntax error 不能跑,test_spawn_codex.sh 全 fail。 修法: - 合并 stashed 与 upstream 两个 placeholder guard 块为单一统一版本 - 使用更完整的 UNRESOLVED_PROMPT_PATTERN(cluster ''/``,audit-iter-MISSING-NUM.md,dollar-brace VAR,double-brace name) - 改用 single-quoted 字符串避免 bash 把 \$ 转成 $(原 double-quoted 让 $ 变 end-of-line anchor,case6 不能触发 reject) bash test_spawn_codex.sh 全 case pass。 ⟦AI:AUTO-LOOP⟧
…improve-3-changes skill: Phase 9 self-improve 3 changes(防 re-cluster pattern 再发)
per loning: 简化为通用脚本,本质就是双向 sync,不要特殊逻辑: - 删 admin bypass / direct push trunk(走正常 PR) - 删 18h threshold(任何 ahead 都同步) - 删 rule 10/11 verify(GitHub CI 自己验) - 删 force-push rollup hack / try_finalize_codex_merge - 删 codex_resolved_head_ready_to_push 复杂状态机 - 删 update-branch 在 has_open_pr 内 inline 调用(简化为独立 helper 触发) - 删 SQUASH method(改 merge commit 保 hash reachability) 通用模型:每 tick 两方向各 sync_direction(source, target, wt, prefix, label): - 无 PR + ahead > 0 → push sync branch + 开 PR base=target + auto-merge - PR DIRTY → 派 codex 在独立 worktree 解冲突,push 回 PR head - PR BEHIND → gh api update-branch trigger CI re-run - PR CI fail → 派 codex 在独立 worktree 修 CI,push 回 PR head - PR clean → 等 GitHub auto-merge forward / reverse 用同 helper,只是 source/target/wt/prefix/label 不同。 ⟦AI:AUTO-LOOP⟧
per loning 2026-05-27 反馈:必须先保证 dev → trunk OK,trunk 是 superset of dev 时才开 reverse rollup PR 回 dev。否则 reverse PR 必 DIRTY(dev 新 commits 没进 trunk → trunk → dev 反推冲突)。 tick 改: - forward 总跑 - reverse 仅 count_ahead(trunk, dev) == 0 才跑 ⟦AI:AUTO-LOOP⟧
per loning 2026-05-27: PR1129 CI fail 但 daemon 没派 codex 修(等 600s tick)。 缩短周期到 120s,2 分钟内 detect failing check 派 codex fix-ci。 ⟦AI:AUTO-LOOP⟧
之前 grep 'sync-{label}-codex' match 0 因 codex exec 用 stdin 读 prompt
+ spawn-codex.sh 把 log redirect,ps 命令行只显示 -C <worktree>。改 grep
worktree path 准确判 in-flight,避免同 label 重派 codex。
⟦AI:AUTO-LOOP⟧
per loning 2026-05-27:之前两 daemon 同时跑(老 kill 前 + 新启)各派一个 codex 同 worktree 同 PR,资源浪费 + race。fcntl exclusive lock on .refactor-loop/dev-sync-daemon.lock 启动时获取,失败则 exit。 ⟦AI:AUTO-LOOP⟧
per loning 2026-05-27 "auto-refact-dev pr 回 dev 不自动 merge,等人 review": - forward(dev→trunk): enable auto-merge,CI 绿即合 - reverse(trunk→dev): 不 enable auto-merge,等 maintainer review trunk → dev rollup 是把累积重构推回主分支,该走人 review; dev → trunk sync 是把 dev 新提交带进 trunk,可自动 merge。 ⟦AI:AUTO-LOOP⟧
…tomerge 行为) forward 派 auto-merge,reverse 不派(per loning 等 maintainer review)。 之前 log 默认 '等 GitHub auto-merge' 对 reverse 误导。 ⟦AI:AUTO-LOOP⟧
Phase 9 r2 consensus(3/3 propose delete,hybrid structural+delete): - 删 StreamActorOutcomeChannel.cs(违反「stream request-reply 冒充 RPC」) - 删 DefaultCommandOutcomeDispatchService.cs(违反「ACK 诚实」) - 删 ServiceCollectionExtensions.cs DI 注册 - 删 CqrsCoreDefaultsTests.cs / StreamActorOutcomeChannelTests.cs - 不新增 replacement abstraction 9 files (-579 LOC,纯删)。SCOPE_EXTEND:test_stability_guards.sh 跑过。 closes #1161 ⟦AI:AUTO-LOOP⟧
…write-generic-bidirectional-sync skill: dev_sync_daemon 重写为通用双向 PR 同步(715→309 行)
addresses quality reject(missing Refactor self-doc): - src/Aevatar.CQRS.Core.Abstractions/Commands/ICommandDispatchService.cs:加 Refactor 注释 - src/Aevatar.CQRS.Core/DependencyInjection/ServiceCollectionExtensions.cs:加 Refactor 注释 FIX_DONE:1165:round-1:applied-2:tests-pass ⟦AI:AUTO-LOOP⟧
addresses tests reject(missing regression test): - tools/ci/architecture_guards.sh:加 stream-RPC reintroduction guard - grep src/ 不出现 StreamActorOutcomeChannel / DefaultCommandOutcomeDispatchService 等被删抽象 bash tools/ci/architecture_guards.sh 通过。 FIX_DONE:1165:round-2:applied-1:tests-pass:regression-guard-added ⟦AI:AUTO-LOOP⟧
…528-120933 chore: dev → auto-refact-dev 自动同步 (3 commits)
🤖 fix r1 报告 — PR 1167TL;DR
详细说明CI 里的直接失败不是 Codecov 阈值,而是 根因是 interactive workflow session 已经观察到 committed terminal state event,但 actor-scoped 新增/调整的 case:
验证结果:
📎 完整 codex 原始输出(存档备查)FIX_DONE:1167:round-1:applied-4:rejected-0:blocked-0 ⟦AI:AUTO-LOOP⟧ |
PR #1167 coverage-quality 失败根因: workflow session projection pipeline 缺 session→current-state 桥, draft-run 集成测试读到 Running 而期望 Completed。新增 projector + DI 注册 + 覆盖测试。 ⟦AI:AUTO-LOOP⟧
0a22d4d to
076889e
Compare
per /loop 2026-05-31 'bug 必须修'。 根因: dev_sync_daemon 派 sync-reverse-fix-ci codex 到 PR1167 worktree, prompt step 5/6 要求 git commit/push, 但 spawn-codex.sh 注入的 shared hard rules 含 'Do not run git commit/push'。矛盾下 codex 一致选 conservative 不 push, 输出 SYNC_FIX_CI_BLOCKED:commit-push-prohibited-by-shared-hard-rules, daemon 见 BLOCKED 再派 → 死循环 6h+ 浪费 codex, PR1167 永远红。 修法: daemon prompt 开头加 'SHARED HARD RULE EXCEPTION' 块, 显式 说明本 role 例外允许 git add/commit/push (覆盖 shared rules)。 codex 看到此块会 override hard rules 执行 push, 触发 CI rerun。 同时仍禁止 checkout/branch/force push/disable test 等。 resolve-conflict 与 fix-ci 两个 action 都加例外。 ⟦AI:AUTO-LOOP⟧
005bb7a to
d6764eb
Compare
* feat(issue1444): Team workbench 状态诚实修正(first-slice) per Phase 9 #1397 split → #1444 first-slice。Team workbench 不再把 run completion 显示为 deployment serving stability;raw facts 分离。 改动: - home.tsx / detail.tsx:run completion / deployment serving / readmodel freshness 作为分离 raw facts 展示 - home.test.tsx / detail.test.tsx:断 raw facts 分离 + 不再合成 'stable' status ⟦AI:AUTO-LOOP⟧ * fix(pr1446/r2): 补 refactor self-doc on formatRunStatusLabel per Phase 8 r1 architect comment:formatRunStatusLabel 加 Old/New refactor self-doc 注释。 ⟦AI:AUTO-LOOP⟧ * fix(pr1446/r2): console-web ScriptsWorkbenchPage.tsx + test 修(per maintainer review r1) - ScriptsWorkbenchPage.tsx: 修 status label render(formatRunStatusLabel 调用) - ScriptsWorkbenchPage.test.tsx: 补对应 test 覆盖 fix codex r2 marker: FIX_DONE:1446:round-2:applied-1:rejected-0:blocked-0 ⟦AI:AUTO-LOOP⟧ * fix(pr1446/r3): console-web test 补 tests reject demand(per Phase 8 r3) r3 verdict: architect=comment / tests=reject / quality=comment。 fix codex applied 1: ScriptsWorkbenchPage.test.tsx 补 r3 reviewer 要求的 behavior assertion(per fix-pr1446-r3 marker applied-1:rejected-0:blocked-0)。 ⟦AI:AUTO-LOOP⟧ * fix(pr1446/r4): console-web index.test.tsx CI fix(per Phase 8 r4) fix codex r4 诊断 console-web 单 test 538s timeout 后 applied-1: 针对 src/pages/studio/index.test.tsx waitFor 写法优化(详情见 .refactor-loop/runs/fix-pr1446-r4.md)。 ⟦AI:AUTO-LOOP⟧
a21f4b0 to
6cee333
Compare
) * refactor(issue1378): 删除 Lark reply/react 当前消息 bypass(first-slice) 来源 #393 Phase 9 split first-slice consensus(3/3 unanimous propose)。 变更: - LarkMessagesReplyTool / LarkMessagesReactTool:删除 ResolveOrCurrent 对 reply/react 的当前消息 bypass;message_id 缺失时返回结构化 error, 不再 fallback 到当前消息(默默吃错误)。 - LarkToolHelpers:补 ResolveExplicitMessageIdOrError 共享路径。 - LarkToolsTests:同步测试,新增 missing message_id 的 behavior assertion; 保留 explicit external tools 路径覆盖。 不新增 actor / envelope / proto / canon。typed-reply-delivery-mode design 留 #393 later-slice 处理。 closes #1378 refs #393 ⟦AI:AUTO-LOOP⟧ * fix(pr1480-r1): refactor self-doc 注释改为 SKILL 强制模板 Phase 8 r1 reviewer comment(architect / quality):新增 refactor 注释 说明意图但格式不符 SKILL 强制的 `// Refactor (iterN/cluster-XXX): Old pattern: … New principle: …`。 修 3 处 self-doc(LarkMessagesReplyTool.cs / LarkMessagesReactTool.cs / LarkToolHelpers.cs),使用 `// Refactor (issue1378/first-slice):` 前缀 + Old pattern + New principle 段。本轮无 logic 改动。 ⟦AI:AUTO-LOOP⟧ * fix(pr1480-r2): self-doc 改紧凑 Old:/New: 行格式(quality reject 终修) Phase 8 r2 reviewer quality 仍 reject:r1 的 self-doc 句子被换行 拆碎成 awkward fragment;要求紧凑 `// Old: <一句话>` / `// New: <一句话>` 行格式。 修 3 file 的 self-doc 为: - 第一行:`// Refactor (issue1378/first-slice):` - 第二行:`// Old: <≤100 chars 单行>` - 第三行:`// New: <≤100 chars 单行>` 无 logic 改动。 ⟦AI:AUTO-LOOP⟧ * fix(pr1480-r3): self-doc 改字面 Old pattern:/New principle:(SKILL 模板) Phase 8 r3 reviewer architect + quality 仍 comment(non-blocking): 要求严格字面 SKILL hard rule 3 格式 `Old pattern:` 与 `New principle:`, 不是 `Old:` / `New:` 缩写。 修 3 source file + 测试 file 5 处 self-doc(applied-5), 字面替换 `Old:` → `Old pattern:`,`New:` → `New principle:`。 无 logic 改动。 ⟦AI:AUTO-LOOP⟧
…e /init (#1481) 来源 #512 Phase 9 split first-slice consensus(minimal+structural propose, delete abstain)。 变更(no-new-core): - unbound sender 检测后 disable 工具调用(不发 tool dispatch) - unknown slash command → gate 到 /init 引导 - non-slash 纯文本 → 维持 owner-LLM chat fallback(无改动) 不新增 typed channel admission decision / NeedsLlmReplyEvent execution_mode (那是 #512 later-slice)。不新增 actor / envelope / proto / canon。 测试:补 8 处 behavior test(unbound sender disable tools / unknown slash gate)。 closes #1318 refs #512 ⟦AI:AUTO-LOOP⟧
per Auric 2026-05-31 "/loop 10min /codex-refactor-loop 强制主动做任何优化这个流程的事, 有bug必须修"。 根因:Step A 用 `[ -f "$log" ] || continue` 在 implement log 不存在时直接跳过。 #1369 (labeled 🛠️ phase:implementing) 从未派过 implement codex → log 不存在 → 误判"无积压"。 修法:`-f "$log"` false 时检查 PR; - 无 PR → flag "未派" + ACTION: dispatch implement - 有 PR → 跳(implement 可能在其他 worktree 跑过,不该 false-flag) Smoke test 通过:#1369 现在正确出现在 Step A ACTION 列表。 ⟦AI:AUTO-LOOP⟧
per Auric 2026-05-31 "/loop 10min /codex-refactor-loop 强制主动做任何优化这个流程的事, 有bug必须修"。 根因:Step E "未处理 open issue 3h+ 加 auto-loop-triage" 的 jq exclusion list 漏 `milestone:*` label。 maintainer 标的 milestone:p0:v1-target issue (#1399/#1398/#1387) 当 untouched 触发误判,会加 auto-loop-triage label —— 但这些是显式目标 issue,不是未分类入口。 修法:jq filter 加 `any(startswith("milestone:")) | not` —— milestone-labeled issue 全程跳过 Step E triage 路径,由 Step 0 MILESTONE 独占处理。 Smoke test:wakeup-check.sh 现在 Step E 报 "(none — no untouched issues older than 3h needing triage)", 不再误推 #1399/#1398。 ⟦AI:AUTO-LOOP⟧
…rs/Metadata (#1359) * [refactor] #1353 first slice: 停止 aevatar_start_workflow/aevatar_invoke_team 把 trusted facts 写入 Headers/Metadata per Auric 2026-05-30 #1327 r2 split first-slice. aevatar_start_workflow / aevatar_invoke_team 停止把可信 caller/control facts new-write 到 Headers/Metadata,改走 typed AgentToolExecutionContext + LLMControlContext 字段。Metadata/Headers 只保留 protected-key-filtered 外部 payload headers。 ⟦AI:AUTO-LOOP⟧ * fix r1: 处理 PR #1359 r1 reject(narrow) per Auric 2026-05-30 Phase 8 fix-retry. applied: 处理 tests/quality reject(coverage gap + self-doc/naming/dead surface)。 ⟦AI:AUTO-LOOP⟧
per Auric 2026-05-31 "/loop 强制主动做任何优化这个流程的事, 有bug必须修"。
根因:`ps -ef | grep "$d"` 子串匹配过宽
- "comment-monitor" 子串可能匹配 codex prompt 里 "comment-monitor.sh" 提到的进程
- "concurrency_monitor" / "dev_sync_daemon" 子串可能匹配 cross-repo daemon
wrappers(/Users/auric/newmath、/Users/auric/chrono-ai-ceo)— 它们在 argv 里
embed daemon 名称作为 wrapper 参数,实际跑的是 consensus-rnd-cli,与 aevatar
daemon 完全无关
事故:之前 wakeup-check.sh 报 "comment-monitor.sh: 2 OK" 是 false positive
(实际 1 个),让 controller 误判违反 SKILL "多 daemon 实例必须 = 1" 单例规则。
修法:`ps -eo args | grep -E "(bash|python[0-9.]*|Python) (\.|/.+)?\.claude/skills/codex-refactor-loop/scripts/$d( |$)"`
- 必须 bash/python/Python 起头(invocation 而非提及)
- 路径 .claude/skills/codex-refactor-loop/scripts/$d 完整匹配(相对 + 绝对)
- 后续 token 边界 ( |$) 防 daemon-foo.sh 被 daemon.sh 匹配
Smoke 测试:
- 之前:comment-monitor.sh: 2 OK (false positive)
- 现在:concurrency_monitor.py: 1 OK / comment-monitor.sh: 1 OK
/ codex-progress-reporter.sh: 1 OK / dev_sync_daemon.py: 1 OK
/ triage-monitor.sh: 1 OK
⟦AI:AUTO-LOOP⟧
…_id+ACCEPTED receipt (#1482) * implement #1369: 删 dev_sync_daemon self-spawn + spawn-codex execution_id+ACCEPTED receipt 来源:#1338 Phase 9 r2 split first-slice (3/3 unanimous propose)。 skill-internal no-new-core cleanup: - dev_sync_daemon.py: 删 detached subprocess.Popen + nohup self-spawn 路径,改写 .controller-pending-events.log dispatch-codex 一行(action/prompt/log/worktree/add_dir/timeout/issue_or_pr),由 controller 用 spawn-codex.sh 派发(harness 跟踪 + task-notification)。 - spawn-codex.sh: 加 --execution-id <id>,缺省自动生成;ACCEPTED 接受时 stdout 打印 execution_id+ack_stage=accepted+prompt+log+timeout;写 markers/<id>.running.json + <id>.done.json(execution_id/ack_stage/prompt/log/timeout/started_at/done_at/exit_code);legacy SPAWN/DONE banner + verdict/base/log_path 字段保留兼容。 - SKILL.md: 同步 spawn section + Phase 6 dev-sync daemon DIRTY/CI-fail 段(改为 pending event materialization + controller dispatch)。 Smoke 全过: - python3 ast.parse dev_sync_daemon.py: pass - bash -n spawn-codex.sh: pass - dry-run + execution-id smoke 写 .running/.done.json marker 正确 - legacy reader 不破坏 closes #1369 refs #1338(later-slice 留 package cli state contract design-pending) ⟦AI:AUTO-LOOP⟧ * fix r1: spawn-codex.sh 默认 execution_id=log basename(backward compat) CI fail (fast-gates / test_spawn_codex.sh case 9): FAIL: case 9 done marker missing 根因:r1 实施 auto-generate execution_id 为 UUID,但 test_spawn_codex.sh case 9 期望 `markers/<log-basename>.done.json`(legacy reader 约定)。 修法:execution_id 缺省 = log basename (不带 .log)。callers 仍可 --execution-id override 用 UUID/ULID 等 distinct lineage tracking。 Smoke: - bash .claude/skills/codex-refactor-loop/scripts/test_spawn_codex.sh ✓ - bash tools/ci/test_stability_guards.sh ✓(含 case 9 + python tests) ⟦AI:AUTO-LOOP⟧
per Auric 2026-05-31 "强制主动做任何优化这个流程的事, 有bug必须修". 发现:#1198/#1254/#1282/#1384(split)、#1382/#1381(crashed)、#1350(escalate:abstention) 7 个 design-solving issue 静默积压 1-3 天。 根因:Step F 仅检测两种状态: 1. 完全无 solver log → spawn r1 solvers 2. 3 solver done + 无 judge log → spawn judge 漏判:judge log 已存在但 marker 需要 controller action 的状态: - META_JUDGE_DONE:split → close + open 2 sub-issues - META_JUDGE_DONE:converge → spawn r+1 solvers - META_JUDGE_DONE:escalate:* → spawn reflector - META_JUDGE_DONE:consensus → dispatch implement - judge log 有 EXIT 但无 META_JUDGE_DONE → re-spawn (crash) 修法:Step F 加 `if [ -f "$judge_log" ]` 分支,case 解析 marker 类型映射到具体 ACTION 行。所有 case 用 `continue` 保证一个 issue 只产一行 ACTION。 烟测确认 7 stale judge 全部检测到。 ⟦AI:AUTO-LOOP⟧
per Auric 2026-05-31 "有bug必须修". 发现:split-batch processor 给 later-slice 加 `⏸️ phase:blocked` + `🔍 phase:design-solving` 双 label。Step F 只 filter `🔍 phase:design-solving`,导致 later-slice 被误判为"NO solver yet — ACTION spawn r1",会误派 5 issue × 3 = 15 solver 浪费资源。 修法:Step F query 加 jq filter `select([.labels[].name] | contains(["⏸️ phase:blocked"]) | not)` — 跳过 blocked。 ⟦AI:AUTO-LOOP⟧
📊 当前状态 — PR #1167 reverse rollup CI 红 → fix-ci 派出(❌ 不需要人介入)
🤖 controller status banner ⟦AI:AUTO-LOOP⟧ |
16361fd to
5d7f4dd
Compare
📊 当前状态 — fix-ci 完成,等 CI 重跑(❌ 不需要人介入)
🤖 controller status banner ⟦AI:AUTO-LOOP⟧ |
…1500) * [refactor-impl] #1487 first-slice: typed first-pending tool context 来源:#1254 r2 split first-slice。 在 RoleGAgent 添加 typed first-pending tool context 替代字符串解析,补 138 LOC state coverage 测试。 closes #1487 refs #1254 (来源父 issue split) refs #1488 (later-slice: field 9 canon + credential whitelist + remote approval,设计待定) ⟦AI:AUTO-LOOP⟧ * [refactor-impl] #1487 first-slice fix r1: 修复 quality reviewer reject Phase 8 fix r1 applied-1: rejected-0: blocked-0. ⟦AI:AUTO-LOOP⟧
…#1499) * [refactor-impl] #1493 first-slice: GAgentBase deactivation 清理 finally 来源:#1382 r1 retry split first-slice。 在 GAgentBase.TState 完成 deactivation base cleanup 的 finally 收尾,确保 OCC + non-OCC 路径都有 propagation 保证。150 LOC BDD 回归覆盖。 closes #1493 refs #1382 (来源父 issue split) refs #1494 (later-slice: runtime-wide deactivation failure contract,设计待定) ⟦AI:AUTO-LOOP⟧ * [refactor-impl] #1493 first-slice fix r1: 修复 tests reviewer reject Phase 8 fix r1 applied-2: rejected-0: blocked-0. ⟦AI:AUTO-LOOP⟧ * [refactor-impl] #1493 first-slice fix r3: 添加组合失败测试覆盖 lifecycle module DisposeAsync 异常 per Phase 8 r2 tests reviewer reject(combined original-failure + lifecycle-module-failure 覆盖)。 Fix r3 applied-1: rejected-0: blocked-0。 ⟦AI:AUTO-LOOP⟧ * [refactor-impl] #1493 first-slice fix r4: 校准 self-doc 异常传播语义 把 GAgentBase.TState.cs:69 的 New principle 改成精确反映 pinned 测试合约: base cleanup 总会执行;cleanup 成功时传播原 hook/confirm/snapshot 失败; cleanup 自身失败时按 base cleanup 异常语义暴露(AggregateException pinned by AgentLifecycleBddTests:167)。 仅 self-doc 注释改动,无业务逻辑变化。 仅修 r3 architect + quality 同点 comment。 ⟦AI:AUTO-LOOP⟧
…containment (#1498) * [refactor-impl] #1489 first-slice: GAgentBase OCC deactivation flush containment 来源:#1381 r2 split first-slice。 在 GAgentBase.TState 添加 OCC-only deactivation flush containment + 189 LOC AgentLifecycleBdd 回归覆盖(OCC + non-OCC propagation)。 closes #1489 refs #1381 (来源父 issue split) refs #1490 (later-slice design-pending: runtime-wide deactivation failure contract) ⟦AI:AUTO-LOOP⟧ * [refactor-impl] #1489 first-slice fix r2: 校准 refactor self-doc tag 格式 把 GAgentBase.TState.cs:70 的 refactor tag 改成 SKILL Hard rule #3 规范的 `iterN/cluster-XXX` 形式,只动 self-doc 注释 tag 前缀。 仅修 r1 architect + quality 同点 comment。 ⟦AI:AUTO-LOOP⟧
per Auric 2026-05-31 "floor最低10, 最高30, 优先处理所有存量issues/pr". 变更: - SKILL.md Hard floor section: floor=5 → range [10,30],ceiling 行为(>=30 不主动派) - SKILL.md priority list 11-12 audit 退回 "仅 1-10 全空 + ACTIVE<10 才派" - wakeup-check.sh FLOOR_REQUIRED=10 → FLOOR_MIN=10 + FLOOR_MAX=30,加 ceiling check - 优先级铁律重申:audit 是 last-resort backfill,1-12 任一可推进则不允许 audit ⟦AI:AUTO-LOOP⟧
由 Phase 9 split first-slice 产生。详见 GitHub issue #1424 body。 ⟦AI:AUTO-LOOP⟧
* #1304 first slice: 显式 NyxRelayAgentBuilderFlow fall-through(no-new-core) - NyxRelayAgentBuilderFlow 新增本地 outcome/resolution,显式区分: known agent-builder command / non-slash 普通文本 / unknown slash pass-to-LLM / private-chat rejection - ChannelConversationTurnRunner 只在 matched known agent-builder command 时进入 agent-builder direct path - 补 NyxRelayAgentBuilderFlowTests + ChannelConversationTurnRunnerTests 证明: /daily / unknown slash / 普通文本不触发 agent-builder tool execution, 继续进入 LLM/Ornn skill fallback 实现 #489 split 的 first slice(no-new-core)。 ⟦AI:AUTO-LOOP⟧ * fix(pr1306/r1): 补 refactor self-doc marker(architect + quality 评论建议) per PR1306 r1 architect + quality comment 同建议补 self-doc marker。non-blocking comment 但补齐让审计追踪更清晰。 改动: - agents/Aevatar.GAgents.Authoring.Lark/NyxRelayAgentBuilderFlow.cs(补 marker) - agents/Aevatar.GAgents.NyxidChat/ChannelConversationTurnRunner.cs(补 marker) 注:codex 输出 FIX_BLOCKED:env-missing:FIX_OUTPUT_PATH 因 dispatcher 未传 FIX_OUTPUT_PATH env,但实际改动已正确产生(controller verify)。 ⟦AI:AUTO-LOOP⟧
per Auric 2026-05-31 "为什么还在持续审计? 在处理完积攒issues之前不开新审计." 根因(两个 bug 合谋让 audit always-available): 1. STEP F query 过滤了 ⏸️ phase:blocked label - 3 个 design-solving + blocked issue(#1494/#1488/#1484)被漏检 - blocked 是"first-slice 未完"提示,不应阻 Phase 9 派 solver - solver 不动 code,只产 design plan,可与 first-slice impl 并行 2. 30 个 auto-loop-triage 积压未计入 G_BUSY - triage-monitor.sh daemon 11+ 小时未 queue 新 event - pending events offset 已对齐,但 30 个 label 仍挂在 issue 上 - 原 STEP E 只数 untouched issue,不数已 labeled 但未派 codex 的 backlog - 导致 STEP G 报 A-F empty → 派 audit-iter-823 至 832 共 10+ 次 修法: - STEP F:去掉 ⏸️ blocked filter,3 个 Phase 9 backlog 进入 queue - 新增 STEP E2:统计 auto-loop-triage 数量,列前 5 个 oldest - G_BUSY 加入 TRIAGE_COUNT,堵住 audit - HARD GATE queue 新增 P6b:派 triage codex(daemon 跟不上时 controller 自己派) ⟦AI:AUTO-LOOP⟧
…531-080900 chore: dev → auto-refact-dev 自动同步 (1 commits)
daemon 双向同步
auto-refact-dev→dev共 22 commits。CI 绿后 GitHub auto-merge。冲突或 CI fail 由 daemon 派 codex 在独立 worktree 解决。⟦AI:AUTO-LOOP⟧