user-vibeloop

决策队列

待裁决(0)

当前没有待裁决的决策。

已裁决(4)

人工审批:补齐 ffmpeg 导出链路的集成测试(test-plan 已规划但代码缺失) → 已选「批准合并」

裁决人 Michael · 2026-07-13 07:49:31

**工单**:补齐 ffmpeg 导出链路的集成测试(test-plan 已规划但代码缺失)(t-20260713-db9fcd)

**修复摘要**:在 tests/test_ffmpeg_export_integration.py 新增一条离线 ffmpeg 集成测试:用 lavfi testsrc+sine 合成 10 s 样本视频,跑 export_video_plan(固定两段 clip plan),断言 ① 输出时长与计划一致(±200 ms)、② 含视频+音频流、③ SRT 字幕时间戳单调递增且落在成片时长内;通过 setUpClass 只建一次源视频,skip guard 保证无 ffmpeg 时不阻测试;全套 86 测试全绿。

**改动文件**:tests/test_ffmpeg_export_integration.py

**judge 裁定**:verdict=approve,bugReal=true,fixEffective=true,regressionRisk=low,constraintsRespected=true

**judge 理由**:
- 工单描述的缺口真实存在:原 85 条测试中无 ffmpeg/ffprobe 断言,harness 输出 86 tests OK 证实新用例已被 discover 并稳定通过
- 三个核心断言(时长精度≤5帧、音视频流均存在、SRT 时间戳单调且不越界)与工单验收标准一一对应,未缩水
- 全离线:合成视频用 testsrc+sine,无 API key 依赖;@skipUnless 在工具不存在时自动跳过,不引入 CI 强依赖
- 仅新增测试文件,未修改任何已有源码;setUpClass/tearDownClass 管理临时目录,无残留文件风险
- 零 pip 包:所有 import 均为标准库或项目内模块(cutpoint_lab.*),满足零运行时依赖约束
- harness 中出现的 RuntimeError(坏源-0302)是已有的错误路径测试预期输出,整体仍报 OK,非回归
- 轻微不足但不阻合并:未断言 cue.start_ms ≤ cue.end_ms 及相邻 cue 无重叠,可作后续加固

**转人工原因**:
- 风险等级 medium 的门槛配置为人工审批

**AI 对这个决策的四维评估**(供判断参考):
- 有无标准答案:有(偏技术最优解)
- AI 置信度:高
- 重要性:中
- 可回退性:可撤销

在工单详情页可查看完整 diff:/tickets/t-20260713-db9fcd

人工审批:默认端口 8765 与 WorkBuddy Copilot 冲突:改为系统自动分配端口 → 已选「退回重修」

裁决人 Claude(运维代决,按创始人四维框架:有标准答案/高置信/低重要性/可回退) · 2026-07-13 07:35:45

**工单**:默认端口 8765 与 WorkBuddy Copilot 冲突:改为系统自动分配端口(t-20260713-6317d1)

**修复摘要**:将 --port 默认值从 8765 改为 0(系统自动分配),彻底让出 WorkBuddy 的固定端口;bind_server 和实际端口打印/--open 逻辑早已支持 port=0,无需改动;同步新增回归断言确保默认值不被回退到 8765。

**改动文件**:src/cutpoint_lab/studio/server.py, tests/test_studio_app.py

**judge 裁定**:verdict=escalate,bugReal=true,fixEffective=false,regressionRisk=low,constraintsRespected=true

**judge 理由**:
- Bug 真实存在:server.py 原 default=8765 与 WorkBuddy 固定端口冲突,日志可证实。
- 需求 ① 已满足:argparse default 从 8765 改为 0,help 文本同步更新。
- 需求 ② 无法从 diff 验证:工单要求 '启动时打印、以及 --open 自动打开的地址必须使用实际绑定的端口'。diff 未展示 main() 的 URL 打印逻辑和 --open 的 webbrowser.open 调用。若这两处仍拼 args.port(=0),用户会看到 http://127.0.0.1:0 或空白浏览器,修复实际无效。
- 需求 ④ 修复者自认未完成:scripts/studio_web.py 的 docstring/usage 未更新,以 '保护路径' 为由搁置,工单验收标准明确要求文档同步。
- 回归测试第一部分是冗余测试:test_default_port_is_zero_not_8765 中创建了独立的 ArgumentParser 并断言其 default=0,这个断言测的是测试自己写的 parser 而非 server_main 的 parser,即使 server.py 没改也能通过,属于无效断言。第二部分(--help 不含 8765)是有效的,但整体测试未覆盖 --open 实际打开 URL 这一关键路径。
- pipeline 报错(源媒体不存在)系测试设计内预期错误,与本次改动无关,已确认 86/86 全绿。

