跳转至

CONTEXT

热修通道(hotfix channel)项目的领域词汇表。方案、工单、代码中的命名以此为准。

词汇表

  • 热修通道(hotfix channel):独立于完整版本发布的签名文件集下发通道。下发对象见"受管文件"。
  • 受管文件(managed file):热修通道管理的可替换文件。第一版包括:主程序 exe、yt-dlp.exe、配置开关文件。
  • 热修包(hotfix package):一次热修下发的文件 + 元数据。以"基线版本 + 热修序号"标识(版本语义待 spec 定)。
  • 清单(manifest):服务端下发的热修描述文件。含:受管文件列表(URL、SHA-256、Ed25519 签名)、适用基线版本、灰度参数(percent / canary 白名单 / exclude 名单)、urgent 标记、单调递增的清单版本号、过期时间。清单本身必须签名。
  • 基线版本(base version):热修包适用的已安装客户端版本。热修只针对最新正式版(ADR-0002)。
  • canary:灰度第一档,按 machine_id 白名单命中内部设备。不可跳过。
  • safe exe:切换前保留的上一版可用 exe 副本,本地回滚的回退目标。
  • 预提交自检(pre-commit selftest):切换前由旧 exe 以子进程拉起新 exe 的 --selftest 模式验证其可启动。不通过则不提交切换。
  • 启动标记(boot marker):新 exe 在 main() 头部写入、健康检查通过后清除的标记。连续 2 次未清除触发本地回退。
  • 指标回滚(metric rollback):程序未崩但指标劣化时的回滚。第一版为人工决策 + Jenkins 一键执行。
  • 站点维护开关(site maintenance flag):配置开关第一版唯一开关。站点故障且热修未就绪时,向客户端下发该站点"维护中"状态并展示提示。
  • urgent 标记:清单中的热修级别。urgent 时客户端弹轻提示引导重启生效;否则完全静默等自然重启。
  • 隐藏逃生门(escape hatch):标记文件禁用热修拉取(沿用 ignoreDataStatistics 模式),不在 UI 暴露,供客服排查兜底。

客户端现状关键事实(2026-07 探索结论,均有代码证据)

  • Tier 0 中 Netflix / Amazon / Disney+ / Hulu 的站点适配 100% 硬编码 C++,静态链接进主程序(macOS -lstreameta 进 StreamFab target,Windows Stream + streameta 工程);YouTube 走外部 yt-dlp.exe 子进程,已有在线更新通道(/api/youtube_dl_update/,JSON + MD5)。
  • macOS 无客户端内自动升级:socket 协议取版本 XML → 浏览器打开下载页。Windows 走独立升级 exe(LiveUpdate)。
  • 现有完整性校验仅 MD5(yt-dlp zip、DRM cfg),无非对称验签;streameta 下载器默认 VERIFYPEER=0,多数端点 http://
  • 稳定设备标识 = 物理 MAC(machine_id);遥测走 ELK(app-api-*.dvdfab.cn/api/common_json_post/ 分索引),崩溃走 Crashpad → report.dvdfab.cn
  • 端点配置编译期烘焙进 product.ini(rcc 资源),无在线刷新机制。
  • 正式发版的代码签名在 Jenkins 有专门流程。

相关文档

  • 在线浏览:https://hotfix-review.pages.dev (提交后自动同步)
  • 产品需求:POS:核心平台稳定性与热修通道.md
  • 业界调研:docs/research/hotfix-channel-industry-survey.md
  • 决策记录:docs/adr/