fix(team): normalize blank task list filters - #9286
Conversation
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
|
✅ Qwen Triage finished — CI landed green on ✅ Qwen Triage 已完成 —— |
|
Thanks for the PR! Template looks good ✓ Problem: observed bug, not theoretical. #9281 carries a deterministic reproduction (evidence branch with failing regression assertions), and the reported root cause matches the code as it stands: Direction: aligned. This is the team task-list tool misreporting its own state — the fix makes runtime behavior match the contract the tool already presents. No auth/sandbox/public-contract surface involved. Size: touches Approach: the scope feels right. Normalizing at Risk: no elevated risk signals — none of the changed files match the repo's revert-correlated high-risk paths. Moving on to code review. 🔍 中文说明感谢贡献! 模板完整 ✓ 问题:已观测到的 bug,而非理论性问题。#9281 提供了确定性复现(证据分支上有失败的回归断言),且报告的根因与当前代码一致: 方向:对齐。这是 team task-list 工具在错误地报告自身状态 —— 本修复让运行时行为与工具自身已展示的契约一致。不涉及 auth/sandbox/公共契约层面。 规模:触及 方案:范围合理。在 风险:无升级风险信号 —— 改动文件均未命中本仓库 revert 相关的高风险路径。 进入代码审查 🔍 — Qwen Code · qwen3.8-max Reviewed at |
Code reviewNo blockers found. The fix does exactly what the independent read of the problem suggests: normalize the two optional filters at the tool boundary, before anything else sees them. The tests are the strong part. One control (omitted filters list tasks; a nonempty owner stays selective) plus two regression tests that genuinely pin the old failure: a freshly created task has Nothing else in the diff — no drive-by changes, no scope creep. Test evidenceThis is an unattended CI run — the PR's code is never executed here; the evidence below is the PR's own CI on the reviewed commit, read through the API. No red checks at review time. The main unit suite ( Final CI results for
One row per check name (latest run); skipped checks omitted; failures sort first. / 每个检查名一行(取最新一次运行),省略 skipped,失败项排在最前。 Not verified here: runtime behavior — unit-suite results land with CI above, and the author's local evidence (macOS package-local typecheck + Vitest) is their report, not independently re-run in this pass. Sandboxed verification would settle the remaining gap: 中文说明代码审查未发现阻塞问题。修复做法与对问题的独立分析完全一致:在工具边界归一化两个可选过滤条件。 测试是亮点:一个对照测试(省略过滤条件可列出任务;非空 owner 仍保持选择性),加两个真正锁定旧缺陷的回归测试 —— 新建任务 diff 中没有其他内容 —— 无顺手改动,无范围蔓延。 测试证据本次为无人值守 CI 运行 —— 不在这里执行 PR 代码;以上证据是通过 API 读取的该 PR 自身 CI 在受审 commit 上的结果。审查时无红色检查。主单元测试套件( 此处未验证:运行时行为 —— 单元测试结果以上述 CI 为准;作者本地证据(macOS 包级 typecheck + Vitest)为其自述,本次未独立复跑。 沙箱验证可以补上剩余缺口: — Qwen Code · qwen3.8-max Reviewed at |
|
Confidence: 5/5 — textbook small bugfix: observed bug with a deterministic reproduction, root cause confirmed in code, minimal fix at the right boundary, and regression tests that provably fail without the diff. Stepping back: this is exactly the shape of change the gate wants to let through. The problem is real and demonstrated, not hypothesized — #9281 shows a populated task board reporting If I had to maintain this in six months, the answer is clear — the tests tell you why the normalization exists, and they fail loudly if anyone removes it. Approving because it is genuinely good, not because I ran out of objections. Approval deferred until CI lands green on 中文说明置信度:5/5 —— 教科书式的小修复:已观测到的 bug、确定性复现、根因在代码中确认、在正确的边界做最小修复,且回归测试在没有本 diff 时必然失败。 退一步看:这正是 gate 应当放行的改动形态。问题真实且被证明,而非假设 —— #9281 展示了有任务的面板返回 六个月后维护这段代码毫无负担 —— 测试说明了归一化存在的原因,任何人移除它都会立刻失败。批准是因为它确实好,而不是因为找不到反对理由。 审批延迟至 CI 在 — Qwen Code · qwen3.8-max Reviewed at |
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
中文说明
— qwen3.8-max via Qwen Code /review (v0.21.12)
qwen-code-ci-bot
left a comment
There was a problem hiding this comment.
LGTM, looks ready to ship — CI landed green after the review. ✅
|
@qwen-code /resolve |
|
Qwen Code attempted to resolve merge conflicts but the run did not complete successfully. Check the workflow run for full logs. |
What this PR does
Treats literal empty
ownerandblockedByvalues passed to team task listing as omitted optional filters.Why it's needed
A model can serialize an optional task-list filter as an empty string. Previously that value reached exact storage filtering while the tool presentation treated it as absent, causing a populated task board to appear empty.
Reviewer Test Plan
How to verify
Create a team with a pending task. Request pending tasks with an empty
ownervalue and separately with an emptyblockedByvalue. Both requests should list the pending task. A nonempty owner filter should remain selective.Evidence (Before & After)
Before: either blank optional filter returned
No tasks found.for an otherwise matching pending task. After: literal blank filters are omitted and the matching task is listed.Tested on
Environment (optional)
macOS package-local Core typecheck and Vitest.
Risk & Scope
Linked Issues
Fixes #9281
中文说明
此 PR 的改动
将团队任务列表中传入的字面量空
owner和blockedBy值视为省略的可选过滤条件。为什么需要它
模型可能把可选任务列表过滤条件序列化为空字符串。此前该值会进入精确的存储过滤逻辑,但工具展示又将其视为未提供,从而使有任务的看板显示为空。
审阅者测试计划
如何验证
创建一个包含 pending 任务的团队。分别使用空
owner和空blockedBy请求 pending 任务。两种请求都应列出该 pending 任务。非空 owner 过滤条件仍应保持选择性。证据(前后对比)
修复前:任一空可选过滤条件都会让原本匹配的 pending 任务返回
No tasks found.。修复后:字面量空过滤条件会被省略,并列出匹配任务。测试平台
环境(可选)
macOS 上的包级 Core typecheck 和 Vitest。
风险与范围
关联问题
Fixes #9281