docs(security): add ref truth classification [skip ci]
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
| 項目 | 內容 |
|
||||
|------|------|
|
||||
| 日期 | 2026-05-12 |
|
||||
| 日期 | 2026-05-13 |
|
||||
| 狀態 | 初版,供 AwoooP Session 只讀消費 |
|
||||
| 範圍 | Kali / Code Review / Codex / Gitea / GitHub 資安供應鏈事件 |
|
||||
| 低摩擦 policy | `docs/security/SECURITY-LOW-FRICTION-ROLLOUT-POLICY.md` |
|
||||
@@ -36,6 +36,7 @@ AwoooP 初期不得直接啟動掃描、不得呼叫 Codex patch runner、不得
|
||||
| `source_control_approval_board_v1` | 逐 repo owner / visibility / canonical / refs 決策 board | Approval queue、PR reviewer handoff | approval-only | 只顯示決策隊列,不執行 board item |
|
||||
| `source_control_reconcile_plan_v1` | refs-blocked repo draft reconcile plan | Approval candidate、migration reviewer handoff | approval-only | 只顯示草案,不 push refs、不切 primary |
|
||||
| `source_control_ref_detail_diff_v1` | refs-blocked repo branch/tag 明細 diff | Migration reviewer evidence | mirror-only | 只顯示 diff,不 fetch、不 push、不刪 refs |
|
||||
| `source_control_ref_truth_classification_v1` | refs diff 真相來源與 deprecated 候選分類 | Repo owner review queue、migration reviewer handoff | approval-only | 只顯示分類與人工判定隊列,不執行 sync/delete |
|
||||
| `local_repo_canonical_probe_v1` | 本機 working tree lineage 比對 | Canonical decision evidence | mirror-only | 不自動合併、不自動建 repo、不刪除 |
|
||||
| `git_remote_refs_probe_v1` | 指定 repo remote refs read-only probe | Source readiness evidence | mirror-only | 不 fetch、不 push、不自動 mirror |
|
||||
| `approval_required_event_v1` | 上述事件的高風險 gate | Approval queue、Audit | approval-only | `blocked_until_approved=true` |
|
||||
@@ -87,6 +88,7 @@ AwoooP 初期不得直接啟動掃描、不得呼叫 Codex patch runner、不得
|
||||
| `source_control_approval_board_v1.pending_approval_count>0` | `approve_required` | 顯示逐 repo 決策隊列,不執行 repo 建立、visibility 修改、refs sync |
|
||||
| `source_control_reconcile_plan_v1.status=draft_blocked` | `approve_required` | 只顯示 refs reconcile 草案與 gate,不執行 sync |
|
||||
| `source_control_ref_detail_diff_v1.status=draft_blocked` | `observe` | 顯示 branch/tag 明細 diff,支援人工 review |
|
||||
| `source_control_ref_truth_classification_v1.status=draft_blocked` | `approve_required` | 顯示 main/dev 真相來源、drift deprecated 候選、release / UAT tag review lane,不執行分類結果 |
|
||||
| `local_repo_canonical_probe_v1.status=unrelated` | `approve_required` | 禁止自動合併,需人工 canonical 判定 |
|
||||
| `git_remote_refs_probe_v1.status=ok` | `observe` | 可作 source evidence,但仍需 GitHub target 與 approval |
|
||||
| `security_rollout_policy_v1.enforcement_level=mirror_only` | `observe` | 只顯示 policy,不阻擋既有流程 |
|
||||
@@ -130,6 +132,7 @@ AwoooP 初期不得直接啟動掃描、不得呼叫 Codex patch runner、不得
|
||||
| Source Control approval board | `docs/security/source-control-approval-board.snapshot.json` / `docs/security/SOURCE-CONTROL-APPROVAL-BOARD.md` |
|
||||
| Source Control draft reconcile plan | `docs/security/source-control-reconcile-plan.snapshot.json` / `docs/security/SOURCE-CONTROL-RECONCILE-PLAN.md` |
|
||||
| Source Control branch/tag detail diff | `docs/security/source-control-ref-detail-diff.snapshot.json` / `docs/security/SOURCE-CONTROL-REF-DETAIL-DIFF.md` |
|
||||
| Source Control ref truth classification | `docs/security/source-control-ref-truth-classification.snapshot.json` / `docs/security/SOURCE-CONTROL-REF-TRUTH-CLASSIFICATION.md` |
|
||||
| 本機 repo canonical lineage snapshot | `docs/security/local-repo-canonical-ewoooc-momo.snapshot.json` / `docs/security/LOCAL-REPO-CANONICAL-EWOOOC-MOMO-SNAPSHOT.md` |
|
||||
| Internal 110 refs snapshot | `docs/security/git-remote-refs-bitan-tsenyang.snapshot.json` / `docs/security/GIT-REMOTE-REFS-BITAN-TSENYANG-SNAPSHOT.md` |
|
||||
| wooo-infra-config refs snapshot | `docs/security/git-remote-refs-wooo-infra-config.snapshot.json` / `docs/security/GIT-REMOTE-REFS-WOOO-INFRA-CONFIG-SNAPSHOT.md` |
|
||||
|
||||
@@ -145,7 +145,7 @@ Schema:`docs/schemas/security_supply_chain_contract_manifest_v1.schema.json`
|
||||
"schema_version": "security_supply_chain_contract_manifest_v1",
|
||||
"status": "draft",
|
||||
"default_enforcement_level": "mirror_only",
|
||||
"contract_count": 12
|
||||
"contract_count": 16
|
||||
}
|
||||
```
|
||||
|
||||
@@ -541,6 +541,8 @@ Console 初期不提供高風險 action button。
|
||||
|
||||
2026-05-13 branch/tag detail diff 追加:已新增 `scripts/security/source-control-ref-detail-diff.py`、`docs/schemas/source_control_ref_detail_diff_v1.schema.json`,並產出 `docs/security/source-control-ref-detail-diff.snapshot.json` 與 `docs/security/SOURCE-CONTROL-REF-DETAIL-DIFF.md`。最新 read-only diff 忽略本 PR 分支後,`awoooi` 仍有 Gitea-only branches 115、Gitea-only tags 2、main SHA 不一致;`clawbot-v5` main SHA 不一致且 GitHub 缺 Gitea tag;`wooo-aiops` GitHub 有 1 條額外 branch 與 19 個 GitHub-only tags。AwoooP 可 mirror 此 evidence,但不得 fetch、push、delete refs 或切 primary。
|
||||
|
||||
2026-05-13 ref truth classification 追加:已新增 `scripts/security/source-control-ref-truth-classification.py`、`docs/schemas/source_control_ref_truth_classification_v1.schema.json`,並產出 `docs/security/source-control-ref-truth-classification.snapshot.json` 與 `docs/security/SOURCE-CONTROL-REF-TRUTH-CLASSIFICATION.md`。目前 141 個 refs review items 已拆成 4 個 `manual_truth_required`、114 個 `manual_review_deprecated_candidate`、3 個 `manual_review_release_tag`、20 個 `manual_review_github_only`。AwoooP 可建立 repo owner review queue,但不得把分類結果直接執行成 refs sync、delete、force push 或 GitHub primary switch。
|
||||
|
||||
2026-05-12 public search / canonical 追加:Gitea public search 在未提供 token 時可見 `wooo/awoooi`、`wooo/ewoooc`。已新增 `docs/security/SOURCE-CONTROL-CANONICAL-DECISION-TABLE.md`,其中 `wooo/ewoooc`、`root/momo-pro-system`、`momo-pro-system`、`momo_pro_system` 仍需人工判定 canonical 關係,不得自動合併。
|
||||
|
||||
2026-05-12 GitHub target probe 追加:已新增 `scripts/security/github-target-probe.py`、`docs/schemas/github_target_probe_v1.schema.json` 與 `docs/security/github-target-probe.snapshot.json`。8 個候選中 5 個可讀,`owenhytsai/ewoooc`、`owenhytsai/bitan-pharmacy`、`owenhytsai/tsenyang-website` 為 `not_found_or_private`。
|
||||
@@ -603,6 +605,8 @@ Console 初期不提供高風險 action button。
|
||||
- [security_rollout_policy_v1 snapshot](/Users/ogt/awoooi/docs/security/security-rollout-policy.snapshot.json)
|
||||
- [Security Supply Chain contract manifest](/Users/ogt/awoooi/docs/security/SECURITY-SUPPLY-CHAIN-CONTRACT-MANIFEST.md)
|
||||
- [security_supply_chain_contract_manifest_v1 snapshot](/Users/ogt/awoooi/docs/security/security-supply-chain-contract-manifest.snapshot.json)
|
||||
- [Source Control ref truth classification](/Users/ogt/awoooi/docs/security/SOURCE-CONTROL-REF-TRUTH-CLASSIFICATION.md)
|
||||
- [source_control_ref_truth_classification_v1 snapshot](/Users/ogt/awoooi/docs/security/source-control-ref-truth-classification.snapshot.json)
|
||||
- [本機 repo canonical lineage snapshot](/Users/ogt/awoooi/docs/security/LOCAL-REPO-CANONICAL-EWOOOC-MOMO-SNAPSHOT.md)
|
||||
- [local_repo_canonical_probe_v1 snapshot](/Users/ogt/awoooi/docs/security/local-repo-canonical-ewoooc-momo.snapshot.json)
|
||||
- [本機 repo canonical lineage script](/Users/ogt/awoooi/scripts/security/local-repo-canonical-probe.py)
|
||||
@@ -628,6 +632,7 @@ Console 初期不提供高風險 action button。
|
||||
- [github_target_repo_approval_package_v1 schema](/Users/ogt/awoooi/docs/schemas/github_target_repo_approval_package_v1.schema.json)
|
||||
- [security_rollout_policy_v1 schema](/Users/ogt/awoooi/docs/schemas/security_rollout_policy_v1.schema.json)
|
||||
- [security_supply_chain_contract_manifest_v1 schema](/Users/ogt/awoooi/docs/schemas/security_supply_chain_contract_manifest_v1.schema.json)
|
||||
- [source_control_ref_truth_classification_v1 schema](/Users/ogt/awoooi/docs/schemas/source_control_ref_truth_classification_v1.schema.json)
|
||||
- [local_repo_canonical_probe_v1 schema](/Users/ogt/awoooi/docs/schemas/local_repo_canonical_probe_v1.schema.json)
|
||||
- [git_remote_refs_probe_v1 schema](/Users/ogt/awoooi/docs/schemas/git_remote_refs_probe_v1.schema.json)
|
||||
- [approval_required_event_v1 schema](/Users/ogt/awoooi/docs/schemas/approval_required_event_v1.schema.json)
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
| GitHub target repo-by-repo approval package | `docs/security/GITHUB-TARGET-REPO-APPROVAL-PACKAGE.md` / `docs/security/github-target-repo-approval-package.snapshot.json` |
|
||||
| Source Control draft reconcile plan | `docs/security/SOURCE-CONTROL-RECONCILE-PLAN.md` / `docs/security/source-control-reconcile-plan.snapshot.json` |
|
||||
| Source Control branch/tag detail diff | `docs/security/SOURCE-CONTROL-REF-DETAIL-DIFF.md` / `docs/security/source-control-ref-detail-diff.snapshot.json` |
|
||||
| Source Control ref truth classification | `docs/security/SOURCE-CONTROL-REF-TRUTH-CLASSIFICATION.md` / `docs/security/source-control-ref-truth-classification.snapshot.json` |
|
||||
| Source Control 遷移矩陣 | `docs/security/SOURCE-CONTROL-MIGRATION-MATRIX.md` |
|
||||
| Canonical repo 判定表 | `docs/security/SOURCE-CONTROL-CANONICAL-DECISION-TABLE.md` |
|
||||
|
||||
@@ -47,6 +48,7 @@
|
||||
- `wooo-infra-config` 的 GitHub remote 與本機 `main` 對齊;110 internal remote 目前 read-only probe 不可讀,需判斷是否為舊 remote、mirror 或權限問題。
|
||||
- GitHub target 決策表已建立,8 個候選中 7 個需人工批准;其中 `ewoooc`、`bitan-pharmacy`、`tsenyang-website` 在 target visibility / owner 決策前不得自動建立或同步。
|
||||
- GitHub target repo-by-repo approval package 已建立,7 個 approval-required targets 拆成 refs reconcile、target 建立 / 授權、internal remote 用途確認三條路徑;此 package 採低摩擦原則,只 gate 高風險執行,不阻擋 read-only evidence。
|
||||
- Source Control ref truth classification 已建立,141 個 refs review items 已拆成 4 個真相來源判定、114 個 drift deprecated 候選、3 個 release tag review、20 個 GitHub-only refs review;這是人工判定隊列,不是同步批准。
|
||||
- 本機可見 Git working tree 輔助盤點已找到 13 個 repo,其中去重後 Gitea repo 4 個、GitHub repo 5 個、110 內部 repo 4 個;此結果可用來補遷移矩陣,但不能取代 Gitea server 全量清單。
|
||||
|
||||
因此後續必須先完成「repo/branch/tag/workflow/webhook/permission/secrets 名稱」全量 inventory,再逐步 mirror 與驗證。
|
||||
@@ -76,6 +78,7 @@
|
||||
| GitHub target repo-by-repo approval snapshot | `docs/security/github-target-repo-approval-package.snapshot.json`,逐 repo 拆分 approval path,不授權執行 |
|
||||
| Source Control draft reconcile plan | `docs/security/source-control-reconcile-plan.snapshot.json`,只產生 `draft_blocked` 草案,不授權 refs sync |
|
||||
| Source Control branch/tag detail diff | `docs/security/source-control-ref-detail-diff.snapshot.json`,保存 3 個 refs-blocked mapped repos 的 branch/tag 明細,不授權 fetch/push |
|
||||
| Source Control ref truth classification | `docs/security/source-control-ref-truth-classification.snapshot.json`,將 ref diff 轉成單 ref 人工判定隊列,不授權 sync/delete |
|
||||
|
||||
## 1.1 Gitea repo list snapshot
|
||||
|
||||
@@ -146,7 +149,7 @@ GitHub target repo-by-repo approval package 已建立於 `docs/security/GITHUB-T
|
||||
| 欄位 | Gitea | GitHub | 狀態 |
|
||||
|------|-------|--------|------|
|
||||
| Repo | `wooo/awoooi` | `owenhytsai/awoooi` | 已有對應 |
|
||||
| `main` | `631fc220c3f50a2b977b9e07cbd4f99c0fccf8d8` | `202071f7a8724d5e8c29de441c3f380575a0ea94` | 不一致,阻塞主控切換 |
|
||||
| `main` | `5294f0712f1a3370d0155c0d88e5d10c6ec0250e` | `202071f7a8724d5e8c29de441c3f380575a0ea94` | 不一致,阻塞主控切換 |
|
||||
| `release/v1.0` | `d15fb7d9f4bac86873d5c16b9c17c527b8f38bef` | `d15fb7d9f4bac86873d5c16b9c17c527b8f38bef` | 一致 |
|
||||
| `dev` | `25889d4b8edcb83b6ec707c5eef3c21ae5d432b0` | 無 | GitHub 缺分支 |
|
||||
| `drift/adopt-*` | 多條 | 無 | GitHub 缺分支 |
|
||||
@@ -201,7 +204,7 @@ GitHub target repo-by-repo approval package 已建立於 `docs/security/GITHUB-T
|
||||
"branch_count_github": 2,
|
||||
"tag_count_gitea": 2,
|
||||
"tag_count_github": 0,
|
||||
"latest_sha_gitea": "631fc220c3f50a2b977b9e07cbd4f99c0fccf8d8",
|
||||
"latest_sha_gitea": "5294f0712f1a3370d0155c0d88e5d10c6ec0250e",
|
||||
"latest_sha_github": "202071f7a8724d5e8c29de441c3f380575a0ea94",
|
||||
"workflows_mapped": false,
|
||||
"webhooks_mapped": false,
|
||||
@@ -217,7 +220,7 @@ GitHub target repo-by-repo approval package 已建立於 `docs/security/GITHUB-T
|
||||
|
||||
1. 依 `docs/security/GITEA-READONLY-INVENTORY-APPROVAL-PACKAGE.md` 取得 Gitea 只讀 repo inventory 批准,不使用寫入 token。
|
||||
2. 依 `github_target_decision_v1` 對需要人工批准的 target 做 owner / visibility / canonical 決策。
|
||||
3. 依 `docs/security/SOURCE-CONTROL-RECONCILE-PLAN.md` 產生每個 repo 的 heads/tags SHA diff;仍不 push refs。
|
||||
3. 依 `docs/security/SOURCE-CONTROL-REF-TRUTH-CLASSIFICATION.md` 由 repo owner 對 main/dev、release tags、GitHub-only refs 與 drift deprecated 候選逐項判定;仍不 push refs。
|
||||
4. 標記「可 mirror」、「需人工判斷」、「需封存」、「不可搬」。
|
||||
5. 產出 GitHub primary ADR,定義切換 gate 與 rollback。
|
||||
6. 將 `source_control_migration_event_v1`、`gitea_repo_inventory_v1`、`local_git_remote_inventory_v1` mirror 到 AwoooP,初期只作為 evidence。
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
| 項目 | 內容 |
|
||||
|------|------|
|
||||
| 日期 | 2026-05-12 |
|
||||
| 日期 | 2026-05-13 |
|
||||
| 狀態 | 草案 |
|
||||
| JSON snapshot | `docs/security/security-supply-chain-contract-manifest.snapshot.json` |
|
||||
| Schema | `docs/schemas/security_supply_chain_contract_manifest_v1.schema.json` |
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
## 0. 核心結論
|
||||
|
||||
目前 Security Supply Chain 已有 15 個主要契約可交給 AwoooP 消費。Manifest 的用途是把分散的 schema、snapshot、人讀文件、允許動作與禁止動作收成一份入口,避免不同 Session 各自解讀。
|
||||
目前 Security Supply Chain 已有 16 個主要契約可交給 AwoooP 消費。Manifest 的用途是把分散的 schema、snapshot、人讀文件、允許動作與禁止動作收成一份入口,避免不同 Session 各自解讀。
|
||||
|
||||
初期預設仍是 `mirror_only`。Manifest 不授權 runtime enforcement、不授權 GitHub/Gitea 主控切換、不授權 repo 建立或 refs sync。
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
| `source_control_approval_board_v1` | approval-only | 逐 repo owner / visibility / canonical / refs 決策 board | `source-control-approval-board.snapshot.json` |
|
||||
| `source_control_reconcile_plan_v1` | approval-only | refs-blocked repo 的 draft reconcile plan | `source-control-reconcile-plan.snapshot.json` |
|
||||
| `source_control_ref_detail_diff_v1` | mirror-only | refs-blocked repo 的 branch/tag 明細 diff | `source-control-ref-detail-diff.snapshot.json` |
|
||||
| `source_control_ref_truth_classification_v1` | approval-only | refs diff 的真相來源候選與 deprecated 候選分類 | `source-control-ref-truth-classification.snapshot.json` |
|
||||
| `local_repo_canonical_probe_v1` | mirror-only | momo/ewoooc lineage evidence | `local-repo-canonical-ewoooc-momo.snapshot.json` |
|
||||
| `git_remote_refs_probe_v1` | mirror-only | 110 / GitHub remote refs readiness | `bitan-tsenyang`、`wooo-infra-config` |
|
||||
| `approval_required_event_v1` | approval-only | 高風險 / 敏感邊界 approval | `gitea-readonly-inventory-approval.snapshot.json` |
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
| 項目 | 內容 |
|
||||
|------|------|
|
||||
| 日期 | 2026-05-12 |
|
||||
| 日期 | 2026-05-13 |
|
||||
| 狀態 | S0/S1 read-only evidence 建置中 |
|
||||
| 本階段完成 | Security Supply Chain contract manifest + Source Control Approval Board + Draft Reconcile Plan + Ref Detail Diff |
|
||||
| 本階段完成 | Security Supply Chain contract manifest + Source Control Approval Board + Draft Reconcile Plan + Ref Detail Diff + Ref Truth Classification |
|
||||
| 原則 | 低摩擦分階段;文件、schema、read-only evidence 優先;不做 runtime enforcement、不切 primary |
|
||||
|
||||
## 0. 本階段完成後整體進度
|
||||
@@ -18,8 +18,9 @@
|
||||
| S1.2 GitHub target 逐 repo approval | 完成草案 | 7 個 approval-required targets 已拆成逐 repo pending package,並彙整成 8-item approval board | 低摩擦逐項批准 |
|
||||
| S1.2a refs reconcile plan | 完成草案 | `awoooi`、`clawbot-v5`、`wooo-aiops` 已產生 draft plan;狀態仍為 `draft_blocked` | authenticated inventory + branch/tag diff + single-repo approval |
|
||||
| S1.2b branch/tag detail diff | 完成草案 | 3 個 refs-blocked mapped repos 已完成 branch/tag 明細 diff;已忽略本 PR 分支避免 evidence 自我污染 | 人工判定真相來源與 deprecated refs |
|
||||
| S1.2c refs 真相來源分類 | 完成草案 | 141 個 ref review items 已分類:4 個真相來源、114 個 drift deprecated 候選、3 個 release tags、20 個 GitHub-only refs | repo owner 單 ref / 單 repo 判定 |
|
||||
| S1.3 低摩擦 rollout policy | 完成草案 | observe-first / mirror-only matrix 已建立 | AwoooP read-only policy 消費 |
|
||||
| S1.4 Contract manifest | 完成草案 | 15 個主要 contract 已集中成 manifest | AwoooP mirror-only contract registry |
|
||||
| S1.4 Contract manifest | 完成草案 | 16 個主要 contract 已集中成 manifest | AwoooP mirror-only contract registry |
|
||||
| S2 AwoooP mirror-only | 可交接 | `AWOOOP-MIRROR-ONLY-CONSUMPTION-CHECKLIST.md` 已列出可消費事件與禁止動作 | AwoooP 主線建立只讀入口 |
|
||||
| S3 approval gate | 未開始 | 已定義哪些動作要進 approval | 不得繞過人工批准 |
|
||||
| S4 migration execution | 未開始 | GitHub primary 長期方向已確認,但 refs / tags / workflow / secret 名稱尚未全量驗證 | SHA/tag/workflow parity 與 rollback ADR |
|
||||
@@ -48,6 +49,8 @@
|
||||
| Source Control draft reconcile plan JSON | `docs/security/source-control-reconcile-plan.snapshot.json` |
|
||||
| Source Control branch/tag detail diff | `docs/security/SOURCE-CONTROL-REF-DETAIL-DIFF.md` |
|
||||
| Source Control branch/tag detail diff JSON | `docs/security/source-control-ref-detail-diff.snapshot.json` |
|
||||
| Source Control ref truth classification | `docs/security/SOURCE-CONTROL-REF-TRUTH-CLASSIFICATION.md` |
|
||||
| Source Control ref truth classification JSON | `docs/security/source-control-ref-truth-classification.snapshot.json` |
|
||||
| 低摩擦 rollout policy | `docs/security/SECURITY-LOW-FRICTION-ROLLOUT-POLICY.md` |
|
||||
| 低摩擦 rollout policy JSON | `docs/security/security-rollout-policy.snapshot.json` |
|
||||
| Security Supply Chain contract manifest | `docs/security/SECURITY-SUPPLY-CHAIN-CONTRACT-MANIFEST.md` |
|
||||
@@ -74,7 +77,7 @@
|
||||
|
||||
1. 等待 Gitea read-only inventory approval 被批准後,再用只讀 token 或管理匯出補 private/internal server-side 全量 repo list。
|
||||
2. 依 `SOURCE-CONTROL-APPROVAL-BOARD.md` 對 7 個 `approval_required=true` 的 GitHub target 做 owner / visibility / canonical 決策。
|
||||
3. 依 `SOURCE-CONTROL-REF-DETAIL-DIFF.md` 對 `awoooi`、`clawbot-v5`、`wooo-aiops` 標記真相來源候選與 deprecated refs;仍不得 push refs。
|
||||
3. 依 `SOURCE-CONTROL-REF-TRUTH-CLASSIFICATION.md` 對 `awoooi`、`clawbot-v5`、`wooo-aiops` 做單 repo / 單 ref owner 判定;仍不得 push refs。
|
||||
4. 對 `ewoooc` / `momo-pro-system` 完成 server-side canonical 判定。
|
||||
5. AwoooP 主線只建立 mirror-only / read-only policy 入口,不新增執行按鈕。
|
||||
6. AwoooP 主線消費 `security_rollout_policy_v1` 時,只做 read-only policy,不做 runtime blocking。
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
| 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. 核心結論
|
||||
@@ -119,6 +120,8 @@ GitHub primary 可以作為長期方向,但目前還不能切換。
|
||||
|
||||
Repo-by-repo approval package 已建立,7 個 approval-required targets 皆為 `pending`。Approval scope 採低摩擦原則:只處理高風險執行邊界,不阻擋 read-only inventory、evidence mirror 與草案規劃。
|
||||
|
||||
Ref truth classification 已建立,將 `awoooi`、`clawbot-v5`、`wooo-aiops` 的 141 個 refs 差異拆成 review lane。`main` / `dev` 屬真相來源判定,`drift/adopt-*` 先列 deprecated candidate,release / UAT tags 先列保留判定;不得把分類結果直接執行成同步、刪除或 primary switch。
|
||||
|
||||
## 3. 必要驗收 gate
|
||||
|
||||
任何 repo 進入「已可切 GitHub primary」之前,都必須通過:
|
||||
@@ -136,17 +139,19 @@ Repo-by-repo approval package 已建立,7 個 approval-required targets 皆為
|
||||
|
||||
| Repo | Status | Gitea branches | GitHub branches | Gitea tags | GitHub tags | Gitea main | GitHub main | Evidence |
|
||||
|------|--------|----------------|-----------------|------------|-------------|------------|-------------|----------|
|
||||
| `wooo/awoooi` -> `owenhytsai/awoooi` | `blocked` | `117` | `2` | `2` | `0` | `631fc220c3f50a2b977b9e07cbd4f99c0fccf8d8` | `202071f7a8724d5e8c29de441c3f380575a0ea94` | `docs/security/SOURCE-CONTROL-REF-DETAIL-DIFF.md` |
|
||||
| `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.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. 釐清 `wooo/awoooi`、`wooo/clawbot-v5`、`wooo/wooo-aiops` 的雙端分歧來源。
|
||||
3. 依 ref truth classification 釐清 `wooo/awoooi`、`wooo/clawbot-v5`、`wooo/wooo-aiops` 的雙端分歧來源。
|
||||
4. 釐清 `wooo/ewoooc`、`root/momo-pro-system`、`momo-pro-system`、`momo_pro_system` 的 canonical 關係。
|
||||
5. 釐清 `bitan-pharmacy`、`tsenyang-website` 是否仍 active,並決定 GitHub owner / visibility。
|
||||
6. 產出 GitHub primary ADR 前,不做主控切換。
|
||||
|
||||
@@ -13,11 +13,13 @@
|
||||
|
||||
這份文件只是 refs reconcile 草案,不是同步腳本,也不授權任何 GitHub primary 切換。AwoooP 可以 mirror 成 approval candidate,但不得執行 board item 或呼叫任何 push / sync 工具。
|
||||
|
||||
若已存在 `source_control_ref_truth_classification_v1`,請把它視為本 plan 的人工 review lane 補充:分類結果只協助 repo owner 判定,不授權同步或刪除。
|
||||
|
||||
## 1. Repo 差異摘要
|
||||
|
||||
| Repo | Risk | Gitea branches | GitHub branches | Gitea tags | GitHub tags | Gitea main | GitHub main |
|
||||
|------|------|----------------|-----------------|------------|-------------|------------|-------------|
|
||||
| `wooo/awoooi -> owenhytsai/awoooi` | `HIGH` | `117` | `2` | `2` | `0` | `631fc220` | `202071f7` |
|
||||
| `wooo/awoooi -> owenhytsai/awoooi` | `HIGH` | `117` | `2` | `2` | `0` | `5294f071` | `202071f7` |
|
||||
| `wooo/clawbot-v5 -> owenhytsai/clawbot-v5` | `MEDIUM` | `1` | `1` | `1` | `0` | `22074fbe` | `7a769de4` |
|
||||
| `wooo/wooo-aiops -> owenhytsai/wooo-aiops` | `MEDIUM` | `2` | `3` | `0` | `19` | `507384a2` | `7c7aa109` |
|
||||
|
||||
@@ -135,3 +137,4 @@
|
||||
2. 只顯示 `draft_blocked` 與 blocking reason。
|
||||
3. 可產生 approval candidate,但不得自動批准。
|
||||
4. 不得新增 execution action button。
|
||||
5. 真相來源分類請讀 `docs/security/SOURCE-CONTROL-REF-TRUTH-CLASSIFICATION.md`,並維持單 repo / 單 ref 人工 gate。
|
||||
|
||||
135
docs/security/SOURCE-CONTROL-REF-TRUTH-CLASSIFICATION.md
Normal file
135
docs/security/SOURCE-CONTROL-REF-TRUTH-CLASSIFICATION.md
Normal file
@@ -0,0 +1,135 @@
|
||||
# Source Control Ref Truth Classification
|
||||
|
||||
| 項目 | 內容 |
|
||||
|------|------|
|
||||
| 日期 | 2026-05-13 |
|
||||
| 狀態 | `draft_blocked` |
|
||||
| 預設模式 | `classification_only` |
|
||||
| 來源 snapshot | `docs/security/source-control-ref-detail-diff.snapshot.json` |
|
||||
| repo count | `3` |
|
||||
| total items | `141` |
|
||||
|
||||
## 0. 核心結論
|
||||
|
||||
本檔把 branch/tag diff 轉成「人工審核分類」:哪些 ref 需要真相來源判定、哪些可能是 deprecated 候選、哪些 release / UAT tags 需要保留判定。它不是同步計畫,也不授權 fetch、push、delete refs 或 GitHub primary 切換。
|
||||
|
||||
## 1. 摘要
|
||||
|
||||
| 指標 | 數量 |
|
||||
|------|------|
|
||||
| 需要人工指定真相來源 | `4` |
|
||||
| 可能 deprecated / archive 候選 | `114` |
|
||||
| release tag 待審核 | `3` |
|
||||
| GitHub-only ref 待審核 | `20` |
|
||||
|
||||
## 2. Repo 分類
|
||||
|
||||
### wooo/awoooi -> owenhytsai/awoooi
|
||||
|
||||
- Risk:`HIGH`
|
||||
- AwoooP consumption:`approval_candidate`
|
||||
- Item count:`118`
|
||||
|
||||
| Ref | Type | Lane | Classification | Gitea | GitHub | 下一步 |
|
||||
|-----|------|------|----------------|-------|--------|--------|
|
||||
| `main` | `branch` | `main_truth_required` | `manual_truth_required` | `5294f071` | `202071f7` | 先確認目前 production deploy 真相來源、deploy marker、rollback 點,再決定單 repo reconcile。 |
|
||||
| `dev` | `branch` | `active_branch_truth_required` | `manual_truth_required` | `25889d4b` | `無` | 確認 dev 是否仍為有效工作流;若有效,再決定單 branch 同步策略。 |
|
||||
| `drift/adopt-00e93ec6-20260507202835` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-018dfeb6-20260510201057` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-036399ae-20260512101936` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-036399ae-20260512113011` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-03ab23eb-20260511190611` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-04532fd3-20260509104706` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-094107c8-20260511171658` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-0b67aa5a-20260508132246` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-0d55cf70-20260512152046` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `abdab853` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-0d7e2731-20260422111000` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `75b7d338` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-11d02e8c-20260505000302` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `40badc42` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-18d2841e-20260506203612` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `b2f0db07` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-1941d569-20260509001722` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-1b510a59-20260508071355` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-1d45b689-20260512101956` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-1ffaa1de-20260509191538` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-22d3c494-20260504010134` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `035fe20e` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-256b7b16-20260507082410` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `c52ebfc0` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-2582b60d-20260509160733` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-2b26cfe4-20260509104618` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-3254209e-20260505150522` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d08d1e49` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-3336b941-20260511111108` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-34bf86fd-20260421010616` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `3323a905` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-35e8371b-20260508222338` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-378290ab-20260510201203` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-381202c7-20260507171310` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `afb5f955` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-38e32fb9-20260506171242` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `76aaaf48` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-39383806-20260502230445` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `68e18238` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-3da139d9-20260503161425` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `e45b055e` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-44860c3d-20260510171817` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-46e77bf6-20260506235709` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `012cd27b` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-49920526-20260511111126` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-4b40fc0d-20260429080302` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `20009cdd` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-4d8f3bef-20260508212335` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-4e188293-20260504100431` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `035fe20e` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-4e5775dc-20260510233800` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-50d442fb-20260510201215` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| `drift/adopt-52fb18e5-20260512000119` | `branch` | `archive_or_deprecate_candidate` | `manual_review_deprecated_candidate` | `d356cd32` | `無` | 由 repo owner 確認是否仍有部署、PR、回滾或稽核用途;確認前保留。 |
|
||||
| 另有 `78` 筆 | | | 完整清單見 JSON snapshot | | | |
|
||||
|
||||
### wooo/clawbot-v5 -> owenhytsai/clawbot-v5
|
||||
|
||||
- Risk:`MEDIUM`
|
||||
- AwoooP consumption:`approval_candidate`
|
||||
- Item count:`2`
|
||||
|
||||
| Ref | Type | Lane | Classification | Gitea | GitHub | 下一步 |
|
||||
|-----|------|------|----------------|-------|--------|--------|
|
||||
| `main` | `branch` | `main_truth_required` | `manual_truth_required` | `22074fbe` | `7a769de4` | 先確認目前 production deploy 真相來源、deploy marker、rollback 點,再決定單 repo reconcile。 |
|
||||
| `v5.5-sprint1` | `tag` | `release_tag_missing_on_github` | `manual_review_release_tag` | `2b126871` | `無` | 確認 tag 對應 release / artifact / deploy marker,再以單 repo approval 決定是否同步。 |
|
||||
|
||||
### wooo/wooo-aiops -> owenhytsai/wooo-aiops
|
||||
|
||||
- Risk:`MEDIUM`
|
||||
- AwoooP consumption:`approval_candidate`
|
||||
- Item count:`21`
|
||||
|
||||
| Ref | Type | Lane | Classification | Gitea | GitHub | 下一步 |
|
||||
|-----|------|------|----------------|-------|--------|--------|
|
||||
| `main` | `branch` | `main_truth_required` | `manual_truth_required` | `507384a2` | `7c7aa109` | 先確認目前 production deploy 真相來源、deploy marker、rollback 點,再決定單 repo reconcile。 |
|
||||
| `refactor/phase-9.3` | `branch` | `github_only_manual_review` | `manual_review_github_only` | `無` | `7261f94b` | 確認該 branch 是否為有效 refactor/feature 線,並判定是否回補到 Gitea 或保留 GitHub-only。 |
|
||||
| `uat-20260316-1ec245f` | `tag` | `github_only_uat_tag` | `manual_review_github_only` | `無` | `1ec245fd` | 確認 UAT tag 是否仍需保留為稽核 evidence;若已過期,再列入封存決策。 |
|
||||
| `uat-20260316-2d54a43` | `tag` | `github_only_uat_tag` | `manual_review_github_only` | `無` | `2d54a43b` | 確認 UAT tag 是否仍需保留為稽核 evidence;若已過期,再列入封存決策。 |
|
||||
| `uat-20260316-3e8df86` | `tag` | `github_only_uat_tag` | `manual_review_github_only` | `無` | `3e8df861` | 確認 UAT tag 是否仍需保留為稽核 evidence;若已過期,再列入封存決策。 |
|
||||
| `uat-20260316-95002f5` | `tag` | `github_only_uat_tag` | `manual_review_github_only` | `無` | `95002f50` | 確認 UAT tag 是否仍需保留為稽核 evidence;若已過期,再列入封存決策。 |
|
||||
| `uat-20260316-9ebea63` | `tag` | `github_only_uat_tag` | `manual_review_github_only` | `無` | `9ebea633` | 確認 UAT tag 是否仍需保留為稽核 evidence;若已過期,再列入封存決策。 |
|
||||
| `uat-20260316-a851c80` | `tag` | `github_only_uat_tag` | `manual_review_github_only` | `無` | `a851c809` | 確認 UAT tag 是否仍需保留為稽核 evidence;若已過期,再列入封存決策。 |
|
||||
| `uat-20260316-e2ee674` | `tag` | `github_only_uat_tag` | `manual_review_github_only` | `無` | `e2ee6746` | 確認 UAT tag 是否仍需保留為稽核 evidence;若已過期,再列入封存決策。 |
|
||||
| `uat-20260316-fa48be2` | `tag` | `github_only_uat_tag` | `manual_review_github_only` | `無` | `fa48be21` | 確認 UAT tag 是否仍需保留為稽核 evidence;若已過期,再列入封存決策。 |
|
||||
| `uat-20260317-f768051` | `tag` | `github_only_uat_tag` | `manual_review_github_only` | `無` | `f7680510` | 確認 UAT tag 是否仍需保留為稽核 evidence;若已過期,再列入封存決策。 |
|
||||
| `uat-20260318-20dde91` | `tag` | `github_only_uat_tag` | `manual_review_github_only` | `無` | `20dde91a` | 確認 UAT tag 是否仍需保留為稽核 evidence;若已過期,再列入封存決策。 |
|
||||
| `uat-20260318-4025dde` | `tag` | `github_only_uat_tag` | `manual_review_github_only` | `無` | `4025dde5` | 確認 UAT tag 是否仍需保留為稽核 evidence;若已過期,再列入封存決策。 |
|
||||
| `uat-20260318-5bfa151` | `tag` | `github_only_uat_tag` | `manual_review_github_only` | `無` | `5bfa1514` | 確認 UAT tag 是否仍需保留為稽核 evidence;若已過期,再列入封存決策。 |
|
||||
| `uat-20260318-663b590` | `tag` | `github_only_uat_tag` | `manual_review_github_only` | `無` | `663b590d` | 確認 UAT tag 是否仍需保留為稽核 evidence;若已過期,再列入封存決策。 |
|
||||
| `uat-20260318-78a3757` | `tag` | `github_only_uat_tag` | `manual_review_github_only` | `無` | `78a3757c` | 確認 UAT tag 是否仍需保留為稽核 evidence;若已過期,再列入封存決策。 |
|
||||
| `uat-20260318-7c6f666` | `tag` | `github_only_uat_tag` | `manual_review_github_only` | `無` | `7c6f6665` | 確認 UAT tag 是否仍需保留為稽核 evidence;若已過期,再列入封存決策。 |
|
||||
| `uat-20260318-c4d5669` | `tag` | `github_only_uat_tag` | `manual_review_github_only` | `無` | `c4d56690` | 確認 UAT tag 是否仍需保留為稽核 evidence;若已過期,再列入封存決策。 |
|
||||
| `uat-20260318-cf42fd4` | `tag` | `github_only_uat_tag` | `manual_review_github_only` | `無` | `cf42fd4e` | 確認 UAT tag 是否仍需保留為稽核 evidence;若已過期,再列入封存決策。 |
|
||||
| `uat-20260319-7c7aa10` | `tag` | `github_only_uat_tag` | `manual_review_github_only` | `無` | `7c7aa109` | 確認 UAT tag 是否仍需保留為稽核 evidence;若已過期,再列入封存決策。 |
|
||||
| `uat-20260319-ce5c72b` | `tag` | `github_only_uat_tag` | `manual_review_github_only` | `無` | `ce5c72b5` | 確認 UAT tag 是否仍需保留為稽核 evidence;若已過期,再列入封存決策。 |
|
||||
|
||||
## 3. AwoooP 消費方式
|
||||
|
||||
1. 只 mirror `source_control_ref_truth_classification_v1`。
|
||||
2. 可顯示 review lane 與 owner decision queue。
|
||||
3. 可產生單 repo / 單 ref approval candidate,但不得自動批准。
|
||||
4. 不得新增 refs sync、delete、force-push、primary switch action。
|
||||
|
||||
## 4. 仍然禁止
|
||||
|
||||
- fetch
|
||||
- push refs
|
||||
- force push
|
||||
- delete refs
|
||||
- create GitHub repo
|
||||
- change repo visibility
|
||||
- switch GitHub primary
|
||||
- disable Gitea
|
||||
- move secret values
|
||||
@@ -2,7 +2,7 @@
|
||||
"schema_version": "security_supply_chain_contract_manifest_v1",
|
||||
"status": "draft",
|
||||
"default_enforcement_level": "mirror_only",
|
||||
"contract_count": 15,
|
||||
"contract_count": 16,
|
||||
"contracts": [
|
||||
{
|
||||
"contract": "security_rollout_policy_v1",
|
||||
@@ -177,6 +177,26 @@
|
||||
],
|
||||
"notes": "只保存 branch/tag 明細 diff;忽略本 PR 分支避免 evidence 自我污染。"
|
||||
},
|
||||
{
|
||||
"contract": "source_control_ref_truth_classification_v1",
|
||||
"schema_path": "docs/schemas/source_control_ref_truth_classification_v1.schema.json",
|
||||
"snapshot_paths": ["docs/security/source-control-ref-truth-classification.snapshot.json"],
|
||||
"human_docs": ["docs/security/SOURCE-CONTROL-REF-TRUTH-CLASSIFICATION.md"],
|
||||
"consumer": "AwoooP migration reviewer / repo owner approval queue",
|
||||
"consumption_mode": "approval_only",
|
||||
"allowed_actions": [
|
||||
"mirror_ref_truth_classification",
|
||||
"display_truth_source_candidates",
|
||||
"request_single_ref_human_review"
|
||||
],
|
||||
"forbidden_actions": [
|
||||
"execute_classification",
|
||||
"push_refs",
|
||||
"delete_refs",
|
||||
"switch_github_primary"
|
||||
],
|
||||
"notes": "把 refs diff 分成 main/dev 真相來源、drift deprecated 候選、release tag 與 GitHub-only review lane;仍不授權 sync。"
|
||||
},
|
||||
{
|
||||
"contract": "local_repo_canonical_probe_v1",
|
||||
"schema_path": "docs/schemas/local_repo_canonical_probe_v1.schema.json",
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
"github_branch_count": 2,
|
||||
"gitea_tag_count": 2,
|
||||
"github_tag_count": 0,
|
||||
"gitea_main_sha": "631fc22090ff6b6a26582890b2de0498d118895f",
|
||||
"gitea_main_sha": "5294f0712f1a3370d0155c0d88e5d10c6ec0250e",
|
||||
"github_main_sha": "202071f7a8724d5e8c29de441c3f380575a0ea94",
|
||||
"blocking_reason": "branches 尚未完全對齊;tags 尚未完全對齊"
|
||||
},
|
||||
|
||||
4144
docs/security/source-control-ref-truth-classification.snapshot.json
Normal file
4144
docs/security/source-control-ref-truth-classification.snapshot.json
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user