Files
Agent-System/.doc/audit/2026-09-13-document-revision-quality-gate-self-pollution.md
T
weichenandCursor 2d86d330e5 fix(docgov): keep squad AutoRepair/Success semantics; force repair only on controlled docs
小队修复预算只认 AutoRepair,Success 只表示执行完成;bizdev 在解析出 docRec 后强制开启修复,投影与阶段停链仍以 QualityReport 为准。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-13 15:19:20 +00:00

3.1 KiB
Raw Blame History

title, status, created, updated, severity
title status created updated severity
质量门禁自污染与 auto_repair 未启用导致 quality_failed in_progress 2026-09-13 2026-09-13 high

质量门禁自污染与 auto_repair 未启用导致 quality_failed

现象

同一整改范围真实 run(与 SSE/幂等现场同源):

  • workspace=data/dev/workspaces/bizdev/intake_1789308825666278807
  • run 于 14:17:51 结束为 quality_failed(仅 1 个 task_runs)
  • 质量门禁事件:score=40,命中 不做展开 / 篇幅有限 / 从略
  • output.md 第204行终稿自检表:无"不做展开""从略""篇幅有限"等敷衍套话 → 门禁 strings.Contains 自污染误报
  • 请求体未带 auto_repair;虽存在 EnsureQualityOrRepair,实际 maxRetries=0
  • chat_messages 同 client_turn 两对(1131/1132 正常;1133/1134 重连误写)——与 SSE 幂等缺陷同源,另案处理

根因

项 说明
A 修复预算依赖客户端 auto_repair(浏览器可省略,默认 false)
B 生成指令与自检表原样引用禁词;检测无否定/元语境豁免
C FE 将 quality_failed 映射为 completed,并在断线 catch 路径同步受控文档
D 缺真实失败形态单测

整改(同分支 fix/document-revision-sse-idempotency)

  • A:小队 repairBudget 只认 AutoRepair;bizdev 在解析出 docID+docRec 后强制开启;受控 HTTP task_run_handlers 仍设 true。小队 Success 仅表示执行完成,投影/阶段停链看 QualityReport
  • B:prompt 去原词;豁免仅限同一自检/规则行且同时具备 meta marker + 否定紧邻或引号引用(禁止 48 字窗口遇「无」即放过)
  • C:TerminalStatus 优先 quality;Materialize 仅 Passed;FE quality_failed 独立失败态且不同步激活
  • D:现场 L204 / repair budget / TerminalStatus / FE 映射单测
  • E(投影边界):finalizeSquadDeliverable 在任何 SetDocumentWorkDir / Materialize / MarkDocumentContentUpdated / 完成活动之前按 QualityReport.Passed=false 短路;保留隔离工作区与失败摘要;正式 work_dir/head/hash/候选不变。单测:TestFinalizeSquadDeliverable_QualityFailed_NoDocProjectionSideEffects(敌意 Success=true)
  • F(阶段链):ExecuteStage 在 err=nil 后经 classifyStageTaskHalt 检查质量/Success;失败立即停链,保留失败 artifact,不吸收 ExtractedData、不追加 PriorDoc、不写 completed workspace / 阶段跃迁。单测:TestExecuteStage_QualityFailed_StopsChainWithoutAbsorbingFactsOrPriorDoc

证据

关联