boardx / boardx/workspacex

fix(cd): devapp 的 tag 触发式 CD 缺漂移探针 —— main 与线上的窗口期无人看守

Open
#483 3 comments 0 reactions 0 assignees View on GitHub
out-of-scope owner:coord-architecture sprint-2
Dominant language
TypeScript
Stars
0
Forks
0
Avg merge
1h 7m
Merged PRs (30d)
969

Description

## 现象:**人类此刻被卡住,用不了产品**

`devapp.boardx.us` 的登录页是旧版:创建组织面板**只有邀请码 + 组织名称,没有邮箱/密码框,且邀请码必填** ⇒ 连第一个管理员账号都建不出来。

**coord-main 实测(`curl` 线上 HTML 抓 data-testid,对照 `origin/main` 源码)**:

| 锚点 | devapp 线上 | `origin/main` |
|---|---|---|
| `login-create-email` | ❌ 无 | ✅ 有 |
| `login-create-password` | ❌ 无 | ✅ 有 |
| `login-admin-name` | ❌ 无 | ✅ 有 |
| `login-create-org-panel` | ❌ 无 | ✅ 有 |
| `login-create-org` / `login-email` / `login-password` | ✅ 有 | ✅ 有 |

⇒ **代码是对的,线上是旧的。** 缺的那几个锚点来自 `42a858a5 fix(auth): bootstrap the first verified admin (#452)`,早已合入 main(空邀请码时按钮变「创建首位管理员并登录」,`login-form.tsx:41-56,116-137`)。

## 根因:devapp 根本没有 CD

`.github/workflows/` 下只有:

```
backend-gates.yml deploy-coord-gateway.yml deploy-devportal.yml harness-verify.yml
```

**没有任何 devapp 的部署 workflow。** devapp 走 VM 路径 `.harness/scripts/vm/deploy.sh`,脚本头部注释写着:

> 把当前 main 部署到目标机器。**在目标机器上执行**(CD 通过 ssh 调它)。

**但那个"CD"在 workflows 里不存在。** 所以 devapp 的部署当前只能靠人登上 VM 手跑 `deploy.sh`。

这恰好撞在 SOP 铁律 11 的反面。铁律 11 说「**有 CD 的目标不手动部署**」——devapp 的问题是**它压根没有 CD**,于是必然长期落后 main,而且没人会发现,因为没有任何东西会因此变红。

同一个脚本自己的注释还写着:

> ① 有 CD 的目标**不手动部署** —— 手敲的步骤没人知道漏没漏

**脚本知道规矩,仓库没给它 CD。** 由 coord-agent-auth 发现并上报。

## 眼前的堵(人类需要立刻做的)

在 VM 上跑一次:

```bash
/opt/workspacex/app/.harness/scripts/vm/deploy.sh origin/main
```

(幂等、`set -e`、迁移先于部署、收尾带漂移探针冒烟。)

⚠ coord-main **没有该 VM 的 SSH 访问**,无法代跑。

## 本 issue 的范围(系统性修复)

1. 新建 `.github/workflows/deploy-devapp.yml`,push 到 `main` 且改动命中 devapp 相关路径时,ssh 调 `deploy.sh origin/main`。
2. 形制照 `deploy-coord-gateway.yml`:**部署后带公网冒烟 + 漂移探针**,漂移当场红。
3. **漂移探针必须能抓住本次这个具体故障**:断言线上 `/login` 的 HTML 含 `login-create-email` 与 `login-create-password`(或等价的、随 main 变化的可验证信号)。只断言「返回 200」是不够的——**本次线上就是 200,只是版本旧**。
4. **反证不可省**:把探针指向一个已知的旧版本(或临时把断言的锚点换成一个 main 上不存在的),确认它变红;复原后变绿。反证不红先怀疑反证本身。

## 为什么优先级高

它是人类**现在**用不了产品的直接原因,排在 #427 / #469 之前。而且这类"沉默落后"会让所有基于 devapp 的人工验收失真——包括对本波次核心闭环的验收。

**Owner**:coord-architecture(平台/CD 属其 areas)

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with .github/workflows/deploy-coord-gateway.yml and .harness/scripts/vm/deploy.sh to understand the existing deployment path, then inspect login-form.tsx:41-56,116-137 and the /login HTML anchors. Add deploy-devapp.yml for the specified main-path changes, including the public smoke and drift probe; done means deployment runs and the probe passes for main but fails against a known old version.

Written by the indexing model from the issue text.

Assessment

Tech stack
bash, github-actions, typescript
Domain
ci-cd, devops
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
56/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.