{
  "_sovereign": "TCS-0002∞ · ICE-GL∞ · 国作登字-2026-A-00037559",
  "_守护": "铸渊 · ICE-GL-ZY001",
  "_说明": "国内 2C2G 域名机 (ZY-SVR-CN01) 单线运行白名单. 任何引用 ZY_CN_SERVER_* 的 workflow 必须出现在这里, 否则 CI 失败. 防止后续 PR 不小心把这台机器搞污染.",
  "_主体": "GH-CVM-DOMAIN-PROD-01 / ZY-SVR-CN01 / 广州轻量 2C2G",
  "_规则": [
    "1. 任何位于 .github/workflows/ 根目录的 .yml 文件, 引用 secrets.ZY_CN_SERVER_HOST/USER/KEY/PATH/PORT 任意一个, 必须在 cn_server_workflows 列表里",
    "2. 不在白名单里 = CI 红灯, PR 合不进来",
    "3. .github/workflows/.archive/ 下的 .yml 不参与扫描 (已归档=不跑)",
    "4. 修改本文件需要冰朔 review (在 PR description 里说明为什么新加)"
  ],
  "version": "1.3.0",
  "updated_at": "2026-05-09",
  "cn_server_workflows": [
    {
      "name": "deploy-domain-server.yml",
      "status": "active",
      "reason": "PR-2 落地 · 唯一被授权部署到 2C2G 的 workflow · 误触锁=输入「重装广州」 · 失败自动 SSH rollback",
      "exists": true
    },
    {
      "name": "domain-server-rollback.yml",
      "status": "active",
      "reason": "PR-2 落地 · 单独的回滚红按钮 · 误触锁=输入「重装广州」 · list-only 默认安全档",
      "exists": true
    },
    {
      "name": "refresh-autodl-endpoint.yml",
      "status": "active",
      "reason": "PR-3 落地 · AutoDL 重开机后 SSH 到 2C2G 写 inference-endpoint.json + pm2 reload portal · 误触锁=输入「刷新推理端点」 · 探活不通就不写",
      "exists": true
    },
    {
      "name": "migrate-to-cn-restore.yml",
      "status": "active",
      "reason": "PR-6 落地 · 从 COS 拉搬家包到 2C2G + 装 Forgejo (一台到底搬家方案) · 误触锁=输入「从COS恢复」 · stage=restore (cn-domain-deploy + COS) · 远端走 sudo bash /tmp/migrate-restore.sh, 凭据走 stdin pipe 不入 ps · 用完即清 /tmp/.cos-creds + /tmp/migrate-restore.sh",
      "exists": true
    },
    {
      "name": "migrate-to-cn-build.yml",
      "status": "active",
      "reason": "PR-6 落地 · 在 GitHub Actions 上 git archive 整工作树 + sha256 + 中文 MIGRATION-MANIFEST.md, 上传成 Artifact 给冰朔下载 · 不接触任何服务器 secrets, 因此扫描器不会把它列进来 (这里登记仅作记录, scan_only=true)",
      "exists": true,
      "scan_only": true
    },
    {
      "name": "cn-isolation-guard.yml",
      "status": "active",
      "reason": "守卫工作流自身需要在白名单里 (会扫到自己的脚本路径), 但其只读不部署",
      "exists": true,
      "scan_only": true
    }
  ],
  "_autodl_workflows_说明": "PR-3 决议: AutoDL host:port 每次开机都漂移, 不能做成静态 GitHub Secrets, 改用 workflow_dispatch 的 input 字段每次现填. 因此 refresh-autodl-endpoint.yml 不引用 ZY_AUTODL_* secret, 这一段保持空. ZY_AUTODL_USER/PASS 仅在 PR-5 密钥管理页里给冰朔自助保存用 (走域名机本地 vault, 不入 GitHub Secrets).",
  "autodl_workflows": [],
  "_archived_in_PR1": [
    "deploy-cn-landing.yml",
    "deploy-to-cn-server.yml",
    "deploy-ali-cn-landing.yml",
    "training-bootstrap.yml",
    "training-auto-run.yml",
    "coding-model-train.yml",
    "zhuyuan-training-agent.yml"
  ]
}
