diff --git a/docs/data_factor_roadmap.md b/docs/data_factor_roadmap.md index 7f95354..220d4b4 100644 --- a/docs/data_factor_roadmap.md +++ b/docs/data_factor_roadmap.md @@ -80,38 +80,47 @@ Priority order: 6. Macro/risk regime: VIX, rates, dollar, credit spreads, oil, yield curve, and sector beta. -## 2026-10-06 input publication recovery (planned) +## 2026-10-06 input publication recovery (staged evidence) -Read-only evidence shows that the Advisor still builds and publishes, but its -checked-out upstream inputs do not reflect the latest generated artifacts. -The [October 6 report build](https://github.com/QuantStrategyLab/QuantAdvisorResearch/actions/runs/37460712408) -has `as_of=2026-10-03`, 42 market-confirmation rows, and zero final picks. The -rejections are `ai_signal_provenance_untrusted` and -`theme_momentum_stale_as_of`; these gates must remain unchanged. +At incident capture, the Advisor still built and published, but its checked-out +upstream inputs lagged generated artifacts. The +[earlier October 6 build](https://github.com/QuantStrategyLab/QuantAdvisorResearch/actions/runs/37460712408) +had `as_of=2026-10-03`, 42 market-confirmation rows, and zero final picks; its +warnings were `ai_signal_provenance_untrusted` and `theme_momentum_stale_as_of`. +Those gates remain unchanged. - [x] Separate generation, protected publication, and consumer acceptance: RSCP's [fresh theme artifact](https://github.com/QuantStrategyLab/ResearchSignalContextPipelines/actions/runs/37132550227) was retained after a protected-main push rejection; PETR produced a manual publication handoff; the latest AI request failed without pushing files -- [x] Prepare and locally test the two weekly Advisor schedules for Sunday - 12:30/13:00 UTC, retaining their clock times, closed-period helper, and freshness - contract; remote publication remains pending -- [x] Record the RSCP generation-versus-publication distinction and fixed-artifact - review requirements; workflow identity changes remain deferred -- [ ] Review the exact existing theme artifact and publish it through a normal - PR only after its producer metadata, bytes, time bounds, and policy pass - verification; verify the actual PR head's required `test` check -- [ ] Resolve event-entity evidence and AI signal/manifest recovery in their - owning workstreams, without broadening this bounded change -- [ ] After separately authorized publication, verify the upstream commit or - artifact digest actually consumed, report freshness, and deployed report hash - -A successful generation run is not completed publication. A one-time reviewed -PR restores one snapshot only; it does not establish unattended weekly delivery. -Zero final picks remain an acceptable result when valid evidence is insufficient. -See [the recovery constraints](system_design.md#input-publication-recovery-2026-10-06) -for the verified identity and timing limits. This checklist records planned work, -not a completed repair. +- [x] Merge and verify [QAR #79](https://github.com/QuantStrategyLab/QuantAdvisorResearch/pull/79): + Sunday 12:30/13:00 UTC schedules, unchanged closed-period helper and freshness contract +- [x] Review exact producer metadata, bytes, dates, and policy; merge the one-time + theme import through [RSCP #55](https://github.com/QuantStrategyLab/ResearchSignalContextPipelines/pull/55) + with successful required `test` checks on the actual PR head and merged main +- [x] Verify real consumption in [Weekly run 37515064136](https://github.com/QuantStrategyLab/QuantAdvisorResearch/actions/runs/37515064136): + actual upstream commits, schema-2 theme hash, five-input digest, report/manifest + hashes, and offline M0 report digest all match; no fixtures or date edits +- [ ] Recover trusted AI signal/manifest and accepted company-entity evidence in + their owning workstreams; code validation fixes alone do not close these data gaps +- [ ] Confirm notification side effects of the existing publication entry point, publish, and verify the deployed report hash +- [ ] Establish recurring reviewed upstream publication; a one-time import does not close this loop + +The accepted report uses the October 3 cutoff (`reference_time=2026-10-04T00:00:00Z`). +All 43 market rows are direct `yahoo_chart`, dated October 2, with 318 observations, +`price_age_days=1`, `price_observed`, and no warnings, proxy, cache, or theme fallback. +Its disjoint final lists are recommendations `MU, DELL, INTC, AMD` and watchlist +`CRWD, PANW, TSM, SMCI`; per-horizon buckets can repeat a symbol across horizons. +All eight items have zero company-source and long-AI contributions: existing theme +momentum and market-confirmation rules produce the results. All 11 source events +remain unaccepted as company evidence, and `ai_signal_provenance_untrusted` remains. + +Pages and Telegram were not updated by this artifact-only acceptance run. The +existing frontend republisher only re-renders the already public archive and +cannot import this weekly artifact. The October 2 theme is stale for the October 10 +report, despite its later declared expiry. Zero final picks remain valid when +evidence is insufficient. See [the recovery evidence](system_design.md#input-publication-recovery-2026-10-06) +for hashes, actual source commits, and the existing `ai_signal_score` alias semantics. ## Low-Risk Implementation Order diff --git a/docs/data_factor_roadmap.zh-CN.md b/docs/data_factor_roadmap.zh-CN.md index 373ae86..213f596 100644 --- a/docs/data_factor_roadmap.zh-CN.md +++ b/docs/data_factor_roadmap.zh-CN.md @@ -1,22 +1,30 @@ # 数据源与因子完善路线 -## 2026-10-06 输入发布恢复(待实施) +## 2026-10-06 输入发布恢复(阶段验收) -只读核查确认投顾仍在生成和发布,但 checkout 的上游 main 文件没有跟上新产物。 -[10/06 构建](https://github.com/QuantStrategyLab/QuantAdvisorResearch/actions/runs/37460712408) +事件核查时,投顾仍在生成和发布,但 checkout 的上游 main 文件没有跟上新产物。 +[较早的 10/06 构建](https://github.com/QuantStrategyLab/QuantAdvisorResearch/actions/runs/37460712408) 报告截止日为 10/03,有 42 条市场确认,最终推荐和观察均为 0;质量告警为 -`ai_signal_provenance_untrusted` 和 `theme_momentum_stale_as_of`,保留这些门槛。 +`ai_signal_provenance_untrusted` 和 `theme_momentum_stale_as_of`,这些门槛保持不变。 - [x] 区分生成、受保护发布和消费者接受:RSCP 新主题因保护规则拒绝推 main 后只留 artifact;PETR 只产人工交接;最新 AI 请求失败且未推文件 -- [x] 已准备并本地测试两条周任务的 UTC 周日 12:30/13:00 候选,保留原有时分、周期算法和时间合同;远端发布待处理 -- [x] 已记录 RSCP 生成与发布的区别及固定 artifact 审核要求;持续发布身份改动暂缓 -- [ ] 对固定主题 artifact 验证生产者元数据、原始字节、时间和政策后,另行审核正常 PR;核实该 PR 实际 head 的必需 test -- [ ] 事件实体证据与 AI signal/manifest 恢复由各自负责工作线处理,不扩大本次有限写集 -- [ ] 发布另获授权后,核验真正消费的上游 commit 或 artifact digest、报告新鲜度及部署报告 hash - -一次正常 PR 只恢复一个快照,不代表每周自动交付闭环。有效证据不足时,最终数量为 0 -仍是合法结果;不得降低门槛或改写历史生成时间来制造非零结果。身份和截止时点约束见 -[系统设计恢复说明](system_design.zh-CN.md#2026-10-06-输入发布恢复)。当前清单表示计划,并非修复已完成。 +- [x] 已合并并验证 [QAR #79](https://github.com/QuantStrategyLab/QuantAdvisorResearch/pull/79):UTC 周日 12:30/13:00,保留闭合周期函数和新鲜度合同 +- [x] 核实准确生产者元数据、字节、日期和政策,经 [RSCP #55](https://github.com/QuantStrategyLab/ResearchSignalContextPipelines/pull/55) 正常 PR 一次补入主题;实际 PR head 与合并 main 的必需 `test` 均通过 +- [x] [Weekly run 37515064136](https://github.com/QuantStrategyLab/QuantAdvisorResearch/actions/runs/37515064136) 真实消费验收:实际上游 commit、schema-2 主题 hash、五输入 digest、报告/manifest hash 和离线 M0 报告 digest 均吻合;未用 fixture 或改日期 +- [ ] 在各自工作线恢复可信 AI signal/manifest 和可接受的公司实体证据;代码校验修复不等于数据缺口闭环 +- [ ] 核定既有发布入口的通知副作用,发布并验证部署报告 hash +- [ ] 建立持续、受审的上游发布;一次导入不代表此环节已闭合 + +验收报告截止日为 10/03(`reference_time=2026-10-04T00:00:00Z`)。43 条行情均为直接 +`yahoo_chart`、10/02 价格、318 个观测、`price_age_days=1`、`price_observed`,无告警、代理、缓存或主题 fallback。 +最终推荐为 `MU、DELL、INTC、AMD`,观察为 `CRWD、PANW、TSM、SMCI`,两个最终列表互不重叠; +分周期列表可跨周期重复同一标的。8 项的公司来源分与长周期 AI 贡献均为 0,结果来自既有主题动量和市场确认规则。 +11 个来源事件仍未通过公司实体接受,`ai_signal_provenance_untrusted` 告警仍保留。 + +这次只产 artifact 的验收未更新 Pages 或 Telegram。既有前端重发布只重渲染公开 archive, +不能导入本次 weekly artifact。10/02 主题对 10/10 报告仍超过 7 天新鲜度上限,不能用较晚的声明 expiry 绕过限制。 +有效证据不足时,最终数量为 0 仍是合法结果。hash、实际源码 commit 和现有 `ai_signal_score` 别名语义见 +[系统设计恢复说明](system_design.zh-CN.md#2026-10-06-输入发布恢复)。 [English](data_factor_roadmap.md) | [简体中文](data_factor_roadmap.zh-CN.md) diff --git a/docs/system_design.md b/docs/system_design.md index ad9d091..d8dd785 100644 --- a/docs/system_design.md +++ b/docs/system_design.md @@ -170,17 +170,18 @@ momentum, and long-horizon gates require durable AI shadow or context strength. ## Input Publication Recovery (2026-10-06) -The bounded recovery changes scheduling and documents publication handoff. It does -not change renderers, score thresholds, account boundaries, or source contracts. -The [recovery checklist](data_factor_roadmap.md#2026-10-06-input-publication-recovery-planned) -tracks implementation and acceptance separately. +The bounded recovery changes scheduling and records one-time theme publication +and consumer acceptance. It does not change renderers, score thresholds, account +boundaries, or source contracts. The +[recovery checklist](data_factor_roadmap.md#2026-10-06-input-publication-recovery-staged-evidence) +tracks implementation, consumer acceptance, and public-site publication separately. At incident capture, the weekly jobs ran on Saturday while `default_weekly_as_of()` selects the last *fully closed* Saturday. For example, a 2026-10-03 Saturday run selects 2026-09-26, whose `reference_time` is 2026-09-27 00:00 UTC. A theme generated on -2026-10-03 must not pass that earlier cutoff. The local candidate schedules weekly -review at 12:30 UTC Sunday and publication at 13:00 UTC Sunday, preserving the -existing times. Both use +2026-10-03 must not pass that earlier cutoff. Merged [PR #79](https://github.com/QuantStrategyLab/QuantAdvisorResearch/pull/79) +schedules weekly review at 12:30 UTC Sunday and publication at 13:00 UTC Sunday, +preserving the existing times. Both use the same helper after 00:00 UTC, so the new report's cutoff includes Saturday's already-generated context. A delayed run must still use authentic source dates; changing `generated_at`, expiry, or freshness limits is not a recovery mechanism. @@ -209,6 +210,26 @@ schema/policy/coverage/time contract. Extraction alone proves none of these. Record generated, review-required, published, and consumer-accepted as distinct states. A reviewed PR does not solve the remaining unattended CI identity gap. +Verified on October 6: RSCP [PR #55](https://github.com/QuantStrategyLab/ResearchSignalContextPipelines/pull/55) +imported the reviewed schema-2 snapshot without changing its bytes or source dates. +[Weekly run 37515064136, attempt 1](https://github.com/QuantStrategyLab/QuantAdvisorResearch/actions/runs/37515064136) +then consumed QAR `fe5b00375a4f5cca821fec07317ec92d61546cac`, PETR +`96e4d2a8f9cea9684a4594173397fd78e91119dd`, and RSCP +`0a40f173d98b3d715e59653766c180cf5846dc1c`. The real report has +`as_of=2026-10-03`, `reference_time=2026-10-04T00:00:00Z`, and +`generated_at=2026-10-06T18:56:15Z`; theme freshness is `fresh`. +The theme SHA256 is `f984a3d0b0e0eb14a8f1cf3aac258f909821b06eb2b89e57a766c70aca42ab12`. +Recomputing all five raw input hashes, including the run's market CSV, matches +report/manifest `input_digest=1ccd99bc53ebcbd513581ef1ec1061681778f65fbee7802ee1cd39bc939175ce`. +The [weekly artifact](https://github.com/QuantStrategyLab/QuantAdvisorResearch/actions/runs/37515064136/artifacts/11436757649) +contains the report, manifest, market CSV, and offline M0 evidence. This workflow +only writes its artifact and existing market cache; it does not update Pages or notify Telegram. + +The existing `final_decisions` compatibility field `ai_signal_score` aliases +`medium_context_score`, derived from theme context. It does not establish trusted +long-horizon AI availability; this run still rejects AI provenance. No field or +protocol change is part of this evidence update. + References: [artifact API](https://docs.github.com/en/rest/actions/artifacts#download-an-artifact), [fixed producer run](https://github.com/QuantStrategyLab/ResearchSignalContextPipelines/actions/runs/37132550227), [consumer build](https://github.com/QuantStrategyLab/QuantAdvisorResearch/actions/runs/37460712408). diff --git a/docs/system_design.zh-CN.md b/docs/system_design.zh-CN.md index d69996d..8b7f540 100644 --- a/docs/system_design.zh-CN.md +++ b/docs/system_design.zh-CN.md @@ -4,12 +4,13 @@ ## 2026-10-06 输入发布恢复 -本次计划只修改周任务截止时点并记录主题发布交接,不改网页、评分门槛、账户边界或可信输入合同。 -进度见[恢复清单](data_factor_roadmap.zh-CN.md#2026-10-06-输入发布恢复待实施)。 +本次有限恢复修改周任务截止时点,并记录一次主题发布与真实消费验收,不改网页、评分门槛、账户边界或可信输入合同。 +进度见[恢复清单](data_factor_roadmap.zh-CN.md#2026-10-06-输入发布恢复阶段验收),区分实现、消费者接受和公开站点发布。 事件核查时,周六运行却选“最近完全闭合的周六”:10/03 的运行选 09/26,参考截止时间为 -09/27 00:00 UTC,因此 10/03 新生成的主题不能合法用于这一旧截止日。本地候选将两条周任务 -移到 UTC 周日 12:30/13:00,保留原有时分和周期函数,使当周六生成的上下文处于报告截止前。 +09/27 00:00 UTC,因此 10/03 新生成的主题不能合法用于这一旧截止日。已合并的 +[PR #79](https://github.com/QuantStrategyLab/QuantAdvisorResearch/pull/79) 将两条周任务移到 UTC 周日 +12:30/13:00,保留原有时分和周期函数,使当周六生成的上下文处于报告截止前。 延迟执行仍按真实来源时间验证,不补假日期、不延长 freshness 或 expiry 来消除告警。 RSCP 是公开仓库;当前 QAR 能 checkout 公开 Git 内容,不代表其 job token 能读取 @@ -26,6 +27,22 @@ GITHUB_TOKEN 创建或更新 PR 会产生 approval-required 的 opened/synchroni digest、唯一文件路径和 hash,以及快照 schema/policy/覆盖率/时间合同。解压复制不等于 可信通过。生成、待审、发布、被消费者接受是不同状态;一次 PR 不代表持续自动化已恢复。 +10/06 已验阶段:RSCP [PR #55](https://github.com/QuantStrategyLab/ResearchSignalContextPipelines/pull/55) +逐字补入已审核 schema-2 快照,未改原始字节或来源日期。随后 +[Weekly run 37515064136,attempt 1](https://github.com/QuantStrategyLab/QuantAdvisorResearch/actions/runs/37515064136) +实际消费 QAR `fe5b00375a4f5cca821fec07317ec92d61546cac`、PETR +`96e4d2a8f9cea9684a4594173397fd78e91119dd`、RSCP +`0a40f173d98b3d715e59653766c180cf5846dc1c`。真实报告为 `as_of=2026-10-03`、 +`reference_time=2026-10-04T00:00:00Z`、`generated_at=2026-10-06T18:56:15Z`;主题 freshness 为 `fresh`。 +主题 SHA256 为 `f984a3d0b0e0eb14a8f1cf3aac258f909821b06eb2b89e57a766c70aca42ab12`。 +包含本次行情 CSV 的五份原始输入逐项复算后,与报告/manifest 的 +`input_digest=1ccd99bc53ebcbd513581ef1ec1061681778f65fbee7802ee1cd39bc939175ce` 完全一致。 +[Weekly artifact](https://github.com/QuantStrategyLab/QuantAdvisorResearch/actions/runs/37515064136/artifacts/11436757649) +保留报告、manifest、行情 CSV 和离线 M0 证据;该工作流只写 artifact 与既有行情缓存,未更新 Pages 或通知 Telegram。 + +现有 `final_decisions` 兼容字段 `ai_signal_score` 是主题派生的 `medium_context_score` 别名, +不能据此认定长周期 AI 已可信可用;本次运行仍拒绝 AI provenance。本次证据更新不改字段或数据协议。 + 依据:[固定生产运行](https://github.com/QuantStrategyLab/ResearchSignalContextPipelines/actions/runs/37132550227)、 [GITHUB_TOKEN 触发规则](https://docs.github.com/en/actions/concepts/security/github_token)、 [artifact 下载规则](https://docs.github.com/en/rest/actions/artifacts#download-an-artifact)。