# v0.44.1 服务端滚动验证任务

入口 `/research/jobs`，任务类型选择“滚动验证 · 逐窗口计算”。这是 v0.44 研究任务的第二批能力，沿用 v0.41 数值引擎和 v0.44 的身份、计量、租约及对象存储协议，不新增数据库表。

## 使用方式

1. 在多策略组合研究台，用要验证的币种、成本、风险及初始策略预算保存完整固定组合包。输入仍是同工作区 v0.38 multi 归档，不接受上传 128 MiB 的客户端滚动结果来授予服务端认证。
2. 在任务页选择该归档，任务类型选择滚动验证，创建任务。服务端冻结原完整包身份，并从其配置确定性派生滚动模型、候选预算及 v0.41 规则哈希。调用者不能指定候选选择、窗口游标、收益、时钟或“已完成”状态。
3. 每次手动推进或独立研究运行器 tick 只计算一个窗口。完成后写入私有对象检查点，再原子记录窗口游标。页面关闭不会删除任务；后续请求从已提交游标继续。
4. 全部窗口完成后，再推进一次组装，读取并核验各检查点，链接五项测试对照，形成完整研究包。再推进一次归档，核验最终对象后开放下载。因此 N 个窗口正常需要 N+2 次领取。
5. 结果外层保留服务端计算说明，内层 `bundle` 是原生 v0.41 滚动研究包。可下载完整证明，或下载内层包导入原滚动验证页再次计算。运行 `node --experimental-strip-types scripts/reproduce-server-research.mts --file result.json --out new-report.json` 可精确复算外层完整文件。

## 研究规则和边界

保留原 260 根预热、365 天训练、1 天隔离、90 天测试、91 天步长；只用训练区间净 Sharpe 选择预算，同分按固定顺序，样本不足回到基线。训练与测试使用物理数据前缀，不把未来数组提供给训练。输出 selected、baseline、equal、stress、hold 五组完整账本；压力成本使用该窗口已选预算。

每个窗口现金起步并扣费结清，测试区间之间的间隔以现金零收益链接。链接净值是研究指数，不是连续实盘账户。历史数据已可见，仍标记 retrospective walk-forward、blindOutOfSample=false；不是预先未知样本或真实成交证据。

支持 2–3 个同交易所、同起止区间的币种，1–4 项策略、716–1358 根日线，最多 8 个窗口。历史分页快照仍受原 1095 根限制；完整冻结原始数据可达到 1358 根。保留固定任务 20000 工作单位的输入约束。输入及最终输出各 8 MiB，单窗口检查点 1 MiB、检查点合计 6 MiB；超过上限明确失败并退回预留，不截断账本。

工作区的 20 个总任务、2 个未完成任务、1 个有效租约在两种任务间共享。每个窗口、组装和归档分别最多 3 次领取。成功窗口保留自身累计次数，下个窗口重新获得其独立尝试预算；显式重试不重置当前窗口次数和原创建后的 24 小时截止时间。滚动任务最多 100 条审计事件，旧固定任务仍保持 50 条。

单窗口是同步且不可抢占的计算单元，60 秒租约拒绝迟到提交，不提供 CPU 强制终止。取消在对象操作后的权限检查点或租约到期维护时确认。取消期间写入、但尚未提交游标的对象不构成已完成窗口，也不会开放结果。失去租约的旧处理器不能推进游标。对象写入和数据库提交之间崩溃，可重算当前窗口；已提交窗口无需重算。

本版有手动推进及既有 Python `research-jobs` 通道，仍未配置托管调度，也不会在开发会话结束后自行启动任何生产研究任务。

## 用量、认证和结果身份

一项滚动任务只预留 1 次 `manual_evaluations`，不按窗口额外计量。最终成功结算同一回执；失败、取消和恢复中断退回仍预留的精确回执。重试重新预留，已成功窗口不会增加重复扣量。跨月规则与 v0.44 相同。

沿用当前成员、任务创建者、账号治理、套餐和币种校验，每个窗口及组装对象读写前后重新校验。API `research:run` 只可 tick，`research:read` 可读、下载和导出；创建、取消、重试仍需具备权限的同源浏览器会话。查看者不能推进任务。对象修复核验仅管理员或所有者。

创建接口仍为 `POST /api/console/research/jobs`，请求 `{id, archiveId, kind:"multi-walk-forward-v1"}`。省略 kind 保留旧固定组合默认值。相同 id 绑定不同 kind 会冲突，不能把已入队固定任务更改为滚动任务。其他 detail、run、control、result、export、tick 路径及独立认证均保持不变。

滚动配置位于 `job.config.modelConfig`；`job.config.input.config` 是固定组合原输入，二者分别核验。输出使用滚动模型配置哈希，`claimMatches:null` 表示原输入没有同一滚动结果的客户端声明，不能把它解释为匹配或不匹配。

服务端确实进行数值计算后才标记 server_recomputed；原客户端包及旧滚动实验摘要保持其原验证类型，不自动升级模型准入。历史快照仍由客户端归档提供，sourceAuthenticityVerified=false；计算一致性不认证交易所来源或文件签发者身份。

## 恢复与回退

仍为 50 张业务备份表、23 份迁移。便携恢复工具新增滚动任务状态机及规则，共 31 文件；v0.44 旧 29 文件逐字节冻结于 `public/integration/v044/`。使用 `release-v0441.json` 核对回退，旧 v0.44 不支持新任务模型，须使用兼容修复版本。

数据库备份只包含输入与输出索引、窗口检查点哈希和事件链，不包含 R2 文件。恢复会中断未完成任务、清除租约并退回预留，保留已提交窗口游标。原输入与所有已完成窗口对象从单独备份恢复、输入索引补传核验后，才能显式重试继续；恢复不会启动工作。原任务期限和尝试次数仍有效。组装发现缺失或被改写的窗口对象会失败并退回预留，不能偷偷补造结果。

窗口对象路径为 `server-research/v1/SHA256工作区/任务UUID/folds/窗口编号/内容SHA256.json`；最终对象路径保持 v0.44 规范。成功任务保留结算与计算记录，输出标记待恢复，管理员核验原最终对象后恢复下载。数据库恢复工具验证状态和用量链，完整数值复算需要包含行情与账本的结果包；两种检查有不同证据范围。

验证使用隔离 D1、R2、合成行情及既有冻结 BTC/ETH/SOL 数据。浏览器点击、生产连续运行、生产对象备份切换及资源额度验收仍待开展。本版不改变模型准入，不生成正式信号、消息投递或真实订单。