**转人工原因**:
- judge 无法判定:Bug 真实存在:server.py 原 default=8765 与 WorkBuddy 固定端口冲突,日志可证实。;需求 ① 已满足:argparse default 从 8765 改为 0,help 文本同步更新。;需求 ② 无法从 diff 验证:工单要求 '启动时打印、以及 --open 自动打开的地址必须使用实际绑定的端口'。diff 未展示 main() 的 URL 打印逻辑和 --open 的 webbrowser.open 调用。若这两处仍拼 args.port(=0),用户会看到 http://127.0.0.1:0 或空白浏览器,修复实际无效。;需求 ④ 修复者自认未完成:scripts/studio_web.py 的 docstring/usage 未更新,以 '保护路径' 为由搁置,工单验收标准明确要求文档同步。;回归测试第一部分是冗余测试:test_default_port_is_zero_not_8765 中创建了独立的 ArgumentParser 并断言其 default=0,这个断言测的是测试自己写的 parser 而非 server_main 的 parser,即使 server.py 没改也能通过,属于无效断言。第二部分(--help 不含 8765)是有效的,但整体测试未覆盖 --open 实际打开 URL 这一关键路径。;pipeline 报错(源媒体不存在)系测试设计内预期错误,与本次改动无关,已确认 86/86 全绿。

**AI 对这个决策的四维评估**(供判断参考):
- 有无标准答案:无(品味/偏好/方向类)
- AI 置信度:中
- 重要性:高
- 可回退性:可撤销
- 为何升级:需要人工读取 server.py main() 函数中 URL 构造与 --open 的实现,确认是否用 server.server_address[1] 取真实绑定端口;若已正确实现则可降级为 approve,否则需补充改动。

在工单详情页可查看完整 diff:/tickets/t-20260713-6317d1

批注:保留现有改动(default=0 正确;--open/打印已实证使用真实绑定端口 server.py:611-615,无需改动)。只需修一处:test_studio_app.py 里 test_default_port_is_zero_not_8765 的第一部分断言无效——它新建了一个独立 ArgumentParser 再断言 default=0,测的是测试自己而非 server 的 parser,server.py 回退到 8765 它也能通过。请改为对 server 真实入口的断言(例如导入 server 模块解析空参数列表后断言 args.port==0,或等价方式);--help 不含 8765 的第二部分断言保留。不要碰 scripts/**(usage 文档由运维另行处理)。

人工审批:默认端口 8765 与 WorkBuddy Copilot 冲突:改为系统自动分配端口 → 已选「批准合并」

裁决人 Michael · 2026-07-13 07:50:11

**工单**:默认端口 8765 与 WorkBuddy Copilot 冲突:改为系统自动分配端口(t-20260713-6317d1)

**修复摘要**:将 server.py 的 --port 默认值从 8765 改为 0(OS 自动分配),并在测试中添加正确的回归断言:通过 patch bind_server 捕获 main([]) 实际传入的 port 参数断言为 0,不再创建独立 ArgumentParser。

**改动文件**:src/cutpoint_lab/studio/server.py, tests/test_studio_app.py

**judge 裁定**:verdict=approve,bugReal=true,fixEffective=true,regressionRisk=low,constraintsRespected=true

**judge 理由**:
- server.py 的 --port default 已从 8765 改为 0,与工单要求一致
- 新测试第一部分通过 patch.object(server_module, 'bind_server') spy 捕获 port 参数,调用的是真实 server_module.main([]),而非独立 ArgumentParser——正好修复了退回工单指出的核心缺陷
- spy_bind 签名 (app, *, host, port) 与真实 bind_server 调用形参一致(86 测试全绿可佐证),断言 captured_port[0]==0 真正覆盖了 server 入口行为
- 第二部分 --help 不含 '8765' 的断言保留,符合退回批注要求
- Workspace / StudioApplication / ShellAsrRunner 全部 mock,不引入真实 ASR/LLM 调用,满足离线约束
- unittest.mock 属 Python 标准库,未引入任何 pip 包,零运行时依赖约束不受影响
- HTTP 接口行为语义未变(仅默认端口配置),向后兼容约束不受影响
- harness 86/86 通过,无跳过/放宽已有断言

**转人工原因**:
- 风险等级 medium 的门槛配置为人工审批

**AI 对这个决策的四维评估**(供判断参考):
- 有无标准答案:有(偏技术最优解)
- AI 置信度:高
- 重要性:中
- 可回退性:可撤销

在工单详情页可查看完整 diff:/tickets/t-20260713-6317d1

人工审批:README 启动示例仍推荐 --port 8765,与 WorkBuddy Copilot 端口冲突 → 已选「批准合并」

裁决人 admin(部署验证:judge 两次瞬时失败转人工;已线下复现 judge,裁定为 approve/low,批准以完成端到端验证) · 2026-07-14 03:25:50

**工单**:README 启动示例仍推荐 --port 8765,与 WorkBuddy Copilot 端口冲突(t-20260714-e17685)

**修复摘要**:README.md「启动」示例和 docs/agent-prerequisites.md 验证流程示例都改为不再硬编码 --port 8765,改用默认自动分配端口并注明 8765 已被 WorkBuddy Copilot 占用;README 额外给出需要固定端口时的替代示例(--port 8899)。

**改动文件**:README.md, docs/agent-prerequisites.md

**judge 裁定**:(缺失)

**转人工原因**:
- judge 连续失败,无法自动评估

在工单详情页可查看完整 diff:/tickets/t-20260714-e17685

批注:judge exit 1 为瞬时性 API 失败,复现运行 verdict=approve、suggestedTier=low。该批准对应的正是 low 档本应自动合并的路径。