{ "schema": "guanghu.enterprise-gitea-retirement-forgejo-decoupling-receipt/v1", "outcome": "PASS_WITH_RECOVERY_DISCLOSURE", "completed_at": "2026-09-13T18:32:38+08:00", "node": "GH-CVM-MAIN-PROD-01", "node_dmi_uuid": "10ace744-13e1-472e-8dba-6bb823a073bf", "decision_source_sha256": "7c4d44bddea5050327f456a9694b557d49aae16fe1bb9ac1d6e994556799719e", "retired": { "service": "Gitea 1.21.11", "containers_removed": ["lighthouse-gitea", "lighthouse-gitea-db", "lighthouse-gitea-redis"], "images_removed": ["gitea/gitea:1.21.11", "postgres:15-alpine", "redis:7-alpine"], "data_path_removed": "/opt/guanghu/lighthouse-cn", "public_ports_removed": [3000, 2222], "active_nginx_references_remaining": 0 }, "migration_proof": { "legacy_repositories": 2, "legacy_collaboration_objects": {"issues":0,"pull_requests":0,"releases":0,"comments":0,"attachments":0}, "hololake_world_main": "d1823008e1401d1875d863109b69f8ed145d4532", "lighthouse_main": "fec90a5bb6a5dc380232c2a207fd0a9b4d6f377f", "both_legacy_commits_present_in_forgejo": true, "legacy_and_current_git_fsck": "PASS" }, "recovery_disclosure": { "trigger": "retirement exposed that the current Forgejo application still depended on the retired container database service name", "impact": "Forgejo health returned HTTP 424 during the maintenance window", "action": "stopped Forgejo, restored the verified 2026-08-08 Forgejo database dump into a dedicated PostgreSQL cluster, separated the database role and route, then adopted every repository present on current storage", "baseline_restored_users": 7, "baseline_restored_repositories": 2, "re_adopted_repositories": 12, "recovered_owner_user": "huaer", "recovered_owner_organization": "guanghu-team", "post_recovery_users": 9, "post_recovery_organizations": 1, "post_recovery_repositories": 14, "unadopted_repositories": 0, "temporary_admin_token_removed": true, "remaining_human_action": "huaer owner account uses a forced-change recovery password and needs an administrator reset before interactive login" }, "current_forgejo": { "container": "guanghu-forgejo-blue", "image": "guanghu/forgejo:16.0.1-offline", "restart_policy": "unless-stopped", "database_service": "postgresql@14-forgejo.service", "database_bind": "172.19.0.1:55432", "database_role": "forgejo", "database_data_bytes": 62003859, "public_url": "https://guanghu.chat/code/", "public_root_http": 200, "public_health_http": 200, "public_asset_http": 200, "all_repository_fsck": "PASS", "filesystem_database_repository_sets_equal": true, "systemd_failed_units": 0 }, "rolling_backup": { "primary_path": "/var/lib/guanghu-enterprise-code-channel/backups/CURRENT/forgejo-current.dump", "backup_path": "/home/guanghu-ops/enterprise-archive/GH-CVM-MAIN-PROD-01/2026-09-13/gitea-retirement/forgejo-current.dump", "backup_node": "QY-LH-MAIN-PROD-01", "size_bytes": 481025, "sha256": "4151d0bdfd844624840bdbefdcfb73e60ba503e594463c5562e9ff9e3dc9e44c", "timer": "guanghu-forgejo-backup.timer", "retention": "single rolling current-state dump" }, "minimum_evidence_retention": { "full_historical_payloads_purged_bytes": 1236163123, "backup_directory_after": "492K", "summary": "/home/guanghu-ops/enterprise-archive/GH-CVM-MAIN-PROD-01/2026-09-13/RETENTION-SUMMARY-20260913.json", "full_gitea_archive_created": false }, "current_config_hashes": { "forgejo_app_ini_sha256": "5f930ce11c827d06293d67692b088219ea0988e01cd8ed7e56d05e4021ddc9d2", "nginx_guanghu_chat_sha256": "90d8b27d319a4ec6d5bb95f70a26f68b837413fcb2426a2b62caf6524c9eb1cd", "nginx_default_forgejo_sha256": "b264f111b2a3c206ceb8702644f042f6d90d5c8d67076f6bd1aa0190ba0820e1", "rolling_backup_script_sha256": "de687096b4c4361bfb5584b71090ee86b9672534f5c56a330011d8afaa4782d0" }, "secrets_in_receipt": false }