diff --git a/docs/MDTODO/details/platform-infra-runtime-reliability/R1_Task_Report.md b/docs/MDTODO/details/platform-infra-runtime-reliability/R1_Task_Report.md deleted file mode 100644 index 5096d35c..00000000 --- a/docs/MDTODO/details/platform-infra-runtime-reliability/R1_Task_Report.md +++ /dev/null @@ -1,31 +0,0 @@ -# R1 任务报告 - -## 结果 - -依据 UniDesk #2242,将 host-native systemd `.socket`/`.service` pair 的幂等收敛序列抽到 `scripts/src/platform-infra-systemd-socket-pair.ts`。公共 renderer 的输入是 socket/service unit 的名称、路径、内容和调用方 postcondition script;target route、监听地址、上游、probe、timeout 与业务语义继续由领域 owning YAML 和 adapter 负责。 - -SelfMedia voice adapter 只负责渲染 unit 与 probe,并调用公共 renderer。公共 renderer 在同一脚本中比较 unit 内容,只有 unit 变化或 socket 未运行时才释放 socket-activated service 持有的监听 FD、reload 并启动 socket,最后执行调用方 postcondition。 - -长期参考明确日常收敛只调用一次领域 `apply --confirm`;该调用已包含 postcondition,不再机械追加 `status` 与 `validate`。后两者保留为独立只读诊断入口。 - -## 工具调用改进 - -- 改进前:同类实现容易无条件 restart socket,失败后需要人工 `systemctl stop`、重试 apply,再追加 status/validate,形成多次远端调用。 -- 改进后:领域 CLI 复用公共 renderer,一次 apply 自行释放 FD、收敛 unit 并执行 postcondition;正常路径由多次人工调用缩减为一次受控调用。 -- 可变化因素全部通过参数与 owning YAML 输入,未写死 SelfMedia、NC01、端口、issue 或日期。 -- 适用边界是 host systemd socket/service pair;不负责 Docker、FRP、Kubernetes、Secret、CI/CD 或业务 probe 语义。 - -## Smoke - -执行一个纯本地 renderer smoke:以虚拟 unit 名称、路径和内容调用公共入口,把渲染脚本送入 `sh -n`,并检查内容比较、service stop、daemon reload、socket restart/start 和 postcondition 均存在。结果为 `ok=true`、`syntaxExitCode=0`、`missing=[]`、`postconditionCount=1`。 - -同时完成: - -- `bun --check scripts/src/platform-infra-systemd-socket-pair.ts`; -- `bun --check scripts/src/platform-infra-selfmedia-voice.ts`; -- `bun scripts/cli.ts platform-infra selfmedia-voice bridge plan --json`,结果 `ok=true`; -- `git diff --check`。 - -## 边界 - -本改进只修改公共 renderer、领域 adapter、长期参考与 MDTODO;未执行远端 apply,未修改 CI/CD 基础设施、SelfMedia 生产环境或当前业务运行面。 diff --git a/docs/MDTODO/details/platform-infra-runtime-reliability/R2_Task_Report.md b/docs/MDTODO/details/platform-infra-runtime-reliability/R2_Task_Report.md deleted file mode 100644 index 162fc8ef..00000000 --- a/docs/MDTODO/details/platform-infra-runtime-reliability/R2_Task_Report.md +++ /dev/null @@ -1,74 +0,0 @@ -# R2 任务报告 - -## 结论 - -- 已在 NC01 独立 Kubernetes namespace `temporal` 完成 YAML-first 受控 Temporal 部署。 -- Temporal 使用 NC01 host native PostgreSQL 16,不包含 in-cluster PostgreSQL、PVC 或第二配置 authority。 -- 集群内共享 gRPC 地址为 `temporal-frontend.temporal.svc.cluster.local:7233`。 -- 逻辑 namespace `unidesk` 已创建,保留期为 7 天。 -- Web UI 已通过 shared public-edge 暴露到 `https://temporal.hwpod.com`。 -- Web 用户为 `admin`;密码由统一管理员密码 source 经 `unidesk-secret` 同步到 `temporal/temporal-web-admin` 的 `password` key,全程未读取或输出密码值。 -- NC01 native Temporal SDK worker/client workflow smoke 已通过,worker 完成后停止并清理。 -- 已创建并合并 `.agents/skills/unidesk-temporal`。 - -## 配置与交付 - -- owning YAML: - - `config/platform-infra/temporal.yaml`; - - `config/platform-db/postgres-nc01.yaml`; - - `config/platform-infra/public-edge.yaml`; - - `config/secrets-distribution.yaml`。 -- 受控实现:`scripts/src/platform-infra-temporal.ts`。 -- 合并 PR: - - `#2359`:Temporal owning YAML、CLI、native DB 与 public-edge; - - `#2362`:native schema 初始化兼容与 UI image 修正; - - `#2363`:统一管理员密码 Secret 与 Caddy auth sidecar; - - `#2365`:dynamic config 路径与 ServiceLink 冲突修复; - - `#2368`:放行未认证 `/healthz`; - - `#2371`:新增 `unidesk-temporal` skill。 - -## 数据库与 Secret - -- PostgreSQL apply job:`platform_db_postgres_apply_20260716162719693_b44434`。 -- native role 与 `temporal`、`temporal_visibility` 数据库均存在。 -- main schema 版本为 `1.17`,visibility schema 版本为 `1.9`。 -- 数据库连接使用 TLS/SCRAM;Temporal manifest 只引用 YAML source 和 Kubernetes Secret。 -- Secret sync job:`secrets_sync_20260716165534479_587493`。 -- 目标 Secret:`temporal/temporal-web-admin`,key 为 `password`,`valuesPrinted=false`。 - -## 运行面验收 - -- 最终 Temporal apply job:`platform_infra_temporal_apply_nc01_20260716171521377_dc5143`,状态 `succeeded`,退出码 `0`。 -- `platform-infra temporal validate --target NC01` 返回: - - server `readyReplicas=1`; - - UI `readyReplicas=1`; - - frontend/UI endpoint 均存在; - - database mode 为 `nc01-host-native-postgresql`; - - logical namespace `unidesk` 为 `1/1`; - - `valuesPrinted=false`。 -- 公网直连证据: - - DNS A 记录为 `152.53.229.148`; - - TLS 校验通过; - - `/healthz` 返回 `200`; - - 未认证根路径返回 `401`。 -- shared public-edge desired/current fingerprint 一致;其聚合 status 仍会被无关站点 `lab.hwpod.com` 探针拉低,Temporal 单站点已独立通过。 -- 当前仓库没有 Temporal repo-owned typed 浏览器登录 smoke。按 `unidesk-secret` 边界未读取统一密码、未复制一次性浏览器脚本;后续如需 DOM 登录证据,应扩展正式 `web-probe` typed command。 - -## Native Workflow Smoke - -- 执行面:NC01 host native Node.js `v20.19.2`,官方 Temporal TypeScript SDK `1.13.2`。 -- 连接地址从 `temporal-frontend` Service 动态解析,未写入长期配置。 -- namespace:`unidesk`。 -- task queue:`native-smoke-ac054ec8-1bcb-48ce-ae0b-e1f123b6e7d3`。 -- workflow ID:`native-smoke-27c91060-06d0-4761-adc2-b19fdad842d6`。 -- workflow 调用 activity 后返回 `activity:temporal-smoke-ok`。 -- worker 依次进入 `STOPPING`、`DRAINING`、`DRAINED`、`STOPPED`。 -- 临时目录 `/tmp/unidesk-temporal-smoke-2358` 已删除,无常驻 worker、Pod 或 CI/CD workload。 - -## 偏差与恢复 - -- 首次 SDK 安装因 NC01 独立 `/tmp` tmpfs 达到 `100%` 而出现 `ENOSPC`,workflow 未提交。 -- 根盘实际使用率为 `69.12%`,k3s、containerd、PVC 和并行任务目录均保持保护。 -- 按 `$unidesk-gc` 对 `/tmp/unidesk-cli-output` 检查活跃句柄,确认无写入者后清理可重建转储,释放约 `520 MiB`。 -- 清除本次实验的半安装 `node_modules` 后从空目录重试,workflow smoke 成功。 -- 实验完成后 `/tmp` 临时工作目录已幂等清理。 diff --git a/docs/MDTODO/details/platform-infra-runtime-reliability/R3.1_Task_Report.md b/docs/MDTODO/details/platform-infra-runtime-reliability/R3.1_Task_Report.md deleted file mode 100644 index 12c2fba9..00000000 --- a/docs/MDTODO/details/platform-infra-runtime-reliability/R3.1_Task_Report.md +++ /dev/null @@ -1,23 +0,0 @@ -# R3.1 任务报告 - -## 暴露的问题 - -本次 L0 首轮只验证了默认参数与远端分支结果,没有沿同一逻辑操作继续覆盖既有 local closeout 副作用,导致合并后才发现本地 branch/worktree 仍可能被清理并追加第二个修复 PR。 - -## 泛化改进 - -- L0 完成边界改为本次变更实际触及的完整逻辑操作,而不是单个参数或首个返回值。 -- 默认值、控制标志或分支变化必须沿既有调用链核对实际控制的结果与副作用。 -- 最小合同覆盖默认保留或无 mutation 分支,以及本次允许的显式 mutation 分支。 -- 文件系统和同步有界本地 helper 副作用可用 disposable fixture、dry-run plan 或一次最小 smoke 验证,仍属于 L0。 -- 未暴露且未被代码改动触及的风险不扩成测试矩阵、门禁或 L1-L3 回归。 - -## 未改动范围 - -未修改 L1、L2、L3 进入条件、生产授权、CI/CD、运行面、CLI 或业务代码。 - -## 验证 - -- `quick_validate.py .agents/skills/unidesk-devlevel`:通过。 -- `git diff --check`:通过。 -- 人工合同检查:新增规则可直接约束默认值与副作用链路,同时明确禁止扩测未触及面。 diff --git a/docs/MDTODO/details/platform-infra-runtime-reliability/R3_Task_Report.md b/docs/MDTODO/details/platform-infra-runtime-reliability/R3_Task_Report.md deleted file mode 100644 index 3a289fce..00000000 --- a/docs/MDTODO/details/platform-infra-runtime-reliability/R3_Task_Report.md +++ /dev/null @@ -1,40 +0,0 @@ -# R3 任务报告 - -## 结论 - -已完成共享 Temporal 基础设施与 TaskTree native-first 应用闭环,并将通用流程沉淀到 `unidesk-temporal`。 - -## 基础设施 - -- Kubernetes namespace:`temporal`。 -- 逻辑 namespace:`unidesk`。 -- 数据库:NC01 host native PostgreSQL,未创建 Kubernetes PostgreSQL workload 或 PVC。 -- 集群共享入口:`temporal-frontend.temporal.svc.cluster.local:7233`。 -- Web 管理入口:`https://temporal.hwpod.com`。 -- 管理密码:通过 `unidesk-secret` 的统一管理员密码 sourceRef 分发;验证只披露 presence/fingerprint,`valuesPrinted=false`。 -- Temporal server 与 UI 均为 `readyReplicas=1`,逻辑 namespace 验证通过。 - -## Native-first 闭环 - -- 先只启动 native worker,并由默认 CLI 直接调用共享 dispatcher。 -- 完成 TaskGroup、Task/Subtask、Milestone、ExecutionReport、timeline 与 Temporal workflow smoke。 -- 随后 native 启动 API,以同一 CLI 增加 `--overapi` 验证 HTTP adapter;命令、参数、DTO 和错误合同保持一致。 -- 线上 workflow ID:`tasktree-tt_5ad2d44e-6df8-4aca-9176-738c1f5ae5e0-1784229780203`。 -- Temporal run ID:`019f6c61-db1f-7414-bf53-b537053061ed`。 -- 执行报告:`tr_5bf00a6e-746c-49ab-bcf7-a48cc40478b9`。 -- 临时 native 进程和目录已清理。 - -## 自动交付 - -- HWLAB TaskTree 功能通过 PR #2593 合并。 -- API 与 worker 使用独立 Deployment、entrypoint 与健康检查。 -- 最终 Cloud Web 根因修复通过 PR #2604 合并,source commit `dc2a4cc2fbe162cf6dac813861177d3617d78e54`。 -- PipelineRun `hwlab-nc01-v03-ci-poll-l7c5p` 在 81 秒内成功。 -- GitOps commit `2b2485dc5c2b`,Argo `Synced/Healthy`。 -- artifact、runtime digest 与 GitOps exact 对齐,运行时 ready `1/1`。 - -## 泛化沉淀 - -- `unidesk-temporal` 增加 native worker、本地 dispatcher、native API、`--overapi`、PR 自动交付和线上验收顺序。 -- 明确生成的数据库 DSN 不得通过 shell `source` 加载;必须按单 key 受控解析并作为一个环境变量传入,禁止打印 DSN。 -- 新建 `unidesk-tasktree` skill,固化 TaskTree 领域合同、CLI、运行配置、自动交付和 Web 验收入口。 diff --git a/docs/MDTODO/details/platform-infra-runtime-reliability/R4_Task_Report.md b/docs/MDTODO/details/platform-infra-runtime-reliability/R4_Task_Report.md deleted file mode 100644 index 10255c3a..00000000 --- a/docs/MDTODO/details/platform-infra-runtime-reliability/R4_Task_Report.md +++ /dev/null @@ -1,20 +0,0 @@ -# R4 NC01 Target 透传恢复报告 - -## 现象 - -HWLAB CaseRun L2 收敛期间,trans NC01:/root/unidesk pwd 连续三次在连接建立阶段返回 frontend ssh upstream websocket error。远端命令未执行,Artificer preflight 和 NC01 隔离 worktree 创建被阻塞;问题登记为 UniDesk #2452。 - -## 恢复证据 - -- 后续同一只读命令成功返回 /root/unidesk。 -- 通过同一 target-trans route 在 NC01 创建 /root/unidesk/.worktree/2449-service-selection-check。 -- Artificer NC01/nc01-v02 preflight 成功: - - workspaceRef valid=true; - - gitStateInspected=false; - - provider/tool SecretRefs allPresent=true,values 未打印; - - task qt_338489c2d6894ad791a1f18594b818f0 自动 dispatch。 -- UniDesk #2452 已关闭。 - -## 边界 - -恢复未引入第二 SSH 路径、fallback、运行面 patch 或 Secret 反解;未修改 PaC/Tekton/Argo 共享 CI/CD。故障表现为瞬时 frontend websocket transport 中断,当前没有可复现的持久源码缺陷,因此不提交伪修复。 diff --git a/docs/MDTODO/platform-infra-runtime-reliability.md b/docs/MDTODO/platform-infra-runtime-reliability.md deleted file mode 100644 index 1c037e5e..00000000 --- a/docs/MDTODO/platform-infra-runtime-reliability.md +++ /dev/null @@ -1,21 +0,0 @@ -# Platform Infra 运行可靠性 - - -## R1 [completed] - -依据 [UniDesk #2242](https://github.com/pikasTech/unidesk/issues/2242) 将 systemd socket/service pair 的内容比较、activated service 释放、daemon reload、socket 启动与调用方 postcondition 抽为参数化平台运维 helper,使领域 CLI 的单次 apply 自完成收敛和验证,避免人工 stop 与机械追加 status/validate;只做本地 renderer smoke,不触碰 CI/CD、SelfMedia 生产或业务运行面,完成任务后将详细报告写入[任务报告](./details/platform-infra-runtime-reliability/R1_Task_Report.md)。 - -## R2 [completed] - -执行 [UniDesk #2358](https://github.com/pikasTech/unidesk/issues/2358):在 NC01 独立 `temporal` namespace 以 `config/platform-infra/temporal.yaml` 为唯一真相受控部署共享 Temporal server/UI,数据库复用 `config/platform-db/postgres-nc01.yaml` 声明的 host-native PostgreSQL 16,通过 ClusterIP DNS 向其他 namespace 提供 gRPC,并由 shared public-edge 暴露 `https://temporal.hwpod.com`;建立 YAML 声明的 Temporal logical namespace,以 native 临时 worker/client 完成 workflow smoke 后退出,禁止 in-cluster PostgreSQL、smoke CI/CD、常驻 smoke workload、gRPC 公网暴露、跨 namespace RBAC或第二 authority,完成任务后将详细报告写入[任务报告](./details/platform-infra-runtime-reliability/R2_Task_Report.md)。 - -## R3 [completed] - -执行 [UniDesk #2380](https://github.com/pikasTech/unidesk/issues/2380):建立可复用的 Temporal 应用 native-first 敏捷开发闭环,以共享 application dispatcher 保证本地 CLI 与 `--overapi` 同合同,先仅启动 native worker 完成 PostgreSQL、workflow 和 CLI 调试,再经应用 owning YAML、GitHub PR、PaC/GitOps 自动交付独立 API/worker Pod 并线上验收;保留快速本地入口,最终沉淀到 `unidesk-temporal` 和应用专项 skill,完成任务后将详细报告写入[任务报告](./details/platform-infra-runtime-reliability/R3_Task_Report.md)。 - -### R3.1 [completed] - -固化本次分级回环真实暴露的 L0 验收缺口:最低等级验收必须覆盖同一逻辑操作的完整可观察结果和已存在副作用面,不能只测入口参数或首个输出;先列出本次变更实际触及的决策、mutation plan、持久状态与清理动作,再以最少合同覆盖这些已触及面,未暴露且未改动的风险不扩成测试矩阵、门禁或更高等级回归,完成任务后将详细报告写入[任务报告](./details/platform-infra-runtime-reliability/R3.1_Task_Report.md)。 -## R4 [completed] - -执行 [UniDesk #2452](https://github.com/pikasTech/unidesk/issues/2452):修复 NC01 Target 透传在连接建立阶段连续返回 frontend ssh upstream websocket error,恢复 trans host/workspace 只读命令和 Artificer NC01/nc01-v02 preflight;保持既有 target-trans、route 与 SecretRef authority,不新增第二 SSH 路径,不触碰 PaC/Tekton/Argo 共享 CI/CD,不以固定 workspace 写入或人工交付绕过,完成任务后将详细报告写入[任务报告](./details/platform-infra-runtime-reliability/R4_Task_Report.md)。