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,61 @@
{
"schema": "guanghu.jd-independent-forgejo-continuity-contract/v1",
"contract_id": "GHOS-JD-INDEPENDENT-FORGEJO-CONTINUITY-001",
"state": "SOURCE_AND_TEST_ONLY",
"trigger": "JD-FD-PRIMARY native residency stops the Linux-hosted Forgejo process and makes the current BS-GZ-006 tunnel return 502.",
"causal_route": {
"current": "BS-GZ-006 -> SSH tunnel -> JD Linux Forgejo",
"shadow": "BS-GZ-006 -> dedicated SSH tunnel -> BS-SG-003 independent Forgejo",
"reason_for_bs_sg": "BS-SG-003 has 7.5 GiB memory and 52 GiB free disk, remains available during JD native residency, and already carries the protected native relay role."
},
"source_binding": {
"node_id": "JD-FD-PRIMARY",
"forgejo_version": "16.0.1",
"binary_sha256": "7a4c568136650c10498a9d3d62c7fd630a0cf09c166293ebd78708248f6398fc",
"repository_count": 7,
"work_path": "/var/lib/guanghu/personas/guanghu/hlcc-v16.0.1/data"
},
"shadow_binding": {
"node_id": "BS-SG-003",
"listen": "127.0.0.1:19224",
"publicly_reachable": false,
"data_root": "/var/lib/guanghu-code-shadow",
"configuration_root": "/etc/guanghu-os/forgejo-shadow"
},
"required_exact_readback": [
"FORGEJO_BINARY_SHA256",
"FORGEJO_HTTP_VERSION",
"SQLITE_INTEGRITY_OK",
"DATABASE_REPOSITORY_COUNT",
"DATABASE_USER_COUNT",
"EXACT_REPOSITORY_PATH_SET",
"EXACT_MAIN_COMMIT_FOR_EVERY_REPOSITORY"
],
"migration_policy": {
"initial_shadow_snapshot_may_be_online": true,
"online_snapshot_is_cutover_authority": false,
"final_cutover_requires_bounded_write_freeze": true,
"final_cutover_requires_second_exact_sync": true,
"source_is_deleted_after_cutover": false,
"rollback_keeps_jd_linux_forgejo_intact": true
},
"acceptance_gates": {
"verifier_source": 100,
"isolated_verifier_test": 100,
"bs_sg_full_forgejo_shadow_deployed": 0,
"bs_sg_exact_source_snapshot_readback": 0,
"bs_gz_to_bs_sg_authenticated_tunnel": 0,
"nginx_code_route_switched": 0,
"public_code_during_jd_native_residency": 0,
"full_forgejo_equivalence": 0,
"production_native_cutover": 0
},
"prohibited_claims": [
"ONLINE_DUMP_IS_FINAL_CUTOVER_SNAPSHOT",
"REPOSITORY_GIT_HEADS_ALONE_ARE_FULL_FORGEJO",
"DATABASE_ONLY_IS_FULL_FORGEJO",
"SHADOW_HTTP_200_IS_PUBLIC_ROUTE_SWITCH",
"BS_GZ_EXISTING_UNRELATED_FORGEJO_IS_JD_CODE_CHANNEL",
"SOURCE_IMPLEMENTATION_IS_DEPLOYMENT"
]
}