# Legacy Git Mirror 退役

`git-mirror-http`、`git-mirror-write`、mirror cache、sync/flush Job 和相关 Secret 已退出 CI/CD 运行架构。它们不得作为 source cache、GitOps write endpoint、故障 fallback 或第二 authority 保留。

AgentRun managed-repository reconciler 也不得继续挂载 legacy mirror cache。PaC/Gitea lane 的 source、resource bundle、artifact catalog 与 GitOps branch 统一直接读取 Gitea；历史 reconciler Deployment、ConfigMap、ServiceAccount 及其终态 TaskRun 只属于受控退役范围。

## 稳定规则

- source branch、immutable snapshot、GitOps branch、artifact catalog、Argo 和 runtime checkout 统一使用 owning YAML 声明的 Gitea repository。
- CLI `release plan` 与 Pipeline 内 planner 必须使用同一个 `gitops_read_url`。
- GitOps promotion 必须通过 Gitea SecretRef 写回同一仓库，不得恢复匿名 mirror write 或 SSH fallback。
- 历史 `git-mirror status|sync|flush|trigger-current` 只允许返回退役诊断，不得创建 Job、写 ref 或重建 runtime。
- 运行面仍存在 legacy 对象时，先确认活跃 consumer 已无引用，再执行：

```bash
bun scripts/cli.ts hwlab nodes control-plane infra source-authority retire-legacy-runtime --node <NODE> --lane <lane> --dry-run
bun scripts/cli.ts hwlab nodes control-plane infra source-authority retire-legacy-runtime --node <NODE> --lane <lane> --confirm
```

- 受控退役只删除 owning YAML 精确命名的旧 Deployment、Service、ConfigMap、PVC、Secret 与同步/flush Job；不得修改 Pipeline、PipelineRun、Argo、registry 或业务 workload。
- status 对 Gitea authority 的正确终态是 `legacySourceRuntimeEnabled=false` 且 `legacySourceRuntimeAbsent=true`。

## 故障处理

Gitea source 或 GitOps 链故障只能修 `config/platform-infra/gitea.yaml`、`config/platform-infra/pipelines-as-code.yaml`、对应 owning YAML、controller、planner 或 Pipeline。修复后重新执行 `release plan`，范围准确时只发送一次手动 webhook。禁止用 mirror sync、flush、直接 Gitea push、裸建 PipelineRun 或 Argo sync 补齐交付。
