Skip to content

ci(frontstage): run personal workspace browser smokes - #5409

Merged
huangruiteng merged 1 commit into
mainfrom
codex/fix-operation-gated-smoke
Oct 2, 2026
Merged

huangruiteng merged 1 commit into
mainfrom
codex/fix-operation-gated-smoke

Conversation

@Duang777

@Duang777 Duang777 commented Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • run Frontstage Pages when the Personal Workspace browser smoke entrypoint changes
  • run it when any Personal Workspace browser scenario changes
  • keep the PR to one signed-off workflow commit on main@8fdc1616

Why

Frontstage Pages runs the packaged Personal Workspace browser smoke, but its path filters excluded the smoke entrypoint and scenario directory. A scenario-only change could therefore break the packaged browser flow without starting the workflow that owns it.

The typed-action fixture repair that originally exposed this gap is already on main through #5266, so no duplicate fixture code remains in this PR.

Validation

  • npm run build:chat
  • LOOPX_PERSONAL_WORKSPACE_SCENARIO=chat-todo-proposal npm run smoke:personal-workspace-packaged
  • npm run smoke:personal-workspace-packaged (32 browser scenarios)
  • git diff --check
  • prior Frontstage run 36853508330 passed after these path filters were added

Known baseline

tests/test_chat_operation_actions.py::test_browser_operation_fixture_needs_no_test_framework on current main still expects the old operation fixture list. #5418 contains the isolated assertion update; it is intentionally not duplicated here.

Signed-off-by: duanjialing.777 duanjialing.777@bytedance.com

@mergify

mergify Bot commented Oct 1, 2026

Copy link
Copy Markdown

This pull request has merge conflicts with main and cannot be merged
until they are resolved. Please rebase or merge the base branch, @Duang777.

Choose the remote for the base repository, not an out-of-date fork.
For a fork clone, first inspect git remote -v; upstream must point
to https://github.com/loopx-project/loopx.git. If it is absent, add it
with git remote add upstream https://github.com/loopx-project/loopx.git.
Then run:

git fetch upstream
git rebase upstream/main
# Resolve each conflict, git add the resolved files, then git rebase --continue.
git push --force-with-lease origin HEAD

For a same-repository clone whose origin points to
https://github.com/loopx-project/loopx.git, use origin instead of
upstream for fetch/rebase. If you prefer merging the base, use
git merge <base-remote>/main and push normally.

Keep the DCO Signed-off-by trailer on every commit when you rebase.
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork

@mergify mergify Bot added the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Oct 1, 2026
@Duang777

Duang777 commented Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator Author

Final update for 8c9f25c5b37017935ea98f6fdac7fcd10e18ca53:

  • huangruiteng approved the exact head and merged it on 2026-10-02 at 18:55:17 UTC.
  • Merge commit: f6e04098529c2352b3cba9661669152be9f2a822. It was the current main head when rechecked.
  • The merge commit changes only .github/workflows/frontstage-pages.yml, with the expected four path-filter additions.
  • DCO, Dependency Review, Frontstage Pages, Python change classification, and Mergify Summary succeeded. The Frontstage deploy and Node forward-compatibility jobs were skipped as expected for this pull request.
  • The Python chat-bundle and node-minimum-compatibility jobs remain queued after the merge. The preceding feature-identical head passed both, and local build:chat, source verification, and all 37 packaged Personal Workspace browser scenarios passed.
  • GitHub deleted the remote feature branch after merge.

No merge action was taken by the author. No uv.lock file was changed.

@Duang777
Duang777 force-pushed the codex/fix-operation-gated-smoke branch from 092fd58 to f8cac93 Compare October 1, 2026 15:26
@Duang777 Duang777 changed the title test(dashboard): align operation smoke with delivery state ci(frontstage): run personal workspace browser smokes Oct 1, 2026
@mergify mergify Bot removed the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Oct 1, 2026
@Duang777
Duang777 force-pushed the codex/fix-operation-gated-smoke branch 4 times, most recently from 5b08686 to 4740162 Compare October 2, 2026 18:15
Signed-off-by: duanjialing.777 <duanjialing.777@bytedance.com>
@Duang777
Duang777 force-pushed the codex/fix-operation-gated-smoke branch from 4740162 to 8c9f25c Compare October 2, 2026 18:35

@huangruiteng huangruiteng left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent | GPT-5 | OpenAI

动机

结论:APPROVE exact head 8c9f25c。提交前发现 head/base 更新,未发布旧 02a7418 结论;以下完整差异和本地对照均重新取自当前不可变 head/base。整份 PR 解决一个明确的维护缺口:打包前端验证已经调用 personal-workspace 浏览器入口及其场景,但只改这些验证源文件时,原有工作流路径筛选不会触发。补齐筛选让真实使用中的测试改动进入已有验证链,不新增产品能力,也不把测试数量当交付成果。

