# v0.46 第二阶段：服务端研究证据准入

应用版本0.46.1；新增模型`server-admission-reference-v1`；准入定义版本`portfolio-server-admission-0.46.1`。入口仍为`/research/admissions`。

## 本次能力

新建准入登记时可显式选择成功归档的服务端完整滚动研究任务。服务器核验原结果包、审计链、模型和来源，再冻结准入引用。原有客户端摘要登记保持其原始标识、配置和审核历史，不会因为后来存在相同的服务端结果而自动升级。

本阶段为正式模型事件路由的前置条件。注册、研究审核与商业发布仍是不同步骤；正式事件、订阅白名单、投递队列及发送前撤销校验仍待后续阶段。本阶段不会将PORTFOLIO_TARGET预览改成可投递事件。

## 使用顺序

1. 在多策略组合研究中保存完整研究归档，从该归档建立组合前向来源，审核配置并保持validation或paused。
2. 从同一归档创建`multi-walk-forward-v1`服务端任务，推进所有窗口、组装及最终归档。固定组合复算任务、未完成任务、失败任务或待恢复的结果不能用作本类证据。
3. 在模型准入页选择“服务端完整滚动任务”，选择该来源和匹配的任务，冻结标准。页面只列出原归档一致、当前结果可用的已完成滚动任务，也可填写完整编号，由服务器核验。
4. 标准冻结后开启指定的新一期，创建默认暂停的组合模拟账户，在观察和模拟开始前绑定，再显式启用模拟账户并采集真实前向证据。
5. 满足原门槛后，由独立审核人进行风险审核和限制确认，再由两名不同审核人完成注册。创建者不可自审；服务端计算不绕过观察期、负面结果、成本压力、样本、风险或双人审核门槛。

原有客户端摘要登记仍可显式选择，用于兼容已有研究流程；它不获得本模型的服务端来源标识。不能用原注册编号更换历史证据类型，旧观察也不能补登记为新的前瞻标准。

## 冻结和核验范围

新定义冻结：任务编号、任务配置哈希、原输入归档身份、完整结果包哈希、报告哈希、原对象内容哈希及字节数、原成功归档时间、完整滚动模型配置、由原结果派生的摘要、输入来源类型及数据版本绑定哈希。引用体上限128KiB，完整任务输出沿用8MiB上限。

任务必须与来源使用同一个输入归档，归档编号、包哈希、配置哈希及结果引用均匹配；币种、交易所、日线、预算、成本、风险与模型定义同样必须一致。成功归档时间不能晚于标准冻结时间。

在线创建、绑定、审核、注册提案/确认、详情、预览与导出会校验成功任务审计和原结果对象。对象内容按哈希及大小验证，并比较原包派生的完整摘要与冻结引用；有显式采集数据绑定时，还验证对应快照对象及固定版本身份。审核提交在同一数据库事务中再次校验任务修订、末态哈希和数据版本可用性，并保留原来源、模拟账户与注册修订校验。

原结果对象缺失、损坏或标记待恢复时，当前证据显示不可用并阻止审核、预览和完整导出；不能仅凭数据库保存的摘要继续审核。暂停与撤销不依赖结果对象可用，因此紧急停止仍可执行。读取期间成员权限撤销会阻止响应，注册修订变化会要求刷新。

在线核验复用已完成的实际服务端计算及原对象，不在每次页面读取时重新执行所有研究窗口。独立完整数值复算由下面的离线工具完成。

## 证据标签

| 标签 | 具体含义 |
| --- | --- |
| client_computed | 旧登记使用客户端提交的滚动摘要 |
| server_recomputed | 新登记明确绑定已经由服务端完成数值计算的滚动结果，并核验原对象 |
| client_supplied_archived_snapshot | 服务端计算的输入仍来自客户端提供的归档数据 |
| server_collected_version_bound | 任务事先显式绑定服务器采集版本，准入保留其固定引用 |
| sourceAuthenticityVerified=false | HTTP采集记录和自带哈希不等于交易所签名认证 |
| blindOutOfSample=false | 历史滚动验证仍属于回顾研究，不宣称盲测 |

服务端复算不会把输入数据自动变成可信交易所原始数据，也不把模拟价格或覆盖率解释成真实成交、盈利保证或商业发布资格。原组合前向目标链的标记`sourceTargetsNumericallyRecomputed=false`保持原义。

## 接口

管理员控制台的创建入口仍是`POST /api/console/research/admissions`。新请求为：

```json
{
  "id": "新注册UUID",
  "sourceReleaseId": "已审核且暂停的来源UUID",
  "jobId": "成功归档的完整滚动任务UUID"
}
```

旧请求使用experimentId，二者不能同时提供。请求不接受serverEvidence、完整摘要、收益、ready或serverRecomputed等调用者声明。创建者可通过稳定的同一id重试，但不能用原id替换历史引用。

现有research:read独立密钥可读取和导出其工作区证据，不能创建或改变准入；管理操作仍要求控制台身份和工作区角色。详情每工作区每分钟最多6次，完整导出沿用6次限制和16MiB大小上限。超过上限拒绝生成，不截断证据。

## 完整导出和离线数值复算

新导出在context中携带原服务端完整结果包、任务审计、原来源观察和模拟链；原包只保存一份，不用摘要替代完整数值。整体保持`trendlab-admission-evidence-v1`封装，通过内部明确版本选择处理路径。

在项目根目录使用Node24：

```bash
node --experimental-strip-types scripts/reproduce-admission.mts \
  --file admission-evidence.json --out new-reproduction.json
```

输出路径必须不存在，输入最多16MiB。对新定义，工具验证完整封装、任务审计、原包和冻结引用，从原始输入重新运行全部滚动窗口并逐项比较完整结果和派生摘要，再复算准入审核链与附带模拟账本。即使伪造者重新计算包、任务审计、准入和外围文件的所有哈希，不一致的数值曲线仍被拒绝。

文件自身的哈希和数学一致性不能单独认证它来自哪台可信服务器。离线报告保留`serverProvenanceAuthenticated=false`、`sourceAuthenticityVerified=false`和前向模拟标识；完整证据不等于真实上游或实盘验收。

## 备份、恢复与兼容

不新增表结构：仍为56业务备份表、26迁移。新版本化引用保存在既有model_registrations配置内；当前便携恢复工具37文件，v0.46第一阶段的35文件冻结在`/integration/v046-phase1/`。

数据库恢复演练校验新定义、固定任务结果索引、任务事件链和来源绑定，报告明确其为元数据及账本验证，不能代替原对象数值复算。恢复后模型注册暂停、任务结果及数据快照标记待恢复。管理员按原路径恢复原对象并完成原通道修复，再核验并重新履行准入流程；旧审核授权不会自动恢复。

虽数据库结构相同，旧程序不识别新准入定义，仍不能直接回退。使用`release-v046-phase2.json`检查模型兼容性；精确源码与保存版本以实际发布记录为准，清单空槽位不代表已有发布身份。

验证结果见`verification-v0461.json`。测试中的历史收益由实际引擎从合成数据计算，前向正负样本使用明确标记的合成协议链；都不是生产持续观察或真实策略绩效。云端调度工具已在真实私有入口返回“未配置、暂停”，尚无持续任务或真实前向验收。
