b12bf6ce79
Eleven verifiable tasks covering decisions A-G and the 14 test items, with the reviewer-found execution traps written into the tasks.
2.3 KiB
2.3 KiB
type, node_id, title, date
| type | node_id | title | date |
|---|---|---|---|
| plan | plan:sampling-params-plan | 采样参数透传实现计划(issue #4) | 2026-07-31 |
采样参数透传实现计划(issue #4)
正文: 2026-07-31-sampling-params.md。实现 design:sampling-params。
- 任务数: 11 个,每个一次提交、独立可验证。Task 1-4 是 issue 诉求的最小闭环;Task 5-8 是设计中「issue 未提但必须处理」的部分(地基不变式、遥测三入口、两后端落列、决策 G 剥离),不可跳过。
- 关键接口已在计划 §1 定死:
validate_request_overlay()/merge_sampling()/canonical_sampling_json()三个纯函数落types.py(最内层),ChatRequest.sampling、SourceConfig.extra_body两个新字段,build_cache_key()与chat()的新签名。 - 审查暴露的执行陷阱(已写进计划): ① 两个
_record_minimal()的硬编码 20 键 fields dict 必须同步,否则row = tuple(fields[col] for col in _COLUMNS)(在 try 之外)抛裸KeyError让两侧落库测试全红;②SourceConfig加 mapping 字段后不再 hashable、asdict/deepcopy失效——已核实库内无调用点会踩,作为已知后果显式接受并加锁定测试;③ 各文件需新增的 import 逐一列出(types.py无from __future__ import annotations,注解在类体求值);④validate_request_overlay的校验顺序必须先查 str 键再试序列化,否则非 str 键会被误报成"值不可序列化"。 - 测试证据门: 每个任务合并前须出示先失败后通过的证据。Task 5 单列一条地基不变式回归——决策 C/D 都建立在「
sampling跨层恒定」之上,而这条目前只靠dataclasses.replace的约定,无机械执法;该测试须在故意破坏structured.py时验证过确实变红。 - 共享后端纪律: Task 7、Task 11 涉及 PG
polygateway库,严禁与其他会话并跑(含 git 钩子触发的测试)。 - 审查留痕: Codex CLI 不可用(vendor 二进制缺失),派全新上下文 subagent 只读审查。报 5 项必修(两处测试文件路径不存在、
_record_minimal漏项、Gitea Wiki 同步漏整块、SourceConfig可哈希性后果未声明),逐条核实后全部采纳;5 条建议(import 清单、校验顺序、Task 5 落点表述、make ci勿嵌套conda run、test_ports.py的_DummyRecorder同步)亦已收进。