This commit is contained in:
@@ -56,3 +56,14 @@
|
||||
5. 定向测试验证批次去重、取消/超时、退避、状态保留和恢复;真实测试环境验证六接口及分页,不用静态响应或localStorage代替业务数据。故障注入仅验收失败路径,与真实成功请求证据分别记录。
|
||||
|
||||
官方依据:[web-vitals #792](https://github.com/GoogleChrome/web-vitals/issues/792)、[LiveMetrics注入](https://raw.githubusercontent.com/ChromeDevTools/devtools-frontend/main/front_end/models/live-metrics/LiveMetrics.ts)、[设置注册](https://raw.githubusercontent.com/ChromeDevTools/devtools-frontend/main/front_end/panels/timeline/timeline-meta.ts)。
|
||||
|
||||
|
||||
## 通知取消复核与前端构建模式补充(2026-09-08 22:35)
|
||||
|
||||
第三轮真实测试浏览器诊断确认一个独立发布缺陷:标准 prepare 的 NODE_ENV=test 使 Vite/React 插件选择开发运行时,实际线上 index-TLGANFcU.js 包含 19 处 react_stack_bottom_frame、2 处 jsx-dev-runtime,SHA-256 为 a8db74bfdb24ef0892ca77fee891297d492d07b979c8653d5fd7c86c186e080c。先前仅依据生产构建命令推断线上运行生产 React 的判断撤回,以实际下载产物为准。
|
||||
|
||||
18 次通知原生 signal abort 均在可见且在线文档中发生,耗时约 3.1~14ms、reason=AbortError,全部落在 JS 225:176295 的通知 effect cleanup;React 146:26427/25089 映射为删除树 passive unmount 清理及其递归遍历,不是 15 秒超时。已确认取消来自布局清理链,但不能进一步把每次清理都写成 StrictMode 双 effect,不能据此宣称另一台电脑历史 ERR_CONNECTION_CLOSED 已定位或根除。原六类通知 GET 的保值、退避、取消及会话设计保持。
|
||||
|
||||
最小修复为发布工具仅给前端 npm run build 显式 production 环境;新增 Vite build/configResolved 的 isProduction 守卫,在错误模式下拒绝产出发布包,不改变 serve/Vitest配置或后端接口。真实 test/development 模式两个构建负例已拒绝;Windows 工具 37 项中 35 通过、2 平台跳过。默认构建/lint 正在执行、Linux 新 37 项待返回,不提前记录通过。须以重新生成的正式候选及真实三尺寸、刷新/跨路由、通知六 GET 验收关闭本问题,不能修改浏览器错误过滤来代替正式包复测。
|
||||
|
||||
最终检查结果补记(2026-09-08 22:36):默认 npm run build 成功,npm run lint 退出码 0;两个真实 test/development 构建负例准确拒绝。Linux 新版工具 37/37 通过、0 失败/0 跳过,耗时 0.192s,日志 SHA-256 为 305e7df43ff9d6506a755fd8d5e0adb6926e5ee89eb719d8baa015c231a4060b,位于主 TEMP/release-linux-unit-buildmode-2026-09-08T14-34-37-205Z/linux-unittest.log。本结果补齐上文执行中的本地检查;正式候选及真实部署页面仍待验收。
|
||||
|
||||
@@ -310,3 +310,29 @@ Windows内置tar解压含中文路径的完整归档曾报Invalid empty pathname
|
||||
本次独立备份为测试/var/backups/cmpp-platform/night-risk-20260907T230742和预生产/opt/cmpp-platform-backups/night-risk-20260907T231021;前一轮失败备份目录不算恢复资产。旧API依赖及dist仍在各自/opt/cmpp-night-previous-时间戳,历史logs依赖继续保留。新审核记录和预留状态需结合业务恢复,不能把应用回退当作数据回退。
|
||||
|
||||
验收需同时读journald与应用append日志;本轮预生产journal无warning不能掩盖API文件内既有日报事务超时。在线回执可在备份与验收之间自动退款,遇到余额摘要变化应核对实际业务流水、消息和服务时间,不回写余额以强行制造摘要一致。测试安全代理缺少运行目录、预生产日报刷新超时作为独立遗留问题登记。
|
||||
|
||||
|
||||
## 2026-09-08 前端候选安全门禁依赖修复
|
||||
|
||||
标准 prepare 的 security:verify 使用 createRequire(api/package.json) 读取 API 本地依赖及 brace-expansion 兼容适配器。仅安装根 node_modules 的前端候选可能向上解析到根依赖,导致安全门禁阻断。现已调整为:impact.frontend 或 impact.api 任一成立时,在独立候选依次执行 npm ci --include=dev、npm --prefix api ci --include=dev,再进入 security:verify 与 deploy:verify;不跳过安全检查,不在运行目录手工安装依赖。
|
||||
|
||||
npm run prisma:generate、API 生产构建,以及线上 api/dist、api/node_modules 的切换仍仅由 impact.api 控制。前端变更为安全检查安装的候选 API 依赖不进入线上 API;不因此停止或重启 API/Worker。依赖安装或门禁失败不生成可部署的 candidateHash,后续 deploy 拒绝进入备份和切换。
|
||||
|
||||
原测试发布编号 20260908T134432-6816f5617819-b92bbb04 已由标准 status 核验停在 prepare,backup=null,尚未备份、停服或切换。工具修复改变 toolHash,须重新生成绑定新摘要的计划并执行 fresh preflight,不修改旧计划或复用失效现场检查;原失败候选和日志保留。
|
||||
|
||||
本次补充 4 项发布工具隔离回归:Windows 共 35 项,33 通过、2 项因符号链接权限与 Linux flock 平台限制跳过;Linux 35/35 通过且临时测试夹具残留 0。Linux 日志 SHA-256 为 77106f006cf22ea33c3b744c9c7cbf43d3885b32f4c6d71d8d00b49b1578e900;日志和补丁见本机 %TEMP%/cmpp-starttime-pagination-20260908。隔离测试使用真实临时归档、文件摘要和目录切换,外部命令受控替身仅用于测试,不替代真实发布验收。
|
||||
|
||||
授权变更记录:用户随后明确授权先完成测试环境验收,再推送本轮提交并发布预生产;此前“仅测试部署、不推送、不预生产”的表述保留为历史阶段边界。本节记录时业务提交 6816f5617819546850b1188508eda37866f4ca3c 已本地提交、尚未推送;修复工具仍属受保护的未跟踪文件,不据此纳入整套既有发布工具或其他脏文件。后续两环境执行与验收分别追加。
|
||||
|
||||
|
||||
## 2026-09-08 22:35 前端正式构建模式修复
|
||||
|
||||
测试环境实际下载的 /assets/index-TLGANFcU.js(SHA-256:a8db74bfdb24ef0892ca77fee891297d492d07b979c8653d5fd7c86c186e080c)含 react_stack_bottom_frame 与 jsx-dev-runtime。标准 prepare 把全部命令 NODE_ENV 设为 test;Vite 以 NODE_ENV===production 判断 isProduction,React 插件沿用该值,因此此前名为 build 的发布产物实际包含开发版 React。必须核验最终产物,不能只凭执行 vite build 推断生产运行时。
|
||||
|
||||
本次工具最小修复仅为前端 npm run build 复制独立命令环境并显式设置 NODE_ENV=production;安装、安全/部署门禁、API 的生成/构建仍保持原环境,既有依赖前置与组件切换范围不变。vite.config.ts 同时增加 apply: build 的 configResolved 守卫:isProduction 为假立即拒绝构建,防止其他构建入口再次产出开发版发布包;serve 与 Vitest 不应用该 build 守卫。
|
||||
|
||||
真实观测的 18 次通知信号取消发生于可见、在线页面,elapsed 约 3.1~14ms,均为 AbortError 且栈落在 225:176295 的通知 effect cleanup,不是 15 秒 TimeoutError。146:26427 对应 React 的 commitPassiveUnmountEffectsInsideOfDeletedTree_begin,146:25089 对应递归 passive unmount;这是删除树清理路径,不能直接认定所有取消都是 StrictMode 双 effect,也不是另一台电脑 ERR_CONNECTION_CLOSED 的已证实根因。修正正式包后须重新验证资源模式和真实刷新/切页/通知行为。
|
||||
|
||||
截至本节,NODE_ENV=test、development 两个真实负例均被新守卫拒绝;默认构建和 lint 正在执行,尚未记为通过。工具 Windows 共 37 项,35 通过、2 项平台限制跳过;新增版本 Linux 37 项结果待返回。新工具摘要和新增 Vite 配置要求重新生成绑定精确提交的计划、执行对应证据与 fresh preflight;本节不表示新版本已部署或业务已验收。证据位于 %TEMP%/cmpp-starttime-pagination-20260908 的 live-react-mode-evidence.json、release-build-mode-fix.patch、build-mode-test.log、build-mode-development.log 及第三轮 browser 目录。
|
||||
|
||||
最终检查结果补记(2026-09-08 22:36):默认 npm run build 成功,npm run lint 退出码 0;两个真实 test/development 构建负例准确拒绝。Linux 新版工具 37/37 通过、0 失败/0 跳过,耗时 0.192s,日志 SHA-256 为 305e7df43ff9d6506a755fd8d5e0adb6926e5ee89eb719d8baa015c231a4060b,位于主 TEMP/release-linux-unit-buildmode-2026-09-08T14-34-37-205Z/linux-unittest.log。本结果补齐上文执行中的本地检查;正式候选及真实部署页面仍待验收。
|
||||
|
||||
@@ -5284,3 +5284,31 @@ OPS0908-01至07已按本轮范围验证;精确证据见testing-progress.md对
|
||||
| OPS-NOTIFY0908-04 | 在途时隐藏页面/离线/锁屏/卸载,然后恢复可用状态 | 请求/计时器正确取消,旧响应不回写;恢复按调度刷新;现有401/权限/会话规则保持 |
|
||||
| OPS-BROWSER0908-01 | Chrome152 F12报startTime时记录VM源码及执行上下文,对照DevTools软导航采集设置开/关并刷新切页 | 区分应用脚本与DevTools Performance Metrics;仅当实际A/B通过才记规避有效,不全局过滤异常;没有现场证据则记待验证 |
|
||||
| OPS-BROWSER0908-02 | 连接关闭时对照同时间浏览器Network、源站access/error、API及Cloudflare链路 | 记录失败请求是否到达源站、协议/时间/状态;不能把匿名401或稍后正常当成历史故障已根除,不无依据关闭HTTP2或修改业务配置 |
|
||||
|
||||
|
||||
### 标准发布前端候选安全依赖回归(2026-09-08)
|
||||
|
||||
本组验证候选依赖前置条件和既有组件切换边界;隔离命令替身仅用于故障测试,不代替真实安全门禁、现场 preflight 或业务验收。
|
||||
|
||||
| 编号 | 场景/步骤 | 预期 |
|
||||
| --- | --- | --- |
|
||||
| REL-PREP0908-01 | 仅前端变更,从真实临时归档 prepare;安全检查要求候选 API 本地依赖,再执行受控 deploy | 根 npm ci、API npm ci 先于 security:verify/deploy:verify;不显式生成 Prisma、不构建 API。前端产物更新,线上 api/dist/api/node_modules 摘要不变,无 API 目录切换或服务重启命令 |
|
||||
| REL-PREP0908-02 | 仅 API 变更,记录候选依赖、生成、门禁与构建顺序 | 根与 API npm ci 各执行一次,之后显式 Prisma 生成、security:verify、deploy:verify、API build;没有遗漏安全门禁或误跑前端构建 |
|
||||
| REL-PREP0908-03 | 前端候选的 API npm ci 注入失败,随后尝试 deploy | prepare 记录失败,未进入 security:verify,不产生 candidateHash,线上应用摘要不变;deploy 在备份/现场切换前拒绝 |
|
||||
| REL-PREP0908-04 | 前端候选依赖安装成功,security:verify 注入失败,随后尝试 deploy | 不执行后续 deploy:verify 或构建,不产生 candidateHash,线上应用摘要不变;deploy 拒绝进入备份、停服和切换,不绕过安全门禁 |
|
||||
|
||||
本次执行:上述 4 项均通过;发布工具全量 Windows 35 项中 33 通过、2 项平台限制跳过,Linux 35/35 通过,Linux 日志 SHA-256 为 77106f006cf22ea33c3b744c9c7cbf43d3885b32f4c6d71d8d00b49b1578e900。原测试发布 20260908T134432-6816f5617819-b92bbb04 仅 prepare 失败、backup=null,未切换。用户后续授权的“测试验收后推送、再发布预生产”须分别完成真实验收,不能依据本组隔离测试直接判定发布完成。
|
||||
|
||||
|
||||
### 正式前端构建模式与取消归因回归(2026-09-08 22:35)
|
||||
|
||||
| 编号 | 场景/步骤 | 预期与当前执行状态 |
|
||||
| --- | --- | --- |
|
||||
| REL-BUILD0908-01 | prepare 分别处理前端/API 影响,逐条记录命令 NODE_ENV,父进程预设 development | 仅前端 npm run build 为 production;安装、门禁与 API 生成/构建仍为 test,父进程保持 development。工具新增隔离回归已通过 |
|
||||
| REL-BUILD0908-02 | 前端构建命令注入失败,随后尝试 deploy | prepare 失败,不进入后续 style 等门禁,不产生 candidateHash,deploy 在备份/切换前拒绝;工具新增回归已通过 |
|
||||
| REL-BUILD0908-03 | 真实 Vite build 分别设置 NODE_ENV=test、development,再运行默认正式构建 | 两个错误模式被 apply: build/configResolved isProduction 守卫拒绝,错误清楚且不放宽门禁;两个真实负例已拒绝,默认构建与 lint 仍在执行,待追加结果。守卫不应用 serve/Vitest |
|
||||
| OPS-NOTIFY0908-05 | 下载实际发布 JS 核验模式,再采集快速切页/刷新时的 signal.reason、耗时、文档和调用栈 | 生产包不得包含开发 React/JSX 运行时;区分 15 秒超时、布局清理和浏览器导航取消,不把 ERR_ABORTED 一律当网络故障或一律忽略。旧包已确认 18 次可见在线的 3.1~14ms AbortError 均落 effect cleanup;正式包尚待真实复测 |
|
||||
|
||||
旧包 SHA-256:a8db74bfdb24ef0892ca77fee891297d492d07b979c8653d5fd7c86c186e080c,cleanup 位置 225:176295;React 146:26427/25089 为删除树 passive unmount 链,不等同于确证全部 StrictMode 双 effect,也不证明历史 ERR_CONNECTION_CLOSED 根因。工具本次 Windows 37 项中 35 通过、2 平台限制跳过;Linux 新 37 项待回报。
|
||||
|
||||
最终检查结果补记(2026-09-08 22:36):默认 npm run build 成功,npm run lint 退出码 0;两个真实 test/development 构建负例准确拒绝。Linux 新版工具 37/37 通过、0 失败/0 跳过,耗时 0.192s,日志 SHA-256 为 305e7df43ff9d6506a755fd8d5e0adb6926e5ee89eb719d8baa015c231a4060b,位于主 TEMP/release-linux-unit-buildmode-2026-09-08T14-34-37-205Z/linux-unittest.log。本结果补齐上文执行中的本地检查;正式候选及真实部署页面仍待验收。
|
||||
|
||||
@@ -4780,3 +4780,25 @@ git diff --check
|
||||
|
||||
- 本地实现完成:分页2文件、通知布局/调度/API透传共8文件,所有业务调用仍为原六GET。通知定向18项通过;分页与关联页面18项通过。全量前端25文件132项通过(21:36:08,45.74秒)。首轮类型检查抓到分页测试误用了Playwright的exact参数,已删除两处不属于Testing Library的参数,字符串名称仍默认精确匹配,分页4项重跑通过;随后完整lint(含TypeScript/结构/CSS)、format:check、生产build、bundle:verify、security:verify、deploy:verify均通过,git diff --check通过。未修改后端、数据库、Gateway或CSS,无本轮API/Go测试需求;真实页面待测试发布后验收。
|
||||
- 独立代码复审无阻断:覆盖单批/退避/超时部分成功、隐藏离线/锁定/卸载/身份失效和StrictMode。首次未知保留现有数字占位,但明确显示加载/未取得结果;六类失败均保留既有真实计数,不伪装正常零。实际signal→fetch测试使用测试隔离,单独标记,不当作业务验收。质量证据quality-results.json及各-final.log保存于本轮TEMP目录。
|
||||
|
||||
|
||||
## 2026-09-08 22:03 标准 prepare 前端候选依赖修复与授权更新
|
||||
|
||||
- 现场阻断:测试发布 20260908T134432-6816f5617819-b92bbb04 的前端候选只执行根 npm ci,security:verify 通过 createRequire(api/package.json) 校验 API brace-expansion 适配器时缺少本地依赖而向上解析错误版本。主线程先用标准 status 取得 phase=prepare、backup=null;没有备份、停服或切换,原失败候选保留。
|
||||
- 最小修复:tools/release/remote.py 仅将候选 API npm ci 移入 frontend 或 api 条件;显式 Prisma 生成、API 构建和线上 API 产物/依赖切换仍只在 api 影响范围内执行。没有修改 security:verify、跳过门禁、手工修补线上依赖或替换标准编排。tools/release/test_release.py 仅追加 Preparation 的 4 项回归,两工具文件保留原未跟踪状态,未暂存、未提交整套既有第一期工具。
|
||||
- 先失败后修复:新增测试在旧实现上复现前端候选缺 API 依赖及安装失败场景断言失败;修复后 Windows 标准 self-test 共 35 项,33 通过、2 项分别因符号链接权限与 Linux flock 限制跳过。测试以真实临时 tar、文件摘要和目录切换核验前端部署不改变线上 API 目录,不调用服务命令;受控命令替身只用于隔离失败场景。
|
||||
- Linux 隔离验证于 22:00:38 返回 exitCode=0,35/35 通过,临时夹具残留 0;Linux 日志 SHA-256 已回读核验为 77106f006cf22ea33c3b744c9c7cbf43d3885b32f4c6d71d8d00b49b1578e900。本地 dependency mitigation、security deployment、deploy verifier 通过;两 Python 文件解析和尾随空白检查通过。未修改 JS/Shell,因此未把未执行的对应语法或格式检查记为通过。
|
||||
- 证据:%TEMP%/cmpp-starttime-pagination-20260908/release-prepare-before.log、release-prepare-after.log、release-prepare-fix.patch、release-linux-unit/result.json、release-linux-unit/linux-unittest.log。用例 REL-PREP0908-01~04 已追加,候选安装与线上切换边界同步部署/工具设计文档。工具摘要变化使旧计划失效,后续使用新计划、匹配精确提交的已执行验证证据和 fresh preflight;发布与业务验收另记,不以隔离测试冒充上线。
|
||||
- 最新授权:用户已明确允许测试环境验收通过后推送本轮提交并部署预生产,取代本轮早先仅本地提交与测试部署的后续执行限制;此前文字继续保留为历史事实。记录时 6816f5617819546850b1188508eda37866f4ca3c 仅本地提交、未推送,预生产尚未执行本轮发布。授权不包含其他既有脏文件、短信发送/补发/重投/重新入队、余额/客户/通道配置或恢复管理员。
|
||||
|
||||
|
||||
## 2026-09-08 22:35 测试前端开发运行时实证与构建模式修复
|
||||
|
||||
- 新证据纠正此前推断:只读下载测试实际 /assets/index-TLGANFcU.js,SHA-256 a8db74bfdb24ef0892ca77fee891297d492d07b979c8653d5fd7c86c186e080c,包含 19 处 react_stack_bottom_frame 和 2 处 jsx-dev-runtime。remote.prepare 统一 NODE_ENV=test;本地对应 Vite 以 NODE_ENV===production 决定 isProduction,React 插件沿用该值,确认发布过程实际产出了开发版 React,不能用“执行过 build”替代资源模式核验。
|
||||
- 第三轮 browser/run-2026-09-08T14-27-36-420Z/fetch-diagnostics.ndjson 中 18 次 fetch-signal-abort 均可见在线,耗时约 3.1~14ms、reason=AbortError,全部经过 JS 225:176295 的通知 effect cleanup。146:26427 对应 commitPassiveUnmountEffectsInsideOfDeletedTree_begin,146:25089 对应递归 passive unmount 遍历;不是 15 秒 TimeoutError,不是已逐项证实的 StrictMode 双 effect。确认存在开发包与布局卸载取消链,不宣称它解释另一台电脑历史 ERR_CONNECTION_CLOSED;正式包行为须重测。
|
||||
- 工具最小修复:仅前端 npm run build 使用复制的 NODE_ENV=production 命令环境,其他安装/门禁/API 生成构建保留 test,父进程不污染;原 API 安全依赖补丁保留。主线程新增 vite.config.ts 的 cmpp-production-build-guard,apply: build、configResolved 检查 isProduction,非 production 明确失败,不应用 serve/Vitest。没有修改通知业务计数口径、全局错误过滤或后端端口。
|
||||
- 已执行:环境回归在旧实现明确失败(test != production),修复后 Windows 标准 self-test 37 项中 35 通过、2 项因符号链接权限与 Linux flock 限制跳过;包含新环境隔离与前端构建失败阻断回归。真实 NODE_ENV=test、development 两个 Vite 负例均由新守卫拒绝。默认构建、lint 当前正在执行,Linux 新 37 项结果待其他执行任务返回;本节不提前记录通过,也不复用前一版 Linux 35/35 充当本版结果。
|
||||
- 证据:主 TEMP/cmpp-starttime-pagination-20260908 下 index-TLGANFcU.live.js、live-react-mode-evidence.json、release-build-mode-fix.patch、release-build-mode-before.log/after.log、build-mode-test.log、build-mode-development.log,以及第三轮 fetch-diagnostics.ndjson。两 Python 文件语法与尾随空白检查已通过。工具仍未跟踪、未暂存;Vite 配置及最终版本/测试/标准发布结果由主线程后续精确提交与追加。
|
||||
- 待验收:新候选生产运行时、真实分页/三尺寸/刷新/切页/六通知请求与故障恢复,及授权顺序内的测试验收后推送、预生产独立发布。新工具摘要和配置改变后使用匹配精确提交的新计划及 fresh preflight,不把旧包只读观测或本地负例视为正式包业务完成。
|
||||
|
||||
最终检查结果补记(2026-09-08 22:36):默认 npm run build 成功,npm run lint 退出码 0;两个真实 test/development 构建负例准确拒绝。Linux 新版工具 37/37 通过、0 失败/0 跳过,耗时 0.192s,日志 SHA-256 为 305e7df43ff9d6506a755fd8d5e0adb6926e5ee89eb719d8baa015c231a4060b,位于主 TEMP/release-linux-unit-buildmode-2026-09-08T14-34-37-205Z/linux-unittest.log。本结果补齐上文执行中的本地检查;正式候选及真实部署页面仍待验收。
|
||||
|
||||
Reference in New Issue
Block a user