Skip to content

followup(groups): 按群自动关闭无交互会话的测试硬化与文档对齐 (#1742) #1838

Open

Description

@deepcoldy

#1742(按群自动关闭无交互会话)已合入,双审 0 阻断。以下为评审中记录的非阻断 followup,集中跟踪:

测试硬化(变异探针发现的 fail-safe 冗余分支无直接用例)

src/core/group-idle-close-sweeper.ts 的复合 guard 中,以下 3 个子句删除后现有测试仍全绿(代码方向安全,但缺切片断言钉住):

  • 休眠分支 ds.workerPort != null 保留条款(与 dashboard/session-cleanup 的 dormant webPort 闸同语义:仍在提供终端的行不可扫)
  • ds.tuiPromptProcessing(TUI 答案已派发、等待 worker ACK 期间防重复点击)
  • ds.pendingRepoCommitInFlight(内存 owner 正在为 pending repo 准备首个 worker)

建议在 test/group-idle-close-sweeper.test.ts 各补一行夹具级断言。

结构:guard 清单收敛

  • isGroupIdleCloseCandidate 目前是手写枚举十几个在途字段。ds.pendingCrossPrincipalSuggestions 等字段不在清单内;目前该队列在 master 上零生产者(只有读者),今天不可触发,但将来若新增生产者会被这份手写清单静默漏掉。建议把「会话持有不可放弃的在途工作」收敛为一个共享的 in-flight 谓词(可与 session-mutation-guard / idle-worker-sweeper 的候选判定共用),替代各处继续枚举字段。

文档 / UX

  • 本特性(按群配置,最小 1 小时,daemon 每 60s 扫)与既有全局 auto-cleanup(dashboard/auto-cleanup.ts,24/72/168h,dashboard 跨 bot 定时清理)并存,docs-site 群组管理/options 文档两处应互相指引,避免使用者混淆两个开关。
  • 自动关闭发出的是标准关闭卡,未注明「按群无交互策略自动关闭」;建议关闭上下文/卡片上体现来源,便于用户理解会话为何被关。

真机验收

  • 作者仅在 macOS + 合成数据验证。功能默认关,部署后建议真机点一次:开关保存热生效、天/小时边界、执行中/等待确认会话被跳过、休眠会话关闭。

参考:#1742;落地前修复的 bun-test 基线红见 #1835。

🤖 Generated with Claude Code

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions