Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 35 additions & 26 deletions docs/data_factor_roadmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
34 changes: 21 additions & 13 deletions docs/data_factor_roadmap.zh-CN.md
Original file line number Diff line number Diff line change
@@ -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)

Expand Down
35 changes: 28 additions & 7 deletions docs/system_design.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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).
Expand Down
25 changes: 21 additions & 4 deletions docs/system_design.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 能读取
Expand All @@ -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)。
Expand Down
Loading