🏛 架构平台 Arch.Platform

反馈 cba09980

← 看板
v=8198dc78
严重度
状态 待分诊
决策

🐛 Bug 摘要

test_emit_fatal_arch_nonzero 单测失败:假设 2 次 subprocess 调用,实际 1hr version_id 缓存使 emit_fatal 只调 1 次 subprocess

🔍 根因分析

tests/lib/test_feedback_emit.py::test_emit_fatal_arch_nonzero 用 iter([component_get_response, feedback_create_response]) 喂 mock,但 _resolve_version_id 命中 ~/.claude/audit-state/feedback-version-cache.json 缓存(默认 1hr TTL),导致 component get 跳过,iter 队列残留第 1 个响应在第 2 次 next() 时才被消费(测试期望的是 2 次都消费),最终 result=True(对应 component get 成功响应)而非测试期望的 False(对应 feedback create 失败)。

🔧 修复方案

方案 A(test 修):用 monkeypatch 清空 cache(CACHE_PATH.unlink / mock_read_text 返回 {})强制走 component get path,这样 iter 队列 2 个响应都会被消费。方案 B(代码修):feedback_emit 加 no_cache=True 参数供测试绕过缓存。推荐 A(影响面小,语义清晰)。

📋 元数据

报告人
小敏
创建时间
2026-06-28 19:45
关联版本
8198dc78-6782-4591-b518-edfb72402d3e
影响项目
audit (1 个)

📝 推进反馈状态

状态推进请用:

arch feedback update cba09980-a0ea-47c8-978e-710735937ca2 --status fixing  # 开始修
arch feedback update cba09980-a0ea-47c8-978e-710735937ca2 --status fixed   # 已修
arch feedback update cba09980-a0ea-47c8-978e-710735937ca2 --status wontfix --decision keep_as_is  # 不修