feat(release): add standard and fast 103 portal release modes

Formalize fast release as --mode fast so verified changes can skip canary promotion and full Gate reruns while keeping backups and health checks.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
john
2026-08-15 08:03:44 +08:00
parent a9fe3d01a7
commit 835677a285
9 changed files with 222 additions and 76 deletions
+4 -1
View File
@@ -8,7 +8,10 @@
2. **禁止 SSH 登录 `105` 直接修改业务代码**(含服务号菜单脚本 `scripts/wechat-mp-menu.mjs`)。105 上文件是部署产物;变更必须:本地 `test-memind` 修改 → Git commit → 正式发布 → 必要时在目标环境执行 API 同步。详见 [docs/105-server-operations.md](docs/105-server-operations.md)。
2. **Portal 生产必须是无源码 runtime 模式**:构建只发生在本机 Mac,产物是 `.runtime/portal/``103` 只接收 runtime artifact、继承持久目录、启动服务,**禁止**在 `103``npm install``npm run build` 或保留可运行源码树。
2. `MindSpace` 独立服务同样必须走单独 runtime artifact:本地 `node scripts/build-mindspace-service-runtime.mjs` -> `bash scripts/release-mindspace-service-prod.sh` -> 上传 `103` -> 备份 `/Users/john/MindSpace` 与共享 `Memind/.env` -> 原子切换到 `/Users/john/MindSpace` -> 健康检查 `127.0.0.1:8082/health``/mindspace/v1/contract`;禁止手工 SSH 改线上 `/Users/john/MindSpace` 源码。103 当前拓扑见 [docs/103-runtime-topology.md](docs/103-runtime-topology.md)。
3. Portal 生产发布必须先构建候选 runtime,并只通过 `scripts/release-portal-canary-prod.sh` 启用用户级灰度。灰度只能命中明确的不可变用户身份,未命中、身份解析失败或候选不健康必须继续走稳定版本。`scripts/release-portal-runtime-prod.sh` 仍是整包替换脚本,在同一候选的灰度验收和晋升证据校验完成前禁止非 dry-run。
3. Portal 生产发布提供两种整包替换模式(均须从完整 `main` 打整包,且先通过 `check-release-ready.sh`):
- **标准发布**(默认):`bash scripts/release-portal-runtime-prod.sh``--mode standard`。须先通过 `scripts/release-portal-canary-prod.sh` 完成用户级灰度验收,再校验 103 灰度晋升证据、完整 Core+Impact Gate、`verify:mindspace-publish-guards:full`,最后替换 8081 live 目录。
- **快速发布**`bash scripts/release-portal-fast-prod.sh``bash scripts/release-portal-runtime-prod.sh --mode fast`。跳过灰度晋升证据、完整 Gate 重跑和 `publish-guards:full`;若当前 commit+artifact 已有有效 Gate report 则复用,否则只跑最小本地 smoke + `test:release-gate:unit`。仍执行 103 备份、goosed 预检、8081 健康检查与明确人工批准。适用于变更已在本地/CI/Gate 充分验证、需尽快整包上线的场景;**禁止**用 `--skip-tests` 替代发布前验证。
- 灰度入口仍是 `scripts/release-portal-canary-prod.sh`;快速发布不替代灰度,只是允许在已验证前提下跳过「灰度→晋升」链条直接整包。
4. `scripts/release-prod.sh`(源码包发布)已停用,不得再用于 Portal;`rsync_to_server.sh` 与任何面向 `105` 的直接同步脚本也只保留为禁用提示。
5. Portal 发布包不得携带运行态资产;`.env``data/``users/``.tailscale/``public/plaza-covers/``logs/` 只能从线上现有 live 目录继承。`/Users/john/MindSpace` 是独立 MindSpace Service 的生产根目录,不属于 Portal runtime 包;`/Users/john/Project/Memind/MindSpace` 只允许作为旧链路兼容/存量目录处理,不得再被写成 MindSpace Service 的当前根目录。
6. runtime artifact 必须包含 `server.mjs``mindspace-sandbox-mcp.mjs``sandbox-fs` 扩展依赖的独立子进程入口)。