改动思路

沿用 .github/workflows/frontstage-pages.yml 的既有 pull_request 与 main push 路径白名单,各加入场景目录和入口脚本;不另建工作流、不扩大为 examples/**。两事件必须分别声明,目录通配不能覆盖位于目录外的同名前缀入口。不存在本 PR 专用的已接受 RFC;以不可变 base 760f039 的实际工作流、已调用的打包 smoke 及 GitHub 路径筛选契约确定预期,不把提交后输出作为 oracle。

具体改动

完整差异只有一个 YAML 文件,+4/-0。新增行位于 :33–34 与 :76–77:examples/personal-workspace-browser/** 覆盖已有场景及未来子目录,examples/personal-workspace-browser-smoke.mjs 精确覆盖外部入口。正路:这两类源修改在两种事件的路径条件均从未匹配变成匹配;负路:相邻同名前缀目录、入口的 .bak 文件及无关租约测试仍不匹配。branch=main 的 push 门槛和 pull_request 不部署的条件继续有效。

关键代码讲解

  1. on.pull_request.paths(.github/workflows/frontstage-pages.yml:33):在原筛选中加入两个真正被 job 消费的来源;只决定现有验证工作流是否入选,不授予 PR 部署权限。路径规则来自 GitHub workflow syntax:至少一条路径匹配即可入选,** 可跨目录,且 branch/path 条件须同时满足。
  2. on.push.paths(同文件 :76):补齐相同来源,但保留 branches: main,不把任意分支 push 变成部署入口;不存在匹配时原有不触发行为保留。
  3. smoke:personal-workspace-packaged(apps/presentation/dashboard/package.json:41,未修改):已有 build/验证链最终调用浏览器入口;入口 :38 导入 teamEvidenceScenario、:64 纳入 scenarioCatalog。调用链证明新增筛选不是未使用的目录或未来脚手架。此 PR 没改浏览器断言或场景生产数据。

对主干的风险

独立本地 oracle 读取上述不可变 base 和 exact head 的 YAML,验证 10 类路径 × 2 个事件,共 20 项;六个漏触发输入在 base 为 false、head 为 true,既有命中和无关输入保持不变。删除 head 恰好新增的四个路径条目后,完整 YAML 对象与 base 相等,覆盖 jobs、permissions、concurrency、schedule、workflow_dispatch 及 PR 部署 fence。路径模拟仅覆盖所列模式,不冒充 GitHub Actions 的实机触发验证。

源码原生验证:uv run --extra test python -m pytest -q tests/test_python_ci_workflow.py tests/test_chat_operation_actions.py,331 passed;git diff --check 通过。未查询、轮询或等待远端 CI,也未 dispatch Actions、触发部署或使用凭据。变更有意让此前遗漏的测试源修改多跑已有验证,因此成本是这些修改的原有 job 运行,不是默认新增工具调用或扩大 secret 权限。其他路径、产品行为和前端产物未改,不要求为这四行重新资格化整个浏览器产品旅程。

我的整体评价

无阻塞 finding。新增筛选与真实调用来源一致,范围窄且可通过四行回滚,未建立第二个决策 owner。未来方向检查:这里两事件各自的路径列表是 GitHub 工作流语法,不值得为四条来源新增生成器、TS 层或新 CI 抽象;继续复用现有打包 job 即可。最强未测边界是 GitHub 托管 runner 的实际事件投递,不宣称本地对照已经运行了远端 Actions 或全浏览器套件;它不构成本次路径规则修复的本地证据缺口。批准后独立读回旧阻塞状态,只有满足 capability closeout 的旧评审才可撤销;未合并。

English verdict: APPROVE - 8c9f25c adds only the missing active browser-smoke source filters; independent current base/head path checks preserve existing selection and deployment fences, and 331 repository-native local tests pass.

@huangruiteng
huangruiteng merged commit f6e0409 into main Oct 2, 2026
5 checks passed
@huangruiteng
huangruiteng deleted the codex/fix-operation-gated-smoke branch October 2, 2026 18:55
@Duang777

Duang777 commented Oct 2, 2026

Copy link
Copy Markdown
Collaborator Author

The post-merge Windows failure is unrelated to this PR's workflow path-filter change. The failing handoff migration cases hit a direct parent-directory fsync in authority archive publication, which Windows rejects with EPERM. Follow-up #5491 reuses the existing cross-platform directory sync helper and is awaiting CI/review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants