Why: User rulings 4/5 plus the P2-P4 live evidence. Keyword scoring dimensions
(readability, actionability) kept failing valid documents - normal Chinese
section headings flagged as column titles, loops of 4 corrections - because
they grade writing preferences, not verifiable facts. Unverified numbers
(~10-13 per run) remained the largest quality leak through every phase.
And the verifier runs on the same model as the worker (lightweight falls back
to chat), so "independent" verification was self-review. Separately, svc
seeding after boot never registered the tavily tools until a restart because
keys were snapshotted at startup.
Changes: quality.HardFacts (lint actually ran + zero errors) replaces the
full ScoreBytes projection in CheckArtifacts - keyword dimensions remain in
ScoreBytes for eval visibility only. New fact-consistency check
(runtime.factCheck, default on): extract percentages/dates/large numbers from
deliverable text, trace each against the material corpus (attachment text +
tool evidence); misses get exactly one correction round (fix, drop, or mark
as target/estimate), never a loop. runVerifier skips same-source model
verification unless runtime.verifierSameModel is set (hard facts + fact check
still run). Search tools now register lazily, reading tavily keys per call
(settings/seeding take effect immediately).
Evidence: SELF - TestHardFactsIgnoresKeywordDimensions,
TestHardFactsKeepsLintUnavailableBlocking, TestUnverifiedFactsAndNotice,
TestFactCheckContinuationOnce (fact note fires, corrected run passes);
go vet + go test ./... pass; live before/after on the golden task set
recorded on the phase05 task card per the policy clause.
Impact: Gate stops rejecting valid documents on stylistic grounds; invented
figures get one forced correction round; same-model verification no longer
pretends to be independent; tavily config is hot. No contract or storage
changes.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
摘要
P5(裁定 4/5 收口):门禁精简 + 事实一致性核查 + 异模型验证器 + tavily 惰性注册。Dev 任务卡 feature/agent-quality-phase05;主记录 §4 P5。
quality.HardFacts(lint 实际运行且零 error + 工件存在/非空/引用存在)替换全量评分投影;关键词维度(栏目式标题/可执行性等)移出拦截路径——它们评的是写作偏好,实测把正常中文章节标题判负、造成 P2-P4 各阶段反复出现的死循环。评分整体保留在 ScoreBytes 供评测观测。真实模型对照(before=P4 后 main,6/6 回合 completed)
Evidence
.task/phase05-eval/after-p5.json剩余
模型 A/B(裁定 5,需用户提供第二家强模型 key;同源跳过提示也指向该配置空缺)。