Commit Graph
2 Commits
Author SHA1 Message Date
qiaoqichaoandClaude Code 501a4d9c9b feat(v2): T08 专项离线质检——统一适配 fixture、逐任务准入与预算守卫
覆盖 AC-16/17/18/19/20/38/39/40/41(BR-17/18/19/20/37/38/39、E-10/13/14/15/25)。

新增:
- backend/contracts/judgment.py:JudgeProfile/TaskValidation 契约(逐任务逐用途
  验收登记 + 冻结 checkpoint)。放在独立契约模块,因为规格要求的 tokenizer/预算
  字段会撞上 prescreen.py 既有的"契约层不得出现凭据字样"静态守卫;不放宽该守卫。
- backend/services/judgment_adapters.py:统一适配入口。准入(未登记任务/用途拒绝、
  runtime 须独立评测)、冻结权重(unresolved 与不一致均拒绝)、上下文预算
  (正文与选项分开计,超限返回 E-25 且零发送)、中文否定/条件例外/来源矛盾/未登记
  映射一律落 unknown(inconclusive),不硬选正面结果。
- backend/fixtures/judgment/:中文提炼依据题集、本地模型原始输出、Jev 厂商响应
  fixture(虚构内容,离线契约用)。
- backend/test_judgment_adapters.py:30 项测试。

修改(最小面):
- contracts/prescreen.py:新增 E-25 运行级错误码 JUDGMENT_CONTEXT_EXCEEDED;
  Judgment 增 actual_checkpoint_ref、JudgmentConfig 增 checkpoint_ref。
- services/judgment_provider.py:映射适配层的策略拒绝异常;归一化保留实际权重。

未做(受授权限制):没有 Jev 凭据与 Laya 权重,因此只交付离线 fixture 路径,
live 传输层仅留注入点,未接入硬件与端口探测。fixture 通过不证明中文效果合格。

验证:backend 全量 unittest 440 项 OK(原 410 项无回归)。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-30 09:09:05 +08:00
qiaoqichaoandClaude Code 27d57c9227 feat(v2): T07-b 专项 disabled 路径与工具策略守卫
T07 第二块。本批**只做 disabled 路径**(T07 卡片要求"先 disabled 专项路径"),
真正的 Jev/本地适配器属 T08,不预造。

新增契约:JudgmentAnswer(可辨识联合,score 必须有限数值)、NativeMetric、
Judgment、JudgmentConfig。契约层硬约束:disabled 不得产出 completed;
关闭专项必须记录原因且不得冻结任何配置修订。

ErrorCode 补齐 E-06/E-13/E-14/E-15/E-08/E-10,并**区分两类编码**:
- 请求级(有 HTTP 语义,进 S1_ERROR_HTTP):含新增 JUDGMENT_CONFIG_INVALID 422、
  EGRESS_NOT_APPROVED 403
- 运行级(RUN_LEVEL_CODES,只出现在运行体 degradations/judgment 里):
  JUDGMENT_UNAVAILABLE / CAPABILITY_UNSUPPORTED / OUTPUT_INVALID / RUN_BUDGET_EXCEEDED
不再把假的 HTTP 200 塞进错误映射;两者互斥且并集等于枚举,有测试锁定。

新增 services/judgment_provider.py:
- resolve_config():关闭时记原因、不冻结配置;开关 false 却传 ID 属 E-07;
  无可用配置时明确报 E-13 而非悄悄关闭;未验证/提供方不符均拒绝
- judge():disabled → skipped+disabled;缺证**不发起调用**直接 completed+unknown;
  超时/异常 → failed+E-06;题型不符 → skipped+unsupported(E-14);
  题型对但内容非法 → failed+E-15。失败一律 answer 为空,**不补默认分值**
- allowed_tools():工具 = Skill 声明 ∩ 注册表白名单,**取交不取并**;材料正文里
  写什么都无法扩展权限(AC-10,有反例测试)

测试:新增 test_judgment_provider.py 22 项。全量 390 项 OK(368 → 390);
verify.py 10/10 PASS。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-29 20:33:36 +08:00