deerflow2/.planning/phases/06-/06-VERIFICATION.md

9.6 KiB
Raw Blame History

phase verified status score overrides_applied re_verification gaps
06- 2026-04-15T07:42:05Z gaps_found 8/10 must-haves verified 0
previous_status previous_score gaps_closed gaps_remaining regressions
verified 8/8
提及文件ref_kind=mention发送时不再被识别为本次新上传文件。
Validation/UAT/Requirements 文档闭环未完成,状态与当前实现不一致。
truth status reason artifacts missing
Validation 文档的 Wave 0 缺口被关闭或显式替换为可执行命令。 failed 06-VALIDATION.md 仍包含 pending/未签核项,未体现 06-05/06-06 后的最新验证结果。
path issue
.planning/phases/06-/06-VALIDATION.md Per-Task 状态仍有 ⚠️/ pendingValidation Sign-Off 全部未勾选Approval 仍为 pending。
回写 06-05/06-06 最新自动化结果并完成 Validation Sign-Off。
truth status reason artifacts missing
must_haves、requirements-completed、UAT gaps 已形成一致闭环。 failed 实现已前进,但 UAT/REQUIREMENTS 追踪状态仍停留在 diagnosed/pending文档闭环不一致。
path issue
.planning/phases/06-/06-UAT.md status 仍为 diagnosed且仍记录“mention 被当作 upload”为 failed。
path issue
.planning/REQUIREMENTS.md ATREF-01..04 在需求与 Traceability 表中仍为 Pending。
按当前代码与测试结果更新 06-UAT.md 的 test/gap 状态。
回写 REQUIREMENTS.md 中 ATREF-01..04 的状态(至少 Traceability

Phase 6: 在输入框输入@时,可引用已生成文件和已上传附件 Verification Report

Phase Goal: 在当前线程聊天输入框中实现 @ 文件引用artifacts + uploads并通过 additional_kwargs.files 稳定提交且具备回归测试。
Verified: 2026-04-15T07:42:05Z
Status: gaps_found
Re-verification: Yes — after 06-06 gap closure

Goal Achievement

Observable Truths

# Truth Status Evidence
1 @ 仅展示当前线程候选并支持过滤ATREF-01 ✓ VERIFIED input-box.tsx 使用 thread.values.artifacts + useUploadedFiles(threadId) 聚合,findMentionToken+mentionQuery 过滤。
2 选中候选后显示可删除引用 chipATREF-02 ✓ VERIFIED input-box.tsx 渲染 reference-inline-preview/reference-chip,并支持 remove。
3 同名去歧义“文件名+类型+路径尾段”且上限 10ATREF-02 ✓ VERIFIED input-box.tsx 展示 type+pathTailinput-box.tsx 限制第 11 个并 toast。
4 引用通过 additional_kwargs.files 单一 envelope 提交ATREF-03 ✓ VERIFIED hooks.ts 提交 additional_kwargs: { files }submit-files.ts 写入 ref_kind/ref_source
5 stale 引用软剔除且文本继续发送ATREF-03 ✓ VERIFIED submit-files.ts 跳过 stalehooks.ts 仅 toast 后继续 submit。
6 06-06mention 不被识别为新上传文件 ✓ VERIFIED uploads_middleware.py ref_kind=="mention" 直接跳过。
7 <uploaded_files> new_files 仅包含真实上传 ✓ VERIFIED _files_from_kwargs 过滤 mention 后才进入 new_files;回归测试 test_uploads_middleware_core_logic.pytest_uploads_middleware_core_logic.py
8 ATREF-04 自动化回归可执行(单测+E2E ✓ VERIFIED node --test hooks.test.ts 4 通过;pnpm test:e2e --grep DF-INPUT-007/008/009 3 通过;uv run pytest -k \"mention or files_from_kwargs\" 2 通过。
9 Validation 的 Wave 0 闭环完成 ✗ FAILED 06-VALIDATION.md 仍有 pending06-VALIDATION.md Sign-Off 未完成。
10 must_haves / requirements-completed / UAT gaps 闭环一致 ✗ FAILED 06-UAT.mddiagnosed 且 mention 误判仍记 failedREQUIREMENTS.md ATREF-01..04 仍 Pending。

Score: 8/10 truths verified

Required Artifacts

Artifact Expected Status Details
backend/packages/harness/deerflow/agents/middlewares/uploads_middleware.py mention 与 upload 语义分离 ✓ VERIFIED _files_from_kwargs 过滤 ref_kind=mention
backend/tests/test_uploads_middleware_core_logic.py mention 过滤回归测试 ✓ VERIFIED 新增 mention-only / mixed-list 两条测试。
frontend/src/components/workspace/input-box.tsx 候选、chip、上限、去歧义 ✓ VERIFIED UI 合同字段和 testid 都在位。
frontend/src/core/threads/hooks.ts 单一 files envelope + soft-fail ✓ VERIFIED 两条提交流程都接入 buildFilesForSubmit
.planning/phases/06-/06-VALIDATION.md 与当前验证状态一致 ⚠️ PARTIAL 文档仍有 pending/未签核项。
.planning/phases/06-/06-UAT.md gap closure 已回写 ✗ FAILED 仍停留在旧诊断结果。
From To Via Status Details
input-box.tsx hooks.ts PromptInputMessage.references ✓ WIRED onSubmit 注入 references 并发送。
hooks.ts submit-files.ts buildFilesForSubmit/materializeArtifactReferences ✓ WIRED 提交前统一归一化并构建 files。
submit-files.ts uploads_middleware.py additional_kwargs.files[*].ref_kind/ref_source ✓ WIRED 前端写 ref_kind=mention,后端读取并过滤 mention。
uploads_middleware.py agent context <uploaded_files> 注入 ✓ WIRED new_files 过滤后再注入内容。
06-UAT.md 06-05/06-06 实现结果 gap 状态回写 ✗ NOT_WIRED 文档未更新到最新实现。

Data-Flow Trace (Level 4)

Artifact Data Variable Source Produces Real Data Status
hooks.ts filesForSubmit buildFilesForSubmit(uploadedFileInfo, normalizedReferences) Yes ✓ FLOWING
submit-files.ts referenceFiles[*].ref_kind/ref_source message.references(含 artifact materialization Yes ✓ FLOWING
uploads_middleware.py new_files message.additional_kwargs.files Yes过滤 mention仅保留真实 upload ✓ FLOWING

Behavioral Spot-Checks

Behavior Command Result Status
引用构建与软失败单测 cd frontend && node --test src/core/threads/hooks.test.ts 4 passed, 0 failed ✓ PASS
@ 引用 E2E 主链路 `cd frontend && pnpm -s test:e2e --grep "DF-INPUT-007 DF-INPUT-008 DF-INPUT-009"`
mention 过滤后端回归 cd backend && uv run pytest -q tests/test_uploads_middleware_core_logic.py -k "mention or files_from_kwargs" 2 passed ✓ PASS
直接 pytest 入口可用性 cd backend && python3 -m pytest -q ... No module named pytest ? SKIP需使用 uv run

Requirements Coverage

Requirement Source Plan Description Status Evidence
ATREF-01 06-02, 06-05 @ 候选限定当前线程并可过滤 ✓ SATISFIED 代码链路 + DF-INPUT-007 通过。
ATREF-02 06-02, 06-05 chip 展示 + 去歧义 + 上限 10 ✓ SATISFIED 输入框合同与 DF-INPUT-009 通过。
ATREF-03 06-01, 06-05 additional_kwargs.files 提交 + stale 软剔除 ✓ SATISFIED hooks/submit-files + hooks.test 通过。
ATREF-04 06-03, 06-05, 06-06 自动化回归 + 提交分组计划 ✓ SATISFIED E2E/单测/后端回归 + COMMIT-GUIDE。

Orphaned requirements for Phase 6: None.

Anti-Patterns Found

File Line Pattern Severity Impact
frontend/src/components/workspace/input-box.tsx 745 TODO 注释 Info 与 Phase 6 核心目标无阻断。
frontend/src/components/workspace/input-box.tsx 1128 TODO 注释 Info 与 mention/upload 链路无直接关系。

Human Verification Required

1. 候选面板视觉锚定

Test: 在真实页面滚动和不同窗口宽度下,输入 @ 观察候选面板是否“紧贴输入框上方”。
Expected: 面板稳定贴近输入框上边缘,不出现明显漂移。
Why human: 这是视觉/交互感知问题,自动化命中无法覆盖所有布局场景。

Gaps Summary

代码与自动化层面06-06 新增 gapmention 被当作 upload已关闭且回归测试通过。当前阻塞来自文档闭环06-VALIDATION.md06-UAT.mdREQUIREMENTS.md 未同步到最新验证状态导致“must_haves / requirements-completed / UAT gaps”三者不一致。


Verified: 2026-04-15T07:42:05Z
Verifier: Codex (gsd-verifier)