26 KiB
PR 合并驱动的全自动交付
- 来源:https://github.com/pikasTech/unidesk/issues/1755
- 范围:长期规则、CI/CD skill 与文档合同。
- 边界:不执行任何人工 CI/CD 触发、补跑或运行面修改。
R1 [completed]
固化 PR 合并驱动的全自动交付与故障修复边界,来源:https://github.com/pikasTech/unidesk/issues/1755,完成任务后将详细报告写入任务报告。
R1.1 [completed]
盘点并收敛会误导人工触发或补跑的长期规则,引用:https://github.com/pikasTech/unidesk/issues/1755,完成任务后将详细报告写入任务报告。
R1.2 [completed]
更新 CI/CD reference 与 skill,明确 PR merge 唯一触发及自动链故障修复边界,引用:https://github.com/pikasTech/unidesk/issues/1755,完成任务后将详细报告写入任务报告。
R1.3 [completed]
补充轻量文档合同检查,阻止人工交付入口重新成为正式路径,完成任务后将详细报告写入任务报告。
R1.4 [completed]
完成静态验证、报告、提交、推送与非草稿 PR,禁止触发或部署 CI/CD,完成任务后将详细报告写入任务报告。
R1.5 [completed]
修复 UniDesk #2462:受控 gh pr merge 必须区分临时 feature branch 与 YAML/仓库配置声明的长期环境 branch,未证明可删除时默认保留并输出 typed reason,显式删除仅用于已确认临时分支;覆盖长期分支保留和临时分支删除的 L0 合同,不修改业务运行面,完成任务后将详细报告写入任务报告。
R2 [in_progress]
清理 migrated PaC status/help 中会诱导人工补跑的 NEXT、REPAIR 与长期指引漂移;来源:UniDesk #1764,保持 GitHub PR merge 为唯一交付触发,完成任务后将详细报告写入任务报告。
R2.1 [in_progress]
盘点 migrated PaC 的 status/help/Next/REPAIR 与文档、skill 漂移,以 UniDesk #1764 和 NC01 source 85abda3b 自动发布证据冻结删除边界,完成任务后将详细报告写入任务报告。
R2.2
修复 CLI renderer 与定向合同测试:migrated consumer 只提示只读 status/history/debug-step,不输出 apply、closeout、trigger、sync、flush、webhook-test 或人工 PipelineRun;legacy 显式入口保持可发现,完成任务后将详细报告写入任务报告。
R2.3
由主代理同步清理长期 reference/skill,合并后只观察新的 GitHub webhook→Gitea mirror/snapshot→PaC→Tekton→GitOps/Argo→runtime 自动事件,并完成 issue/报告收口,完成任务后将详细报告写入任务报告。
R3 [completed]
跟踪 UniDesk #1802 暴露的 AgentRun PaC 成功后 GitOps/Argo revision 持续 stale;本轮只冻结自动链证据与架构边界,不手工补交付,完成任务后将详细报告写入任务报告。
R3.1 [completed]
记录 AgentRun PR #301 自动 Pipeline Succeeded、GitOps result 与 Argo/runtime provenance 未收敛的证据;确认涉及自动 GitOps/provenance 架构后保持 UniDesk #1802 open 并跳过实现,完成任务后将详细报告写入任务报告。
R4 [in_progress]
解决 UniDesk #1802 并对齐 UniDesk #1769:建立 source commit → immutable snapshot → artifact digest → GitOps commit → Argo revision → runtime digest 的单一、不可伪造自动交付 provenance;GitHub PR merge 仍是唯一触发,禁止人工补交付,完成任务后将详细报告写入任务报告。
R4.1 [in_progress]
冻结 #1802 / #1769 的交付合同:定义 admission-owned outer-event provenance、标准 terminal roles/results、父子运行归属、commit/digest 关联和 fail-closed 判定,明确 YAML owner 与 controller 职责,完成任务后将详细报告写入任务报告。
R4.1.1 [completed]
解决 UniDesk #2039:现场确认 PR #1808/#1812 引入的 ValidatingAdmissionPolicy 以错误的原子 queue transition 假设拒绝官方 PaC watcher,导致 HWLAB df925768 与 AgentRun 自动流水线停在 Pending;以新提交语义回退业务阻断型 admission 围栏,保留 provenance、creator、marker、ServiceAccount 和漂移为结构化 blocking=false warning,禁止继续扩展 CEL 围栏、人工 PipelineRun、mirror、trigger、sync、flush 或 runtime patch,并由既有 merge 事件自动恢复及完成原入口验收,完成任务后将详细报告写入任务报告。
R4.2
依赖 R4.1,让 YAML-owned pipeline 输出标准 terminal evidence,由单一 controller 自动 reconcile GitOps;Argo/status 必须针对同一 GitOps repository 和 commit graph 验证 exact/descendant,并把 source、artifact、GitOps、revision、runtime digest 形成可审计链,完成任务后将详细报告写入任务报告。
R4.3
依赖 R4.2,覆盖 provenance 缺失、伪造、stale revision、commit graph unavailable 和 runtime digest 不一致;最终只接受修复 PR merge 的新 webhook/PaC 事件自动收敛,禁止 mirror、PipelineRun、sync、flush、trigger、apply、closeout 或 runtime patch,完成任务后将详细报告写入任务报告。
R4.4
记录并后续解决 UniDesk #1828:聚合 cicd status 对 sentinel/platform-infra 在 source、GitOps、Argo/runtime 已对齐时仍误报 pac-gitops-missing/relation unknown;统一专用 control-plane 与聚合器的 source→GitOps revision relation authority 和判定证据,本轮仅登记,不扩入 #1760 自动 delivery 修复,完成任务后将详细报告写入任务报告。
R4.5 [in_progress]
基于 UniDesk #1802 修复当前 AgentRun NC01 自动交付阻塞:将 GitOps read/write、Argo repoURL 与 delivery provenance 从 legacy git-mirror 收敛到既有 Gitea internal 单一 authority;只做 owning YAML、既有 renderer/定向验证的最小必要修改,禁止人工 mirror、sync、flush、trigger、apply、closeout、PipelineRun 或 runtime patch,也禁止新增合同、租约、安全机制和围栏,完成任务后将详细报告写入任务报告。
R5 [in_progress]
解决 UniDesk #1900:修复 NC01 PaC watcher 因 ServiceAccount token 的 node/pod 关系失败而 Pending,恢复 GitHub PR merge 驱动的唯一自动交付链,禁止人工补触发、第二权威或旁路,完成任务后将详细报告写入任务报告。
R5.1 [completed]
只读定位 UniDesk #1900 的唯一根因,核对 watcher Pod、ServiceAccount token、node/pod 关系、owning YAML 与最近控制面变更,不改运行面,完成任务后将详细报告写入任务报告。
R5.2 [in_progress]
按 UniDesk #1900 实施最小持久化修复和定向验证,不新增第二交付权威、合同、租约、安全机制或围栏,完成任务后将详细报告写入任务报告。
R5.3
合并修复 PR 后只观察新的 GitHub webhook→Gitea mirror→PaC→Tekton→GitOps/Argo 自动事件,验证 watcher Ready、TaskRun 创建及 AgentRun/Monitor runtime 收敛,不人工补齐既有 queued run,完成任务后将详细报告写入任务报告。
R6 [completed]
执行 UniDesk #1981:固定仓库产品功能 schema 路径为 config/feature-config.schema.json,CI/CD 只读校验 schema 语法、值匹配和功能到唯一配置变量的一对一关系;缺失、非法、不匹配或重复仅输出 typed warning 并投影到 OTel/status/history/debug-step,必须继续 artifact、GitOps/Argo 和滚动上线,禁止写回、默认值、变量删除、功能关闭、架构切换及其他补救操作,完成任务后将详细报告写入任务报告。
R6.1 [completed]
原 MDTODO R7 依据 UniDesk #2005 实现 SELFMEDIA CI/CD 单次只读查询:从 owning YAML 解析 selfmedia-nc01,在一次受控 CLI 调用内关联 pikainc/selfmedia GitHub mergedAt、PaC PipelineRun/TaskRun、Argo/runtime health,直接披露 trigger wait、pipeline duration、end-to-end duration 与证据缺口;同步 unidesk-cicd skill 的唯一推荐入口,禁止新增第二状态源或交付 mutation,完成任务后将详细报告写入任务报告。最新 master 已占用顶层 R7,本条仅调整索引层级,不改写任务报告身份与 checkpoint 语义。
R6.2 [completed]
按用户要求将 CI/CD 全局配置一致性、版本、契约和跨 consumer 校验统一为 non-blocking warning:除非用户明确要求阻塞,禁止新增会导致 Pipeline、GitOps、Argo 或 rollout 失败的校验;发现既有阻塞实例时逐例降级为 blocking=false warning,同时保留当前选中对象自身的必要输入与安全校验,完成任务后将详细报告写入任务报告。
R7 [in_progress]
执行 UniDesk #2008:按 PJ2026-01060106 建立 HWLAB 开发/生产双环境发布;v0.3 固定为 NC01 development,release 固定为 production,两个环境在 source、Pipeline、GitOps、Argo、namespace、public origin、PostgreSQL database/role/Secret/migration ledger 和 Kafka consumer group 上隔离,所有值由 owning YAML 控制,完成任务后将详细报告写入任务报告。
R7.1 [in_progress]
迁移 UniDesk #2009:保持 v0.3 开发 branch/namespace/DB consumer,删除其对 hwlab.pikapython.com 的所有权,选择并 YAML 固化 NC01 公网 IP 的空闲 HTTP 端口和同源 API/health/probe,通过新 PR 和自动链完成原入口验证,完成任务后将详细报告写入任务报告。
R7.2 [in_progress]
建立 UniDesk #2010:跟随 release branch 的独立 production PaC/Tekton/GitOps/Argo、namespace、host PostgreSQL database/role/Secret/migration ledger、Kafka consumer group 与 https://hwlab.pikapython.com YAML publicExposure;release 只从完成 P0 Kafka 纠偏并验证的 v0.3 commit 初始化,完成任务后将详细报告写入任务报告。
R8 [completed]
解决 UniDesk #2165:修复 PaC status/history/debug-step 与 AgentRun control-plane 状态命令在远端 timeout、空 payload、解析失败或异常时以空 stdout/不明 exit 结束的问题;保持目标 Kubernetes/Tekton/Argo/runtime 为唯一状态 authority,所有成功、partial、timeout 和 failure 都输出有界 typed 摘要、耗时、first break 与只读下钻,禁止第二状态源、无界 dump、交付 mutation、PK01 修改、合同/租约/围栏和 Vitest,完成任务后将详细报告写入任务报告。
R8.1 [completed]
解决 UniDesk #2447:修复 cicd status --node <NODE> 为每个 consumer 并发启动完整远端 PaC status、重复读取公共对象并压垮 transport/read budget 后误报 pac-read-remote-failure、pac-read-timeout 与 cicd-node-blocked;改为一次目标侧批量只读快照并按 consumer 投影 PipelineRun、Argo、runtime 与 typed read failure,保留单 consumer 深度 status、Kubernetes/Tekton/Argo/runtime 唯一 authority 和 YAML 预算,不新增缓存/第二状态源/交付 mutation,通过 L0 fixture、L1 native node smoke、正常 PR 自动交付和只读回归验收,完成任务后将详细报告写入任务报告。
R8.2 [completed]
继续解决 UniDesk #2165:单 consumer status 在默认 taskrun-status-only 模式未同步读取 plan logs 时,把预期缺失的 source observation 误报为阻断型 pac-source-observation-inconsistent,且 compact JSON 仍以 10,636 字节超过 10 KiB 输出预算;仅将可证明由默认日志延后造成的缺口降级为 pac-artifact-log-evidence-deferred、blocking=false,真实矛盾在显式日志证据存在时继续 fail-closed,并收敛默认 JSON 到预算内,保留 id-specific history 深度证据与现有 live authority,通过 L0 fixture、L1 native status text/JSON、正常 PR 自动交付验收,完成任务后将详细报告写入任务报告。
R8.3 [in_progress]
继续解决 UniDesk #2165 的 single-consumer status 可见性回归:远端观察只输出 started 后结束且缺少 success/partial/timeout/failure 终态摘要,而同 consumer history 已能返回 typed pac-read-timeout;保持目标 Kubernetes/Tekton/Argo/runtime 唯一 authority,不新增状态源或交付 mutation,修复所有退出分支的有界终态输出,并以一次目标侧最小 status smoke 验收,完成任务后将详细报告写入任务报告。
R9 [in_progress]
建立 UniDesk #2181:在 NC01 建立单一共享 HTTPS 边缘,将 HWLAB v0.3、HWLAB release、UniDesk 与 WebTerm 分别迁移至 lab-dev.hwpod.com、lab.hwpod.com、unidesk.hwpod.com、term.hwpod.com;保持 PikaOA 现有站点无中断,全部公开事实由职责明确的 owning YAML 与 configRef 唯一声明,原子生成、校验、reload,共享 Caddy 不形成第二 authority,禁止修改 PK01、禁止 Vitest,最终通过正常 PR 与自动 CI/CD/GitOps 收敛,完成任务后将详细报告写入任务报告。
R9.1 [completed]
实现 NC01 共享 public-edge owning YAML、引用模型及 platform-infra public-edge plan|apply|status,复用现有 PikaOA Caddy 数据目录,原子写入、validate、reload,失败保留旧配置,完成任务后将详细报告写入任务报告。
R9.1.1 [completed]
收敛 #2197 的 shared public edge 现网兼容与 YAML-first 边界,完成任务后将详细报告写入任务报告。
R9.2 [completed]
将 HWLAB v0.3 与 release 生产 lane 的 Kubernetes Service 分别固定为内部 NodePort 32009、32010,由共享边缘公开为 lab-dev.hwpod.com 与 lab.hwpod.com,移除旧 IP、PK01、FRP 和 pikapython.com authority,完成任务后将详细报告写入任务报告。
R9.3
将 UniDesk NC01 frontend 的公开入口迁移为 unidesk.hwpod.com,移除 unidesk.pikapython.com 的 owning 配置与旧边缘归属,完成任务后将详细报告写入任务报告。
R9.3.1 [completed]
修正 #2195 的 UniDesk shared edge DNS 期望声明,完成任务后将详细报告写入任务报告。
R9.4 [completed]
将 WebTerm local-7683 的公开入口迁移为 term.hwpod.com,保持上游 127.0.0.1:7683 与 WebSocket,移除 term.pikapython.com 的 owning 配置,完成任务后将详细报告写入任务报告。
R9.4.1 [completed]
修正 #2196 的 WebTerm shared edge 兼容解析隐藏默认,完成任务后将详细报告写入任务报告。
R9.5 [in_progress]
执行 UniDesk #2200:完成共享边缘七站 YAML 引用、CLI plan/dry-run、GitHub merge 驱动的自动交付及公网原入口回归;保持单一共享 Caddy、UDP 443、VPN subscription 与 PikaOA 两站无回归,禁止 PK01 修改、人工 PipelineRun/Argo/mirror/trigger 和 Vitest,调试 patch 仅按 $unidesk-daddev 有界使用且终态必须由 owning YAML/源码与自动 CI/CD 覆盖,完成任务后将详细报告写入任务报告。
R9.5.1 [in_progress]
重建 UniDesk #2205:从最新 master 以全新 worktree/session 实现 NC01 shared public-edge 的 merge 驱动自动交付,复用同一 renderer/apply 与 owning YAML/source commit;禁止复用旧 docker.sock 工件,禁止 Kubernetes 挂载 Docker socket/daemon、第二 edge/authority、人工交付、PK01和Vitest,合并后只由正常自动链收敛,完成任务后将详细报告写入任务报告。
R9.5.1.1 [in_progress]
重做 UniDesk #2205 的单一 shared public-edge 自动交付链:仅允许 immutable PaC checkout → YAML SecretRef → 受控 trans → NC01 host-local 既有 public-edge renderer/apply;禁止 Argo PostSync、hostPath、Caddy Admin API 直写、Docker socket/daemon、第二 authority/fallback、PK01、Vitest和人工终态交付;必须使用最新 master 的全新 worktree 与全新 Artificer session,合并后只由自动 CI/CD 收敛,完成任务后将详细报告写入任务报告。
R9.6 [completed]
修复 UniDesk #2203:PaC release manifest renderer 必须跳过 YAML stream 中的空文档与 comment-only/null 文档,并在 mutation 前拒绝缺少 apiVersion/kind 的实际对象,消除 hwlab-nc01-production bootstrap 的 apiVersion not set, kind not set 故障;禁止 validate=false、fallback、PK01、Vitest和人工交付,合并后从 bootstrap/status 原入口复测,完成任务后将详细报告写入任务报告。
R9.7 [completed]
修复 UniDesk #2207:HWLAB v0.3 与 production 必须按 PaC 官方单 URL 唯一 Repository CR 约束共享 NC01 hwlab-ci 的 Repository/webhook authority,由 branch/event annotations 与 consumer lane 区分 PipelineRun、GitOps和运行面;禁止重复 Repository CR、改 URL、关闭 admission、fallback、PK01、Vitest和人工交付,合并后从 production bootstrap/status 与真实 release merge 原入口验收,完成任务后将详细报告写入任务报告。
R9.8 [in_progress]
修复 HWLAB #2548:基于 release 最新提交生成并提交 hwlab-nc01-production 的 YAML-owned PaC source artifact(production .tekton PipelineRun 与引用 Pipeline),确保 branch/event 只匹配 release、独立 release-gitops/ServiceAccount/runtime namespace/32010;禁止手写第二真相、复用 v0.3 PipelineRun、人工 PipelineRun/mirror/Argo、fallback、PK01和Vitest,合并新的 release PR 后仅观察自动链直到 production 运行面 ready,完成任务后将详细报告写入任务报告。
R9.8.1 [in_progress]
修复 UniDesk #2212:补齐 NC01/production control-plane owning YAML target,使 hwlab-nc01-production 复用既有受控 renderer 生成 release 专用 PaC artifact,并把缺失 target 从哈希化 generic error 改为稳定 typed diagnostic;保持 v0.3 无漂移,禁止第二 authority、fallback、人工 PipelineRun/mirror/Argo、数据库迁移、PK01 和 Vitest,完成任务后将详细报告写入任务报告。
R9.8.2 [completed]
修复 HWLAB #2548 的命名 runtime lane renderer:将 scripts/gitops-render.mjs 从仅接受 vNN 泛化为由 deploy owning YAML 显式声明的稳定 lane,非版本 lane 的 source branch、GitOps branch、catalog、runtime path、namespace、端口和 endpoint 必须来自 YAML 且缺失时 fail closed;禁止硬编码 production、release、32010、第二 renderer、fallback、数据库投影或 Vitest,保持 v03 生成无漂移并向 release 分支提交独立 PR,完成任务后将详细报告写入任务报告。
R10 [completed]
执行 UniDesk #2387:修复 HWLAB v03 Gitea branch/snapshot 已提交但 expected PaC PipelineRun 未创建的自动链断点,保持 GitHub PR merge 唯一触发和既有 Gitea/PaC/Tekton/GitOps/Argo authority;status/history 不得以旧 run fallback 冒充当前 commit 成功,禁止人工 PipelineRun、mirror、Argo、rollout、runtime patch、PK01、第二权威、合同、租约或围栏,完成任务后将详细报告写入任务报告。
R10.1 [completed]
纠正 UniDesk #2387 / PR #2390 遗留的 expectedPipelineRunName 伪名称比较:状态决策只消费已按 current source 精确筛选的真实 PipelineRun identity,覆盖 PaC generateName 随机后缀和未完成窗口,删除死 helper,不扩大交付或 authority 边界,完成任务后将详细报告写入任务报告。
R11 [completed]
执行 UniDesk #2449:建立 consumer deploy 声明、PaC selected services、lane owning YAML serviceIds 与 rendered GitOps workload/service 的服务选择闭环检查;先用 L0 fixture 复现缺项并输出 typed warning/partial evidence,再做 L1 native smoke 与真实 consumer 只读 render 验证,保持既有 owning YAML 单一 authority,禁止修改共享 CI/CD 控制器、人工 PipelineRun/mirror/trigger/sync/flush、第二权威和阻断型围栏,完成任务后将详细报告写入任务报告。
R12 [completed]
执行 UniDesk #2486:为 PikaOA development/production 三个并行 BuildKit TaskRun 接入 YAML 驱动、按 api/worker/web 隔离的 registry cache,由 renderer 生成 import/export cache 参数并通过正常 UniDesk PR、PikaOA source-artifact PR 和自动链预热/回归验证;保持 GitHub merge 唯一触发,不新增缓存服务、第二 authority、人工 PipelineRun/mirror/Argo、Docker socket、PK01 或生产滚动,完成任务后将详细报告写入任务报告。
R12.1 [completed]
执行 PikaOA #99:在 README 固化 YAML-first PaC 生成物与唯一 PR merge 触发入口,并以该正常文档 PR 验证首次预热后的 registry cache 命中耗时,完成任务后将详细报告写入任务报告。
R13 [completed]
执行 UniDesk #2492:在 $unidesk-cicd 与唯一长期 reference 固化 PaC registry cache 冷缓存预热、后续正常 PR cache-hit 测量和可选 exact-commit verify-runtime 的最短验收路径,减少重复 status/timing 试探且不修改公共 CI/CD 运行面,完成任务后将详细报告写入任务报告。