From a7fc427ff98517591b8366254ec3fbbd62962f80 Mon Sep 17 00:00:00 2001 From: XucroYuri <79034773+XucroYuri@users.noreply.github.com> Date: Fri, 4 Sep 2026 00:44:35 +0800 Subject: [PATCH 1/3] chore: sync .planning/ROADMAP.md via gh api --- .planning/ROADMAP.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index c1adc0f..b2ab84a 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -74,6 +74,7 @@ - [x] `formal` CLI 可输出正式验收前 JSON 报告。 - [x] `generate_v2_overview()` 已提供 v2 因子状态 + formal 报告总览。 - [x] `overview` CLI 已输出 v2 研究总览。 +- [x] overview 输出包含 as_of。 - [x] Web 工作台已显示 v2 总体状态。 - [x] `doctor` CLI 提供本地模块健康检查。 - [ ] 输出双因子 v2 的 episode 级正式样本外成本后检验报告文档。 From f3b2dbe82744891f9fed37c09f63364a9dba979e Mon Sep 17 00:00:00 2001 From: XucroYuri <79034773+XucroYuri@users.noreply.github.com> Date: Fri, 4 Sep 2026 00:44:36 +0800 Subject: [PATCH 2/3] chore: sync CHANGELOG.md via gh api --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bbe1a81..a99baf1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,7 +67,8 @@ - Web 工作台显示 v2 总体状态并携带 overview payload; - `doctor` CLI 与本地模块健康检查; - `freeze_checklist()`:返回正式冻结验收所需清单状态; -- `generate_v2_formal_report()` 输出中附带 freeze_checklist。 +- `generate_v2_formal_report()` 输出中附带 freeze_checklist; +- `generate_v2_overview()` 输出 as_of。 ## [0.1.0-rc1] - 2026-09-02 From b2d482a8c9b2fa77d307ba075d8e0e79e981f91a Mon Sep 17 00:00:00 2001 From: XucroYuri <79034773+XucroYuri@users.noreply.github.com> Date: Fri, 4 Sep 2026 00:44:38 +0800 Subject: [PATCH 3/3] chore: sync src/goratio/formal_v2.py via gh api --- src/goratio/formal_v2.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/goratio/formal_v2.py b/src/goratio/formal_v2.py index 53a5aff..2707f39 100644 --- a/src/goratio/formal_v2.py +++ b/src/goratio/formal_v2.py @@ -68,6 +68,7 @@ def generate_v2_overview(data: PreparedMarketData) -> dict: return { "protocol": PROTOCOL_V2_ID, "overview": { + "as_of": factor.get("as_of"), "factor_available": factor.get("available", False), "factor_state": factor.get("research_state"), "overall_status": formal["overall_status"],