Files
awoooi/docs/security/SOURCE-CONTROL-MIGRATION-MATRIX.md

12 KiB
Raw Blame History

Source Control 遷移矩陣

項目 內容
日期 2026-05-12
狀態 第一版,依本機可見 remote inventory 建立
上游 snapshot docs/security/LOCAL-GIT-REMOTE-INVENTORY-SNAPSHOT.mddocs/security/GITEA-REPO-INVENTORY-SNAPSHOT.mddocs/security/GITEA-PUBLIC-REPO-SEARCH-SNAPSHOT.md
Gitea server-side inventory runbook docs/security/GITEA-SERVER-SIDE-INVENTORY-RUNBOOK.md
Gitea read-only inventory approval docs/security/GITEA-READONLY-INVENTORY-APPROVAL-PACKAGE.md
GitHub target probe docs/security/GITHUB-TARGET-PROBE-SNAPSHOT.md
GitHub target 決策 docs/security/GITHUB-TARGET-VISIBILITY-DECISION-TABLE.md
GitHub target repo approval docs/security/GITHUB-TARGET-REPO-APPROVAL-PACKAGE.md
Source Control draft reconcile plan docs/security/SOURCE-CONTROL-RECONCILE-PLAN.md
Source Control branch/tag detail diff docs/security/SOURCE-CONTROL-REF-DETAIL-DIFF.md
Source Control ref truth classification docs/security/SOURCE-CONTROL-REF-TRUTH-CLASSIFICATION.md
原則 只做盤點與分類,不做同步、不刪除、不切 primary

0. 核心結論

GitHub primary 可以作為長期方向,但目前還不能切換。

原因不是只有 awoooi 的 Gitea/GitHub main SHA 不一致;本機可見 source-control 拓撲還顯示:

  • 有 Gitea-only 專案,例如 wooo/ewoooc
  • 有 110 internal-only remote例如 bitan-pharmacytsenyang-website
  • 有 GitLab 類 110 remote例如 root/momo-pro-system
  • 有 GitHub + 110 internal 雙 remote例如 wooo-infra-config
  • 有 local-only Git working tree尚未判定是否需要納入 GitHub。

因此遷移工作不能只處理 Gitea wooo/awoooi,必須先建立完整 source-control target matrix。

2026-05-12 追加確認Gitea users/wooo/repos 未提供 token 時可見 wooo/awoooiwooo/ewooocgitea_repo_inventory_v1.status=partial。這補強 server-side public evidence但仍不能代表 private/internal 全量。

1. 優先級矩陣

優先級 類型 Repo / working tree 目前狀態 下一步
P0 Mapped but blocked wooo/awoooi -> owenhytsai/awoooi Gitea/GitHub main SHA、branches、tags 未對齊 確認部署真相來源,產生 full refs diff禁止 primary switch
P0 Gitea-only / canonical blocked wooo/ewoooc 本機兩份 momo-pro-system working tree 指向 Gitea但 lineage probe 顯示 no_shared_historyowenhytsai/ewoooc 未授權 probe 看不到 決定 canonical repo 與 GitHub target 前,不得同步
P0 Internal 110-only / source aligned bitan-pharmacy 110 remote main 與本機 main 對齊1 head / 0 tagsowenhytsai/bitan-pharmacy 未授權 probe 看不到 確認是否 active建立或指定 GitHub target
P0 Internal 110-only / source aligned tsenyang-website 110 remote main 與本機 main 對齊1 head / 0 tagsowenhytsai/tsenyang-website 未授權 probe 看不到 確認是否仍 active建立或指定 GitHub target
P0 GitLab 110-only / canonical blocked root/momo-pro-system 指向 192.168.0.110:8929 GitLab 類 remote與兩份 Gitea working tree 近期 sample 無共同 commit wooo/ewoooc 做 server-side 判定,不得直接合併或刪除
P1 Mapped but blocked wooo/clawbot-v5 -> owenhytsai/clawbot-v5 Gitea/GitHub main SHA 不一致GitHub 缺 Gitea tag 確認哪一端是真相來源,再同步 refs
P1 Mapped but blocked wooo/wooo-aiops -> owenhytsai/wooo-aiops Gitea/GitHub main SHA 不一致GitHub tags 比 Gitea 多GitHub 多 1 條 branch 釐清雙端分歧來源與部署控制面
P1 GitHub aligned / internal 110 unreadable wooo-infra-config GitHub main 與本機 main 對齊110 internal remote 因 SSH 權限不足或不可讀mirror 方向未確認 確認 110 remote 用途與權限;若為舊 remote降級或移除
P2 GitHub-only nexu-io/open-design GitHub-only可能非 AWOOOI 主線 標記 owner 與 scope決定是否納入資安網
P2 Local-only aider-watchstockPlatform 本機 Git working tree 無 remote 判定是否為草稿、封存或需建立 GitHub repo
P2 Local-only / no clear remote momo_pro_system 另有 GitLab 類 remote但名稱與 momo-pro-system 重疊 需人工釐清 canonical repo

