6.4 KiB
6.4 KiB
R4.1.1 任务报告
状态
- MDTODO:
R4.1.1 - GitHub issue:
pikasTech/unidesk#2039 - 状态:
in_progress - 原因:源码修复与定向验证已完成,尚未合并 PR,也未执行合并后的 NC01 原入口运行面验收。
问题事实
- PR #1808 引入同名
ValidatingAdmissionPolicy与 binding:- 使用
failurePolicy: Fail; - 使用
validationActions: [Deny]; - 阻断不满足 provenance CEL 的 PipelineRun 创建或更新。
- 使用
- PR #1812 继续收紧 watcher 的 queue transition:
- 假定同一次 UPDATE 完成
spec.status: PipelineRunPending -> absent; - 同时完成
state: queued -> started。
- 假定同一次 UPDATE 完成
- NC01 官方
pipelines-as-code-watcher的真实更新不满足该原子假定:- live
unidesk-pac-delivery-provenance-v2拒绝 watcher; - HWLAB
df925768与 AgentRun 自动队列停在 Pending。
- live
本次语义回退
- owning YAML 将同名 v2 policy 改为 Kubernetes 原生 warning-only:
failurePolicy: Ignore;validationActions: [Warn, Audit]。
- 保留现有观察项的计算和披露:
- CEL、marker、creator 与 ServiceAccount;
- queue transition、spec/config SHA、版本与 resource epoch;
- 默认 RBAC。
- admission/provenance 观察项不再作为以下入口的阻断条件:
- 业务 admission 与 bootstrap;
- status、history 与 debug;
- 外层 PaC delivery eligibility。
- admission 漂移输出结构化
blocking: falsewarning;真实 consumer bootstrap 缺失不降级:- runner ServiceAccount、RoleBinding 或 Argo repository credential 未就绪时,status 保持
ok: false; - 顶层 status 继续要求
bootstrap_ready=true,避免 false green。
- runner ServiceAccount、RoleBinding 或 Argo repository credential 未就绪时,status 保持
- PaC bootstrap 的
pac-admission阶段在 live identity 或 generation 尚未精确收敛时显示state: warning,整体结果仍可成功。 - 外层 GitHub/Gitea PaC push event 继续作为:
- 唯一流水线触发;
- 唯一 delivery authority。
- admission exact identity 仅决定
admissionProvenanceVerified与 warning,不再让已观察到的 outer event 失去 eligibility。
明确保留
- PR #1808 的 source artifact、三阶段 terminal、GitOps/status/history/debug 可观测性与无关后续改动。
- YAML-owned policy/binding 名称
unidesk-pac-delivery-provenance-v2,以便受控 bootstrap 通过 server-side apply 原位收敛现有 live v2。 - provenance、creator、marker、ServiceAccount、spec/config SHA、版本、epoch、RBAC 与 drift 的只读计算和结构化披露。
- GitHub PR merge 继续作为唯一正式交付触发。
- 未新增以下入口或机制:
- PipelineRun、mirror、trigger、sync、flush、Argo sync 或 runtime patch;
- 数据库迁移、合同、锁、租约、第二 authority 或 fallback。
定向验证
sh -n scripts/src/platform-infra-pipelines-as-code-remote.shbun test scripts/src/platform-infra-pac-provenance.test.ts scripts/src/platform-infra-pipelines-as-code-bootstrap.test.ts- 结果:
23 pass, 0 fail, 239 expect()。
- 结果:
node调用runPacStatusFixtureChecks():- 结果:
ok=true, checks=34。
- 结果:
bun scripts/cli.ts platform-infra pipelines-as-code plan --target NC01- 结果:YAML source-of-truth、single-path、Gitea source 与 runtime-zero-docker 策略均为
true。
- 结果:YAML source-of-truth、single-path、Gitea source 与 runtime-zero-docker 策略均为
git diff --check- 结果:通过。
合并后受控收敛
- 主代理在 PR 合并后先执行只读计划:
bun scripts/cli.ts platform-infra pipelines-as-code bootstrap --target NC01 --consumer agentrun-nc01-v02 --dry-run
- 确认计划只体现 owning YAML 的同名 v2 warning-only 收敛后,再执行:
bun scripts/cli.ts platform-infra pipelines-as-code bootstrap --target NC01 --consumer agentrun-nc01-v02 --confirm
- 不需要 prune:policy 与 binding 名称保持不变,bootstrap 使用 server-side apply 原位把 live
Fail/Deny更新为Ignore与Warn/Audit。 - bootstrap 不是流水线补跑入口;禁止随后人工执行 PipelineRun、mirror、trigger、sync、flush、Argo sync 或 runtime patch。
- 运行面验收由主代理观察既有 merge 事件自动恢复,并通过原
status、history与受影响 HWLAB/AgentRun 原入口完成。
当前阻塞
- 无源码或定向验证阻塞。
- 运行面验收仍等待 PR 合并及主代理执行受控 bootstrap,因此任务保持
in_progress。
启动 backlog 后续
- warning-only admission 收敛后,新 PaC run 已可创建,但 NC01 官方 watcher 在重放历史 PipelineRun 时暴露第二断点:
- Pod
pipelines-as-code-watcher-7f6c87497c-7lhfh的/live在集中 reconcile 期间超过5stimeout; - 默认 liveness 在
initialDelaySeconds: 5、failureThreshold: 3下连续失败并重启容器; - 同期 readiness 失败只影响流量就绪,liveness 重启会反复打断历史 backlog 初始同步。
- Pod
- owning YAML 新增
release.workloads.watcher,明确声明:- watcher Deployment 与 container identity;
- startup、readiness 与 liveness 三类 HTTP probe;
- startup backlog 窗口和 liveness 延迟全部由 YAML 持有,代码不提供隐藏数值默认值。
- PaC bootstrap 下载官方 v0.48.0 release manifest 后,在 apply 前按 YAML 精确匹配 watcher Deployment/container 并渲染探针:
- 未匹配 Deployment 或 container 时直接失败;
- 不使用 runtime patch、第二份 manifest 或手工
kubectl patch; - 后续官方 release reapply 仍由同一 bootstrap 渲染相同 desired state。
- 启动窗口采用:
- startup:延迟
30s,每10s检查,单次 timeout5s,允许60次失败; - liveness:延迟
180s,每10s检查,允许6次失败; - readiness:保留
5s延迟、10s周期和3次失败,只控制就绪状态。
- startup:延迟
- 定向验证:
bun test scripts/src/platform-infra-pipelines-as-code-bootstrap.test.ts:13 pass, 0 fail, 66 expect();- 使用真实 v0.48.0 上游 manifest 验证:共解析
35个对象,精确命中pipelines-as-code-watcher/pac-watcher并渲染三类 YAML-owned probe; bun scripts/cli.ts platform-infra pipelines-as-code plan --target NC01 --consumer hwlab-nc01-v03 --json:成功披露 watcher probes,warnings=[];git diff --check:通过。
- 合并后只允许由 PaC migrated consumer 的正常 PR merge 自动链触发交付;不得人工执行 PipelineRun、mirror、trigger、sync、flush、Argo sync、runtime patch 或删除历史业务对象。