diff --git a/.agents/skills/unidesk-devlevel/SKILL.md b/.agents/skills/unidesk-devlevel/SKILL.md index 7a7ba5dd..746e07e4 100644 --- a/.agents/skills/unidesk-devlevel/SKILL.md +++ b/.agents/skills/unidesk-devlevel/SKILL.md @@ -50,6 +50,10 @@ description: >- - 禁止用命令行覆盖、临时环境变量或隐藏 fallback 形成第二端口真相。 - 固定端口、bind/probe、固定 HTTPS origin、状态目录和服务组成必须由 YAML-first 配置解析;代码和命令行不得补隐式默认值。 - L1 API、Worker、Temporal 开发依赖和 Web 的启动、停止、重启、状态、日志必须由项目 CLI 管理;`npm run`、`bun run`、`vite` 或裸脚本只允许作为 CLI 的内部实现,不是用户操作入口。 +- 通过项目 lifecycle 启动的 L1 服务在测试和验收后默认保持运行: + - 只有用户明确要求停止或清理时才执行 stop; + - 一次性 disposable smoke 可以按自身隔离合同清理,但不能替代可持续访问的 L1 服务; + - 任务结束前必须重新读取 lifecycle status,不能凭启动返回值推断服务仍在运行。 - CLI 显式使用项目 native `--over-api` transport,经 native API 调用 Worker。 - Web 使用 `$unidesk-webdev` 的 `web-probe native-readiness` 从 owning YAML 固定 HTTPS origin 访问 native Web。 - 微服务项目只启动当前微服务的前端、API、Worker及必要依赖。 @@ -67,6 +71,10 @@ description: >- - 公网配置随正常 `master` merge 由唯一 PaC authority 自动收敛; - 自动链未收敛时使用 `$unidesk-cicd` 只读归因,不由 L1 会话补写。 - L1 验收命令必须实际从固定 HTTPS origin 打开页面和 API;本机 `127.0.0.1`/`localhost` 只可作为进程健康 probe,不构成 L1 证据。 +- 涉及 L1 的任务在结束时必须报告公网入口: + - 报告 owning YAML 声明的固定 HTTP/HTTPS origin 和当前可用状态; + - 存在页面路径时同时报告可直接访问的完整 URL; + - 公网入口未就绪时明确报告 blocker,禁止用 localhost、IP、bind 地址或裸端口冒充公网入口。 - 执行任何 L1 流程时必须扫描当前项目已声明的 L1: - 发现历史 L1 尚未配置固定 HTTPS exposure 时,立即建立可追踪记录; - 发现一例就完成该实例的 YAML-first exposure、受控部署和原入口验收; diff --git a/.agents/skills/unidesk-tasktree/references/development-operations.md b/.agents/skills/unidesk-tasktree/references/development-operations.md index 532e82bb..1d2a0c3d 100644 --- a/.agents/skills/unidesk-tasktree/references/development-operations.md +++ b/.agents/skills/unidesk-tasktree/references/development-operations.md @@ -123,8 +123,8 @@ bun run tasktree:native:status - 修改前端时复用现有 HMR 与 API 进程; - 不触发镜像构建或 Kubernetes rollout。 - native 进程使用独立 PID、日志和 state 目录: - - 开发期间允许持续复用; - - 完成或失败后必须停止并清理临时目录。 + - 验收后是否保持运行及任务结束公网 URL 报告统一遵循 `$unidesk-devlevel`; + - 一次性 disposable smoke 继续按自身隔离合同清理。 ## 部署态 CLI 验收 diff --git a/.agents/skills/unidesk-webdev/SKILL.md b/.agents/skills/unidesk-webdev/SKILL.md index 02d30bfa..f84f6041 100644 --- a/.agents/skills/unidesk-webdev/SKILL.md +++ b/.agents/skills/unidesk-webdev/SKILL.md @@ -109,6 +109,7 @@ description: UniDesk Web 开发与受控浏览器验证技能。用户提到 Web - 页头高度预算、状态底栏和主体占比的默认判定见 [references/design.md](references/design.md); - 历史页面按风险逐步迁移,新页面和重设计页面必须直接采用该合同。 - L1 公网调试入口交给用户前必须完成浏览器 readiness 验收: + - L1 服务的验收后保留与任务结束公网 URL 报告统一遵循 `$unidesk-devlevel`,本 skill 不重复定义生命周期; - 使用 `bun scripts/cli.ts web-probe native-readiness --node --lane --profile ` 一次完成验收; - 固定 HTTPS origin、path、DOM、交互和失败判据只从 owning YAML 读取,禁止用 `--url` 或 `--origin` 覆盖; - 监听成功、端口可达、HTTP 200、API smoke 或源码测试通过都不能单独判定 L1 可用; diff --git a/config/hwlab-node-lanes.yaml b/config/hwlab-node-lanes.yaml index cf9db18c..681a01d8 100644 --- a/config/hwlab-node-lanes.yaml +++ b/config/hwlab-node-lanes.yaml @@ -112,6 +112,26 @@ lanes: stateDir: /tmp/hwlab-v03-source-workspace-bootstrap timeoutSeconds: 1800 nativeDevelopment: + tasktree: + publicExposure: + publicBaseUrl: https://lab-dev-tasktree.hwpod.com + hostname: lab-dev-tasktree.hwpod.com + expectedA: 152.53.229.148 + upstream: http://127.0.0.1:4173 + healthPath: /health/live + stateDir: .state/tasktree-native + api: + bindHost: 127.0.0.1 + probeHost: 127.0.0.1 + port: 6673 + worker: + bindHost: 127.0.0.1 + probeHost: 127.0.0.1 + healthPort: 6674 + web: + bindHost: 0.0.0.0 + probeHost: 127.0.0.1 + port: 4173 workbench: publicExposure: publicBaseUrl: https://lab-dev-workbench.hwpod.com diff --git a/config/platform-infra/public-edge.yaml b/config/platform-infra/public-edge.yaml index d6db964d..1db011d0 100644 --- a/config/platform-infra/public-edge.yaml +++ b/config/platform-infra/public-edge.yaml @@ -80,6 +80,9 @@ targets: - id: hwlab-development configRef: config/hwlab-node-control-plane.yaml path: publicExposures.NC01.v03 + - id: hwlab-tasktree-native + configRef: config/hwlab-node-lanes.yaml + path: lanes.v03.targets.NC01.nativeDevelopment.tasktree.publicExposure - id: hwlab-workbench-native configRef: config/hwlab-node-lanes.yaml path: lanes.v03.targets.NC01.nativeDevelopment.workbench.publicExposure