chore(dashboard): ship the rebuilt chat bundle for team plan confirmation - #4548
Merged
Merged
Conversation
…tion The dashboard chat bundle at `loopx/web/chat` is tracked in the repository, so the source change that lets an owner confirm a validated steward team plan (#4547) is not shipped until that bundle is rebuilt. This rebuilds it with `npm run build:chat` and publishes the new generation. The rebuilt bundle contains the `team.plan` action kind the transport now accepts, so the shipped chat surface can render a team preview card instead of failing to parse it. Retention stays bounded: the manifest keeps the new entry plus the previous generation, and the older generation's JavaScript is removed. Validated with `python3 examples/dashboard-pwa-bundle-smoke.py`, which checks the index/manifest contract and the bounded chat asset retention, after the rebuild. Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
huangruiteng
commented
Sep 16, 2026
huangruiteng
left a comment
Collaborator
Author
There was a problem hiding this comment.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
Reviewed exact head: c71a884a9e5269aef2f28a3e7d20185a0253297f
English verdict: APPROVE
动机
loopx/web/chat 是随仓库提交的打包产物:Dashboard chat 面就是从这里出货的,所以只改源码并不能让任何人的产品里有这个改动。#4547 把 team.plan 加进了传输 schema 并接上了确认卡片,但把本机安装提升后回读发现:已打包的 chat bundle 里根本没有 team.plan。也就是说确认面会"源码里有、产品里没有"——这正是 AGENTS.md 要求"打包前端也要验证"的原因。
改动思路
- 用仓库自己的构建入口重建(
npm run build:chat),不手改产物; - 保持 bounded retention 契约:manifest 保留新 generation + 上一代,旧一代 JS 删除(
asset-retention.json一增一删); - 构建后用仓库既有的 PWA/保留策略 smoke 校验,并在 git 对象层回读新 bundle 是否真的含该 kind。
具体改动
loopx/web/chat/index.html:入口指向新 asset。loopx/web/chat/assets/index-Bv3vTPKb.js:新构建产物(git show HEAD:... | grep -c 'team\.plan'→ 2);assets/index-BreEWoWw.js按保留策略删除。loopx/web/chat/asset-retention.json:两代保留记录更新。
对主干的风险
- 纯生成物:不含任何手工编辑的源码或行为变化,内容由
npm run build:chat产生,可重复生成。 - 保留策略未被破坏:仍只保留两代(上一代 JS 已删),
dashboard-pwa-bundle-smoke的 bounded retention 断言通过;不会让打包目录无限增长。 - 体积:bundle 仍是单 chunk(构建器给出 >500kB 的既有警告,本改动不改变这一点,也没有引入代码分割这种额外结构性变化)。
- 未做:没有做浏览器级点击验收;本条只负责让已合并的源码改动真正出货。合并后会把本机安装再提升一次,并通过 HTTP 回读被服务的 chat asset 确认它含该 kind。
我的整体评价
正向且 proportional:3 个文件、纯产物更新,修的是"源码已合并但产品未出货"这一真实断点,而不是追加功能。
验证:python3 examples/dashboard-pwa-bundle-smoke.py 通过;canary premerge 通过(唯一 advisory 为已知基线 maintainability ratchet);git 对象层回读确认新 bundle 含 team.plan。
作为作者自有 PR,GitHub 不允许正式 self-approve,故以本 COMMENTED review 作为放行结论。
This was referenced Sep 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
loopx/web/chatis a git-tracked bundle: the dashboard chat surface ships from it, so a source-only change does not reach anyone until the bundle is rebuilt. #4547 addedteam.planto the transport schema and the proposal card, but a readback after promoting the local install showed the shipped bundle still contained noteam.plan— the confirmation surface would have been live in source and dead in the product.What
npm run build:chat.loopx/web/chat/index.htmlnow references the new entry;loopx/web/chat/assets/index-Bv3vTPKb.jscontains theteam.plankind (verified:git show HEAD:loopx/web/chat/assets/index-Bv3vTPKb.js | grep -c 'team\.plan'→2).asset-retention.json, one deletion, one addition).Verification
python3 examples/dashboard-pwa-bundle-smoke.py—dashboard-pwa-bundle-smoke ok(index/manifest contract plus bounded chat asset retention).loopx canary premerge --from-git-diff— passed: diff hygiene clean, catalog canaries including the semantic-vocabulary and frontstage projection smokes; one advisory (the known baseline maintainability ratchet).Scope
Generated bundle only; no source or behavior change beyond shipping what #4547 already merged.