94 lines
3.6 KiB
Markdown
94 lines
3.6 KiB
Markdown
# Quant OS 独立仓迁移记录
|
||
|
||
迁移日期:2026-07-30
|
||
|
||
## 目标位置
|
||
|
||
- 本地:`/Users/zhangbiao/boat-workspace/Code/quant-os`
|
||
- 远端:`https://git.gomars.fun/boat/quant-os.git`
|
||
- 公共状态:`https://gomars.fun/quant-os/status/`
|
||
- 原仓:`https://git.gomars.fun/boat/quants-strategies.git`
|
||
|
||
## 迁移执行结果
|
||
|
||
2026-07-30 已完成独立仓、数据资产、公共状态和旧仓边界切换:
|
||
|
||
- 独立仓 clean clone 的 315 项测试通过,6 项可选 runtime 测试跳过;
|
||
- `data/`、`artifacts/`、`mlruns/` 共 4,281 个文件逐文件 SHA-256 一致,
|
||
inventory hash 为
|
||
`d18774756d56eb89239643bd91792feb5e1c7b5ab8fd804bf52f6d429c448e91`;
|
||
- 旧 `.venv-qlib312` 未迁入新项目,随迁移前完整目录保留在本机
|
||
`../quant-os-migration-backup-20260730`,新环境按 requirements 重建;
|
||
- 原 `quants-strategies` 仓在提交 `bd61d83` 后仅保留 `quant-os/README.md`
|
||
迁移指针,原仓的 Cash Layer 未提交改动未进入迁移提交;
|
||
- 新公共地址返回 200,发布文件与独立仓逐字节一致;六个旧 Quant OS 精确地址
|
||
暂时返回 302 到新地址,`quants-strategies` 下的 Cash Layer 路由保持 200。
|
||
|
||
这些本地数据与备份均不进入 Git;公开状态仍是脱敏、构建时生成的静态快照。
|
||
|
||
## 历史保留方式
|
||
|
||
从原仓已提交 `master` 执行:
|
||
|
||
```text
|
||
git subtree split --prefix=quant-os
|
||
```
|
||
|
||
路径提交映射:
|
||
|
||
| 原仓提交 | 独立历史提交 | 内容 |
|
||
| --- | --- | --- |
|
||
| `e561efd` | `48c5f64` | A 股 60 分 Baseline 初始实现 |
|
||
| `f998f4d` | `e5911ca` | Tushare → Qlib 数据桥 |
|
||
| `692f6ef` | `00efeb7` | 公共状态控制台 |
|
||
|
||
SHA 改变是路径提取的正常结果;作者、时间、顺序和文件历史保留。
|
||
|
||
原工作树中尚未提交的 TargetPackage、五层链、release reachability 和真实
|
||
JoinQuant execution smoke 被叠加到独立分支,并形成单独 checkpoint
|
||
`919c64c`。原 `quants-strategies` 的 cash-layer 脏改没有进入新仓。
|
||
|
||
## 本地运行状态
|
||
|
||
以下目录被 Git 忽略,不进入远端;这是数据安全边界,不只是迁移便利:
|
||
|
||
- `data/`
|
||
- `artifacts/`
|
||
- `mlruns/`
|
||
- `.venv-*`
|
||
|
||
迁移时复制前三类并校验清单;只记录文件数、总字节和相对路径/hash,不把
|
||
数据内容或绝对源路径写入公开文档。旧 `.venv-qlib312` 接近 1 GB,脚本中包含原
|
||
绝对路径,不能把“目录搬过去”视为有效环境;新仓应按固定 requirements 重建。
|
||
旧环境在新仓完整验证前不删除。
|
||
|
||
清单与复核命令:
|
||
|
||
```bash
|
||
python3 tools/inventory_local_assets.py <old-project-root> \
|
||
--output /tmp/quant-os-local-assets.json
|
||
python3 tools/inventory_local_assets.py <new-project-root> \
|
||
--compare /tmp/quant-os-local-assets.json
|
||
```
|
||
|
||
清单不记录根目录,只记录 `data/`、`artifacts/`、`mlruns/` 的相对路径、字节数
|
||
和 SHA-256;遇到 symlink 会拒绝继续。
|
||
|
||
## 兼容政策
|
||
|
||
- `quant-os` / `quant_os` 是新产品入口;
|
||
- `quant60` CLI/import 和 V1 schemas 保留至少两个发布周期;
|
||
- `portable-momentum` 只保留 smoke/example 身份;
|
||
- 旧公共 URL 先保持 302 兼容跳转;稳定观察后再单独升级 308,不能直接 404;
|
||
- 原仓最终只保留独立项目指针,不复制代码。
|
||
|
||
## 完成条件
|
||
|
||
1. 独立仓 clean clone 通过 `make local`;
|
||
2. generated bundle/status 无 drift;
|
||
3. secret/绝对路径检查通过;
|
||
4. 新远端 commit 与本地 commit 相同;
|
||
5. 新公共 URL 返回正确独立仓快照;
|
||
6. 旧 URL 有兼容跳转;
|
||
7. 最后才从旧仓移除 `quant-os/` 和旧专属 CI。
|