feat(guanghu-os): stage independent Forgejo continuity

This commit is contained in:
冰朔 2026-08-15 20:54:53 +08:00
commit e4750c57a7
10 changed files with 467 additions and 3 deletions

View file

@ -0,0 +1,41 @@
---
type: ADR
id: "0181"
title: "Independent full Forgejo continuity before JD native cutover"
status: accepted
date: 2026-08-15
depends_on:
- "0180"
---
# 京东原生切换前建立独立完整 Forgejo 连续性
## 为什么上一阶段仍没有完成
ADR-0180 解决了原生存活状态和固定只读锚点的认证投影,但当前公共 `/code/` 仍经
BS-GZ-006 的 SSH 隧道进入 JD Linux。物理原生驻留已经证明这条隧道会消失并返回 502。
只读代码摘要不能冒充 Forgejo 的仓库对象、账号、议题、发布、权限和 Git 协议。
## 现场纠正
BS-GZ-006 已有一套从五月运行的 Forgejo但只含另一组 2 个仓库;它不是京东代码频道的
7 个仓库。另一个同名 systemd 单元长期每五秒启动第二进程并抢同一 LevelDB 锁,累计约
249950 次失败。该重复守卫已被单独禁用,正在运行的旧实例、数据和公网均被保留。
## 决定
在 BS-SG-003 建立京东完整 Forgejo 的独立影子副本。选择 BS-SG 而不是 BS-GZ是因为
BS-SG 在京东原生驻留时仍在线并有足够内存和磁盘BS-GZ 继续只承担公网前门和认证
隧道。
影子验收必须同时匹配Forgejo 二进制哈希、HTTP 版本、SQLite 完整性、数据库仓库数、
用户数、精确仓库路径集合,以及每个仓库的 main 提交。任一不符即为 0。
初次在线快照只用于影子验证,不得成为切换权威。真正切 `/code/` 前必须开启有界写冻结、
执行第二次精确同步、再次全量回读,并保留京东 Linux 原数据作为回滚。nginx、京东启动和
生产原生切换均不由影子 HTTP 200 自动触发。
## 当前边界
验证器源码与隔离测试为 100。BS-SG 完整影子、广州到新加坡认证隧道、nginx 代码路由、
原生驻留期间公共代码频道、完整 Forgejo 等价和生产原生切换仍为 0。