diff --git a/research-wiki/plans/2026-07-16-preflight-wp4-resilience.md b/research-wiki/plans/2026-07-16-preflight-wp4-resilience.md index 9016379..11e64cc 100644 --- a/research-wiki/plans/2026-07-16-preflight-wp4-resilience.md +++ b/research-wiki/plans/2026-07-16-preflight-wp4-resilience.md @@ -22,7 +22,7 @@ | TTL | `main.py:41` `redis_cache_ttl=86400`;`:93` `ttl_s = ... if >0 else None` | | 熔断 | `adapters/breaker.py:24` `is_open`(L36-37 到期即放行,无探针锁);`record_failure:39`;`record_success:63` | | gate INFRA | `app/harness/validate.py:257` `_resolve_baseline_block`(put L303-304);`_check_infra_guard:384`(累计检查 L593);`BaselineCache` in `gate_ladder.py:344`(put L384 原子 L401-403) | -| 持久化 | `app/harness/workspace.py` 4 处非原子 write_text:`_scaffold:111`/`update_manifest:282`/`record_run:311`/`update_best:365`;原子范式 `checkpoint.py:257-260` | +| 持久化 | `app/harness/workspace.py` 4 处非原子 `manifest.json` write_text(WP2 后行号):`_scaffold:111`/`update_manifest:289`/`record_run:318`/`update_best:372`;原子范式 `checkpoint.py:257-260`。**以 `grep -n 'manifest.json").write_text' app/harness/workspace.py` 现场定位为准** | | 基线元数据 | `app/harness/log.py:57` `HarnessLog.__init__`(upsert `_runs` L73-82);`RunLogImpl._read_table:247`(只读) | | dual_metric | `app/harness/observation.py:119` `write_dual_metric`(version_kind final L138);runner 调用 `runner.py:1444-1448` | | 配置 | `.env:65` `REDIS_CACHE_TTL=0`;`.env.example:49` `=86400` | @@ -426,7 +426,7 @@ def _atomic_write_json(path: Path, data: dict) -> None: tmp.write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8") os.replace(tmp, path) ``` -把 `_scaffold_workspace`(L111)、`update_manifest`(L282)、`record_run`(L311)、`update_best`(L365)四处的 `(...).write_text(json.dumps(...))` 替换为 `_atomic_write_json(, )`。 +把 `_scaffold_workspace`(~L111)、`update_manifest`(~L289)、`record_run`(~L318)、`update_best`(~L372)四处的 `(workspace_dir / "manifest.json").write_text(json.dumps(...))` 替换为 `_atomic_write_json(workspace_dir / "manifest.json", )`(用 `grep -n 'manifest.json").write_text' app/harness/workspace.py` 定位全部 4 处,行号随 WP2 改动漂移)。 - [ ] **Step 4: 运行测试确认通过 + 回归**