boardx / boardx/workspacex

fullstack-smoke 同一 SHA 结果取决于触发事件类型(pull_request 绿 / workflow_dispatch 红)——装置随事件变化

Open
#2,109 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
0
Forks
0
Avg merge
1h 7m
Merged PRs (30d)
969

Description

## 现象

同一个 SHA `4e6fa737`、同一个 job `fullstack-smoke`,**结果取决于触发事件类型**:

| 触发 | 结果 |
|---|---|
| `pull_request` | **成功** |
| `workflow_dispatch` | **失败** —— `chat-vision-honest-degrade.spec.ts:64`,缺 `chat-roster-agent-agent-fullstack-yz-…`,1 failed / 44 passed |

由另一条线在查别的东西时撞见并上报(读数不是我测的,我转述并立案)。

## 为什么值得立案(虽然它挡不住任何东西)

`fullstack-smoke` 带 `continue-on-error: true`(#633 人类裁决:浏览器 e2e 不阻塞合并),所以**这条红本身不挡门**。但立案理由不是它的阻塞力,是它的**形态**:

**一个结果取决于触发事件类型的 job,说明它依赖了某个随事件变化的隐含状态。** 同一份代码、同一个 SHA、同一条命令,只因为 `github.event_name` 不同就一红一绿 —— 那个差异不在被测代码里,在环境/装置里。

缺的那个东西名字长这样:`chat-roster-agent-agent-fullstack-yz-…`,是**种子数据**。所以嫌疑集中在 **seeding / 隔离作用域**:某个装置在 `pull_request` 路径上被建了、在 `workflow_dispatch` 路径上没有(或反过来被别的作用域抢了)。

⚠ 这类东西的危险在于**它今天恰好落在一个 `continue-on-error` 的 job 上**。同一个隐含依赖换个位置就是真门 —— 本仓已经有现成的先例:`e2e-full` 里 `chat-read` 的红有一次就是 webServer `EADDRINUSE`(端口被占,见 #2084),同样是"环境状态泄漏进测试结果"的形态。**随触发方式变化的绿**和**随并发度变化的绿**是同一个病。

## 可能相关

发现者提到疑似与 **#2091** 或 **#2052** 的 seeding/隔离交互有关,他不拥有那块。**我也不拥有** —— 我只动 CI 触发与并发拓扑,不动 spec / fixture / playwright config。

## 建议的第一步(低成本,不用重跑)

历史日志直接可取,不需要重新触发(#2084 已确认 `cancelled` 的 job 日志也能取):

```bash
JID=$(gh run view --json jobs -q '.jobs[]|select(.name=="fullstack-smoke")|.databaseId')
gh api repos/:owner/:repo/actions/jobs/$JID/logs > smoke.log
grep -an "chat-roster-agent-agent-fullstack-yz\|WORKSPACEX_DB\|COMPOSE_PROJECT_NAME\|seed" smoke.log | head -40
```

把两次(`pull_request` 与 `workflow_dispatch`)的隔离变量(`WORKSPACEX_DB` / `COMPOSE_PROJECT_NAME` / 种子步骤的输出)逐行对齐,差异大概率一眼可见 —— **两条路径的装置不一样**,而不是测试本身不稳。

## 明确不做的

- 不改 spec、不改 fixture、不改 playwright config(测试分层 / chat 线的地盘)。
- 不建议因为它 `continue-on-error` 就归档为噪声 —— 那正是让它以后换个位置咬人的做法。

**Owner**:待定(seeding / 测试隔离的所有者)|由 coord-architecture 代为立案

Contributor guide

No contributing guide indexed for this repository

Research direction

Retrieve the historical fullstack-smoke logs with gh and compare the pull_request and workflow_dispatch runs. Start with the WORKSPACEX_DB, COMPOSE_PROJECT_NAME, and seeding output around chat-vision-honest-degrade.spec.ts:64, without changing the spec, fixture, or Playwright config. Done means the event-dependent seeding or isolation cause is identified and both triggers produce consistent results for the same SHA.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, playwright, typescript
Domain
ci-cd, devops, testing
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.