2. 去重後 target group

Gitea candidates

Gitea repo GitHub candidate 目前狀態
wooo/awoooi owenhytsai/awoooi 已 mapped但 refs blocked
wooo/clawbot-v5 owenhytsai/clawbot-v5 已 mapped但 refs blocked
wooo/ewoooc 待定 Gitea-onlyP0
wooo/wooo-aiops owenhytsai/wooo-aiops 已 mapped但 refs blocked

Gitea server-side public inventory summary

Source Status Visibility Repo count Evidence
users/wooo/repos partial public_only 2 docs/security/GITEA-REPO-INVENTORY-SNAPSHOT.md
orgs/wooo/repos blocked public_only 0 docs/security/GITEA-ORG-REPO-INVENTORY-BLOCKED-SNAPSHOT.md

完整 private/internal list 仍需只讀 token 或管理匯出 JSON且必須先通過 docs/security/gitea-readonly-inventory-approval.snapshot.json

110 internal candidates

Internal repo GitHub candidate 目前狀態
bitan-pharmacy 待定 110 SSH 類 remote
root/momo-pro-system 待定 110 GitLab 類 remote
tsenyang-website 待定 110 SSH 類 remote
wooo/wooo-infra-config owenhytsai/wooo-infra-config GitHub aligned110 internal remote unreadable需判斷用途

GitHub-only candidates

GitHub repo 判定
nexu-io/open-design 可能是外部設計 repo需 owner/scope 判定
owenhytsai/wooo-infra-config 已在 GitHub但需處理 110 internal remote

Canonical lineage probe summary

群組 Status 結論 Evidence
ewoooc-momo-pro-system unrelated 三個本機 working tree 近期 sample 內無共同 commit不能自動視為複本或同 repo 分支 docs/security/LOCAL-REPO-CANONICAL-EWOOOC-MOMO-SNAPSHOT.md

Internal 110 refs probe summary

Repo Status Heads Tags Local HEAD Remote main Evidence
bitan-pharmacy aligned_current_branch 1 0 7423a08 7423a08 docs/security/GIT-REMOTE-REFS-BITAN-TSENYANG-SNAPSHOT.md
tsenyang-website aligned_current_branch 1 0 b103112 b103112 docs/security/GIT-REMOTE-REFS-BITAN-TSENYANG-SNAPSHOT.md
wooo-infra-config GitHub aligned_current_branch 1 0 866b5aa 866b5aa docs/security/GIT-REMOTE-REFS-WOOO-INFRA-CONFIG-SNAPSHOT.md
wooo-infra-config 110 internal unreachable 0 0 866b5aa docs/security/GIT-REMOTE-REFS-WOOO-INFRA-CONFIG-SNAPSHOT.md

GitHub target probe summary

類型 數量 說明
候選 GitHub repo 8 以本機 remote 與候選 target 建立
可 read-only probe 5 awoooiclawbot-v5wooo-aiopswooo-infra-confignexu-io/open-design
not found or private 3 ewooocbitan-pharmacytsenyang-website

GitHub target decision summary

