Skip to content

收口剩余 progress file change / turn diff 结构防回归 #724

Description

@kxn

父 issue

背景

#723 关闭后重新扫描 progress 剩余 map:

  • turnFileChanges direct access 只在 service_filechange.goserviceProgressRuntime helper 内。
  • turnDiffSnapshots direct access 只在 service_turn_diff.goserviceProgressRuntime helper 内。
  • 业务路径当前只通过 s.progress.takeTurnFileChangeSummary(...) / s.progress.takeTurnDiffSnapshot(...) 读取,不存在新的生产重构必要。

但这两块还没有结构测试防止未来回归;同时文件名没有显式体现 progress facade,和 #721/#722/#723 的新命名不一致。

目标

补齐 turnFileChanges / turnDiffSnapshots 的 progress map SSOT 结构保护,并把 owner 文件命名收口到 progress facade 语义。

非目标

  • 不改变 file change summary 或 turn diff snapshot 的收集、排序、take/cleanup 语义。
  • 不改变 final turn output、Feishu card、turn completed 或 request/routing 行为。
  • 不混入其他 progress map、queue、request gate、picker/catalog 或 claim 收口。

完成标准

  • 新增结构测试,禁止非 owner/facade 文件直接访问 turnFileChanges / turnDiffSnapshots map。
  • owner 文件命名与 progress facade 语义一致,避免后续误判边界。
  • service.go 等业务路径仍只通过 runtime/facade method 访问 file change / diff snapshot。
  • 目标测试、orchestrator 包测试、全量测试、文件长度与 diff check 通过。
  • 子 issue 结果回卷到 调研核心大包与高耦合结构拆分方案 #713 后再关闭。

信息索引

相关文件:

  • internal/core/orchestrator/service_filechange.go
  • internal/core/orchestrator/service_turn_diff.go
  • internal/core/orchestrator/service_runtime_clusters.go
  • internal/core/orchestrator/service.go

扫描命令:

rg -n "turnFileChanges|turnDiffSnapshots" internal/core/orchestrator --glob '*.go'

建议范围

  1. 先加结构测试,预期红灯命中旧 owner 文件名。
  2. service_filechange.go / service_turn_diff.go 移到 progress facade 命名。
  3. 复跑结构测试和相关 turn completed/file change/diff 测试。

执行决策

实现参考

  • 预期新 owner 文件名:service_progress_file_change.goservice_progress_turn_diff.go
  • 结构测试允许 service_runtime_clusters.go 和上述 owner/facade 文件访问 map 字段。
  • 不需要引入新的 Service facade,当前业务路径已经只调用 s.progress runtime method;本单重点是防止其他文件直接碰 map。

检查参考

建议验证命令:

go test ./internal/core/orchestrator -run 'Progress.*File|Progress.*Diff|FileChange|TurnDiff|TurnCompleted' -count=1
go test ./internal/core/orchestrator -count=1
go test ./internal/core/orchestrator ./internal/core/control ./internal/app/daemon -count=1
go test ./...
bash scripts/check/go-file-length.sh && git diff --check

Guardrail:

  • 若仅重命名 owner 文件和增加结构测试,不改变 route/state transition 或 Feishu card payload,remote / Feishu canonical docs 无需更新。

收尾参考

执行快照

  • 当前阶段:close-out
  • 当前执行点:close-out tail only;下一步只剩回卷 调研核心大包与高耦合结构拆分方案 #713、commit/push、close-plan 和 finish --close。
  • 已完成:结构测试红灯/绿灯;turnFileChanges / turnDiffSnapshots owner 文件已重命名到 progress facade 语义;direct map access 已由结构测试保护;独立 verifier 结果为 pass。
  • 下一步:回卷 调研核心大包与高耦合结构拆分方案 #713 后提交推送,并运行 close-plan/finish 关闭本 issue。
  • 当前阻塞:无。
  • 最近改变的假设:turnFileChanges / turnDiffSnapshots 不需要业务 facade 改造,只需要 owner 命名和结构测试。
  • 最后一致状态:本地测试 go test ./...、文件长度检查和 diff check 均通过;已提交 commit bb7de26e
  • 未完成尾项:push、close-plan、finish --close。
  • 恢复步骤:检查 git status 与 push 状态,运行 issuectl close-plan/finish --close。

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:runtimeRuntime manager, process lifecycle, and persisted statemaintainabilityRefactors, code structure, and long-term maintainability workstatus:implementable-nowReady to implement with current issue body and context

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions