docs(devlevel): 固化 L1 native 独立执行边界

This commit is contained in:
pikastech
2026-07-21 01:36:26 +02:00
parent 46183cf44b
commit 10e93f17f9
3 changed files with 64 additions and 40 deletions
+17
View File
@@ -101,6 +101,23 @@ trans D601:/home/ubuntu/workspace/unidesk-dev git remote -v
- 使用目标 provider、pod 或 Windows route 的最小闭环证明;
- 只有证据显示 client 侧无法规避边界时,才进入 provider-gateway 变更流程。
## L1 Native 执行边界
- L1 只使用 host 上的 native API、Worker、Web 和必要基础依赖:
- 服务从 owning YAML 解析固定 workspace、端口、状态目录和依赖;
- 启动、停止、重启、状态和日志统一走项目受控 lifecycle CLI
- `--over-api` 直接调用该 native API,不经过 Kubernetes Service 或集群 workload。
- L1 在任何情况下都不依赖 CI/CD、GitOps、Argo、Kubernetes、镜像发布或
集群 rollout
- 正常启动、首次拉起、配置变更、合并后复测和故障处理都不等待这些系统;
- 不用这些系统更新、修复或验收 L1 运行面;
- 必须依赖集群对象的验证属于 L2。
- L1 始终使用本机小回环:
- 通过 owning YAML 固定 native 端口完成 API、Worker、Workflow 和 Web 回归;
- 同 host 可使用 YAML probe host,跨 host 使用 YAML 固定 native host
- 公共入口状态独立记录,不能成为 L1 业务门禁;
- L1 任务不进入 CI/CD、Kubernetes 和 public-edge 调查或操作。
## L1 受控 CLI 即时修复
- 执行 L1 开发、诊断或验收时,发现项目受控 CLI 存在问题即可在当前任务内即时修改:
+21 -11
View File
@@ -102,9 +102,18 @@ HWLAB v0.2/v0.3 仓库内 `docs/reference/spec-*`,以及已收编的 `cloud-wo
- development `NC01/v03` 前端/API 入口为 `https://lab-dev.hwpod.com`
- production release lane `NC01/production` 的正式入口为 `https://lab.hwpod.com`
- HWPOD L1 Native 是独立于 Cloud Web 的运行面:
- API、Temporal worker、Web固定端口和公网入口必须从 `config/hwlab-node-lanes.yaml#lanes.<lane>.targets.<node>.nativeDevelopment.hwpod` 读取
- API、Temporal worker、Web固定端口必须从 owning YAML 读取
- `config/hwlab-node-lanes.yaml#lanes.<lane>.targets.<node>.nativeDevelopment.hwpod`
- 启停和状态统一使用 `hwlab nodes native-development hwpod api|worker|web`
- 公网验收统一使用 `web-probe native-readiness --node <node> --lane <lane> --profile hwpod`
- L1 API、worker 和 Web 是 NC01 host 上的 native 进程:
- 任何情况下都不依赖 CI/CD、GitOps、Argo、Kubernetes 或集群 rollout
- 正常启动、首次拉起、配置变更、合并后复测和故障处理均适用;
- CLI `--over-api` 直接调用 owning YAML 固定端口上的 native API
- 同 host 回归使用 YAML probe host
- 禁止改走 Cloud API 或 Kubernetes Service
- L1 只验收本机 API、worker、Web 小回环:
- 公网入口与 public-edge 是独立可选检查;
- 不得成为 L1 启动、执行或完成条件;
- HWPOD Web 无业务登录页时,由 owning YAML profile 声明 `authentication: none`,不得改用临时 Playwright 脚本或弱化浏览器错误断言。
- Windows HWPOD-NODE 的连接入口和制品入口属于不同合同:
- WebSocket 注册入口来自节点 YAML 的桌面连接配置;
@@ -196,16 +205,17 @@ Workbench 浏览器回归需求以 UniDesk OA [PJ2026-010401 Web工作台](../..
- 端口被同一 L1 服务的旧进程占用时,只能通过项目 CLI 停止或重启该服务;
- 端口被其他服务占用时,禁止停止、接管或复用其他服务;
- 必须先确认空闲端口,再修改 `config/hwlab-node-lanes.yaml#lanes.<lane>.targets.<node>.nativeDevelopment.workbench` 中本服务的端口;
- API、Worker、Web 的启动状态和固定 HTTPS 入口继续由同一 YAML 与 `hwlab nodes native-development workbench` 解析;
- API、Worker、Web 的启动状态继续由同一 YAML 与 `hwlab nodes native-development workbench` 解析;
- 禁止用命令行参数、临时环境变量或代码 fallback 形成第二端口真相;
- 端口退让后固定 HTTPS 域名保持不变,并从该域名执行 `web-probe native-readiness`,确认页面、DOM、交互和浏览器错误均通过后再向用户披露入口。
- L1 Native 公网暴露与降级:
- `nativeDevelopment.<application>.publicExposure` 声明首选固定 HTTPS origin
- HTTPS 因 public-edge、TLS、DNS 或出网故障不可用时,必须降级到同一 owning YAML 解析出的固定公网 HTTP IP:port,并继续 L1
- 固定 HTTP 降级入口必须保持业务认证,禁止随机端口、localhost、临时 URL、第二代理或第二业务路径;
- 降级后先验证公网 readiness,再通过同一 Workbench API、Worker、Kafka SSE 与 Web 路径完成原验收;端口监听或 HTTP 200 不能替代业务验收
- HTTPS 故障独立登记为非阻塞公共面 issue,不得等待回复或恢复后才继续业务;
- 公共面恢复后从固定 HTTPS origin 复测,并撤回 HTTP 降级状态。
- 端口退让后从 owning YAML 的 native probe host 和固定端口执行
`web-probe native-readiness`,确认页面、DOM、交互和浏览器错误均通过。
- L1 Native 暴露边界:
- `nativeDevelopment.<application>.publicExposure` 只描述独立公共入口
- 公网域名、TLS、public-edge 和固定公网入口不进入 L1 启动、执行、回归和
完成条件
- L1 不调查、等待或操作公共面的 CI/CD、GitOps、Argo、Kubernetes、镜像或
rollout
- 只有用户明确要求 L2 或独立公共面运维时,才进入对应专项流程。
- Workbench L1 API 与 Kafka SSE 验收:
- API 进程存活入口固定为 `/health/live`