狀態 數量 說明
target candidates 8 以 read-only probe 與本機 remote inventory 彙整
approval required 7 nexu-io/open-design scope review 外,其餘皆需人工 gate
create / grant access after approval 3 ewooocbitan-pharmacytsenyang-website
refs reconcile blocked 3 awoooiclawbot-v5wooo-aiops
internal remote purpose pending 1 wooo-infra-config

此決策表仍是 draft。它只把 target visibility / repo creation 變成 approval evidence不授權任何自動 repo 建立、visibility 修改、refs sync 或 GitHub primary 切換。

Repo-by-repo approval package 已建立7 個 approval-required targets 皆為 pending。Approval scope 採低摩擦原則:只處理高風險執行邊界,不阻擋 read-only inventory、evidence mirror 與草案規劃。

Ref truth classification 已建立,將 awoooiclawbot-v5wooo-aiops 的 141 個 refs 差異拆成 review lane。main / dev 屬真相來源判定,drift/adopt-* 先列 deprecated candidaterelease / UAT tags 先列保留判定S4.11 已補 owner response 收件包5 個 templates、received / accepted response 皆為 0。不得把分類結果或 response packet 直接執行成同步、刪除、force push 或 primary switch。

3. 必要驗收 gate

任何 repo 進入「已可切 GitHub primary」之前都必須通過

  1. Server-side repo inventory 已完成,不能只靠本機 working tree。
  2. Branch count 與 branch SHA diff 已完成。
  3. Tag count 與 tag SHA diff 已完成。
  4. Release / artifact / deploy marker inventory 已完成。
  5. Workflow / webhook / runner / secret 名稱 inventory 已完成。
  6. GitHub target repo、owner、branch protection、CODEOWNERS 已確認。
  7. Secrets 只盤名稱,不搬 value。
  8. AwoooP 只收到 evidence不直接觸發 sync、merge、deploy 或 primary switch。

4. 已產生 refs diff 的 mapped repos

Repo Status Gitea branches GitHub branches Gitea tags GitHub tags Gitea main GitHub main Evidence
wooo/awoooi -> owenhytsai/awoooi blocked 117 2 2 0 5294f0712f1a3370d0155c0d88e5d10c6ec0250e 202071f7a8724d5e8c29de441c3f380575a0ea94 docs/security/SOURCE-CONTROL-REF-DETAIL-DIFF.md
wooo/clawbot-v5 -> owenhytsai/clawbot-v5 blocked 1 1 1 0 22074fbe4d6ec6c11c86f76139eea55756d1d160 7a769de46450087f9d6a8ef0d2ac23ed15565d2c docs/security/SOURCE-CONTROL-CLAWBOT-V5-SNAPSHOT.md
wooo/wooo-aiops -> owenhytsai/wooo-aiops blocked 2 3 0 19 507384a2e1943f4183942bf17d7b52e223067853 7c7aa109d93da6d75d687d6ee5131151afee37e8 docs/security/SOURCE-CONTROL-WOOO-AIOPS-SNAPSHOT.md

這三個 mapped repos 都不能直接視為 GitHub primary ready。

Ref truth classification 補充:完整 review lane 見 docs/security/SOURCE-CONTROL-REF-TRUTH-CLASSIFICATION.mdS4.11 owner response 收件包見 docs/security/SOURCE-CONTROL-REF-TRUTH-OWNER-RESPONSE.md。目前分類結果是 4 個 manual_truth_required、114 個 manual_review_deprecated_candidate、3 個 manual_review_release_tag、20 個 manual_review_github_only

5. 下一波建議

  1. 先批准 Gitea read-only inventory package再用只讀 token 或管理匯出補齊 Gitea server repo list。
  2. 依 GitHub target repo-by-repo approval package 處理 7 個 approval-required target。
  3. 依 S4.11 ref truth owner response 收件包與 classification 釐清 wooo/awoooiwooo/clawbot-v5wooo/wooo-aiops 的雙端分歧來源;仍不得 push/delete refs。
  4. 釐清 wooo/ewooocroot/momo-pro-systemmomo-pro-systemmomo_pro_system 的 canonical 關係。
  5. 釐清 bitan-pharmacytsenyang-website 是否仍 active並決定 GitHub owner / visibility。
  6. 產出 GitHub primary ADR 前,不做主控切換。