fix(harness): Codex functional review 修复 — 命名/集成测试/delta_min/promote 消息
- _apply_env_overrides → _apply_env_var_overrides,docstring 明确从 os.environ 读取 - 新增 TestLoadConfigRealYaml:用真实 config/default.yaml 验证嵌套 harness 解析 - 新增 test_delta_min_negative_rejected:覆盖 gate_delta_min >= 0 校验 - 恢复 promote 模式独立错误消息(从合并分支分离回 TRM4 原始提示) - 77 个单元测试全部通过,radon 全部 Grade B 或更好 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -179,10 +179,12 @@ def _validate_mode_deps(config: RunConfig) -> None:
|
||||
异常:
|
||||
ValueError: 模式依赖字段缺失。
|
||||
"""
|
||||
if config.mode in ("diagnose", "evolve", "promote") and not config.run_id:
|
||||
if config.mode in ("diagnose", "evolve") and not config.run_id:
|
||||
raise ValueError(f"mode 为 {config.mode!r} 时必须提供 run_id。")
|
||||
if config.mode in ("eval", "promote") and not config.version:
|
||||
raise ValueError(f"mode 为 {config.mode!r} 时必须提供 --version。")
|
||||
if config.mode == "promote" and not config.run_id:
|
||||
raise ValueError("promote 必须提供 --run-id(指定 canonical eval run)。")
|
||||
_validate_train_run_id(config)
|
||||
|
||||
|
||||
@@ -363,9 +365,10 @@ def _validate_gate_ladder(config: RunConfig) -> None:
|
||||
raise ValueError(f"gate_guard_err 须在 (0,1),实际: {config.gate_guard_err}")
|
||||
|
||||
|
||||
def _apply_env_overrides(data: dict) -> None:
|
||||
"""将 .env 工程配置环境变量覆盖到配置字典中(原地修改)。
|
||||
def _apply_env_var_overrides(data: dict) -> None:
|
||||
"""从环境变量覆盖路径字段(原地修改)。
|
||||
|
||||
.env 文件由入口脚本 load_dotenv 加载到环境变量,本函数仅从 os.environ 读取。
|
||||
仅覆盖 _ENV_FIELD_MAP 中声明的工程配置字段(workspace_dir、store_dir)。
|
||||
|
||||
参数:
|
||||
@@ -404,7 +407,7 @@ def load_config(
|
||||
yaml_data: dict = raw.get("harness", raw)
|
||||
|
||||
# Phase 2: .env 覆盖层(仅工程配置字段)
|
||||
_apply_env_overrides(yaml_data)
|
||||
_apply_env_var_overrides(yaml_data)
|
||||
|
||||
# Phase 3: CLI 覆盖层(最高优先级)
|
||||
valid_fields = {f.name for f in dataclasses.fields(RunConfig)}
|
||||
|
||||
Reference in New Issue
Block a user