系统对用户报告的所有状态,只使用下方 6 个受控词。其他表述(例如「建议执行」「数据不足」「等审批」)在门禁扫描下会被判为违规变体。
PROJECT_ELEVATION_REPORT_2026-10-26.md §3.3「所有状态用同一语言」。
单一真源:data/status_vocabulary.json。CI 门禁:scripts/check_status_vocabulary.py。前端渲染:/js/status-badge.js。
自由文本的状态描述("可以推荐"、"数据不够"、"未经实验")在同一份报告里可能各说各话,无法被用户搜索、比对或自动化。用 6 个受控词 + 门禁扫描,让每次输出都可以机器核验,也让 REFUTED / OUT_OF_SCOPE 这类不可逆状态无法被 LLM 悄悄改写。
| Code | 严重性 | AI 可自行生成? | 需附证据? | 典型场景 |
|---|
scripts/check_status_vocabulary.py 采用三级扫描策略:
HARD(frontend_fixed/**)违规即退出 1;
SOFT(engine/**、docs/**、data/**)只报告不阻断;
EXEMPT(词汇表自身、schema、检查脚本)跳过。
当前状态:HARD 0 违规 · SOFT 45 advisory(自然语言讨论与探针分类标签属正常用途)。
所有 badge 变体替换由 scripts/check_status_badge_sync.py 守护——JS 里的 6 个 code 必须与 data/status_vocabulary.json 逐字段一致。