From b3a1305e46aa5d27af5de24c698366dc10e82091 Mon Sep 17 00:00:00 2001 From: weichen Date: Sat, 19 Sep 2026 13:35:52 +0000 Subject: [PATCH] docs(test): record twenty-run slow-network login and app restart The rebuilt bundle stays under the draft login budgets on this machine. Restart-to-health is under half a second, and the wider restart matrix is still open. Co-authored-by: Cursor --- .doc/ops/CURRENT.md | 2 +- .../long-term/2026-09-19-audit-remainder.md | 2 +- ...19-initial-load-u1-baseline-test-report.md | 4 +- .../throttled-schema53-n20.json | 242 ++++++++++++++++++ 4 files changed, 246 insertions(+), 4 deletions(-) create mode 100644 .doc/test-reports/assets/2026-09-19-initial-load-u1/throttled-schema53-n20.json diff --git a/.doc/ops/CURRENT.md b/.doc/ops/CURRENT.md index 6d27bae9..e026fce3 100644 --- a/.doc/ops/CURRENT.md +++ b/.doc/ops/CURRENT.md @@ -149,7 +149,7 @@ | holder | phase | since | scope | queue | |--------|-------|-------|-------|-------| -| Cursor-Auto | audit-remainder-closeout | smoke | 2026-09-19 | 二次 rebuild:恢复 00001/00012 校验和后的镜像 | - | +| - | idle | 2026-09-19 | dev schema 53 已验收 health。`TestArchitectureBoundaries` 6 条新 import 另记,不占槽 | - | **phase**: `idle` | `merging` | `smoke` | `e2e` diff --git a/.doc/ops/long-term/2026-09-19-audit-remainder.md b/.doc/ops/long-term/2026-09-19-audit-remainder.md index 083eca6d..c3f6c88f 100644 --- a/.doc/ops/long-term/2026-09-19-audit-remainder.md +++ b/.doc/ops/long-term/2026-09-19-audit-remainder.md @@ -49,7 +49,7 @@ updated: 2026-09-19 | FE App.tsx | 部分。登录壳不再静态引用重模块。本地缓存、登录同步、文档补水、服务端文档同步、生命周期、发送消息、块编辑、对话流/任务流重试、卡片动作、立项和成员写操作已分别抽出。工作台壳仍在 `App.tsx` | | H1-del | 关闭理由:`allowLegacyTestPrincipal` 仍被 `AllowInMemory && ContextDbHost==""` 的 dev/test 内存测试使用。删除会把这批测试变成未登录 401。保留告警,删除另开、先改测试夹具 | -仍开放:rdev P3 三样本真 PI、首次加载 U1 的 20 次分位数、U7 重启矩阵、工作台壳继续拆出 `App.tsx`。dev 容器已在 `fix/audit-remainder-closeout` 重建:goose 53,表 `document_content_projections` 存在,入口 `index-DOO0-Yh7.js`。U4 在该包上 n=5 为成员 1、会话列表 1。U3 首屏资源无 katex/mermaid/docx,匿名 JS 传输 172,417 B。U6 关闭理由:瓶颈是成员扇出,重建后已消失,没有对应慢 SQL,不加索引。H2 HTTP 负例:`TestDocGovCommentsAndAudit_NonMemberIs403_PG` 在隔离库 `127.0.0.1:5436` PASS。慢网 n=3 已低于拟定预算,但不足 20 次,U1 不关。test/main 仍是 schema 52,本轮不晋升。 +仍开放:rdev P3 三样本真 PI、U7 的 Vite/依赖重启矩阵、`App.tsx` 里的 `AppShell` 接线。文档栏已拆到 `DocumentPane`。dev schema 53。U4 n=5 为成员 1、会话 1。U1 慢网 n=20(CPU 4 倍,并阻断 Google 字体):10 Mbps 表单可见 p75 559 ms,2 Mbps p75 1279 ms,都低于拟定 1.5 s / 3 s;这是本机 CDP 抽样,不是公网 SLO。U7 仅 app 重启 5 次到 health:0.433–0.463 s,未覆盖 Vite 与整组依赖。U6 仍不加索引。H2 `TestDocGovCommentsAndAudit_NonMemberIs403_PG` 已在隔离库 PASS。`go test -short` 的 `TestArchitectureBoundaries` 仍有 6 条新 import(intent/squad/template → workflowdef),不是本轮容器改动,槽位不因此一直占着。test/main 仍是 schema 52。 红线关闭(不是实现): diff --git a/.doc/test-reports/2026-09-19-initial-load-u1-baseline-test-report.md b/.doc/test-reports/2026-09-19-initial-load-u1-baseline-test-report.md index e43a8f55..66ef722d 100644 --- a/.doc/test-reports/2026-09-19-initial-load-u1-baseline-test-report.md +++ b/.doc/test-reports/2026-09-19-initial-load-u1-baseline-test-report.md @@ -17,7 +17,7 @@ - 入口 B:本仓 Vite `http://127.0.0.1:3100`,API 代理到 8080。 - 账号:容器环境变量中的管理员,不写入报告。 - 用例:`web/e2e/initial-load-performance.spec.ts`。每次新 context,不发送聊天消息。 -- 未覆盖:每场景 20 次的分位数、字体黑洞单独对照、U7 重启矩阵。n=3 的慢网结果只作诊断,不能关预算。 +- 重建后补测:8080 慢网 n=20 见第五节。仍未覆盖:热缓存对照、字体黑洞单独对照、3100/8081、U7 的 Vite 与依赖一起启动。 ## 四、 预期结果 (Expected Results) @@ -48,7 +48,7 @@ workbenchReadyMs 181 ``` - **评价判定 (Evaluation / Verdict)**:PASS(探针与 U4 源码行为)。Vite 20/20 为成员项目 1、会话列表 1,重模块未进首屏。FAIL(关账):8080 旧包仍 704/30;慢网与重启未测;Vite 170 请求 / 6.9 MB 是开发模式,不套生产体积预算。 -- **性能与耗时 (Duration & Latency)**:20 次 Vite 登录工作台就绪 118–152 ms(本机、无带宽限制,不是预算验收)。8080 慢网 n=3、CPU 4 倍、并阻断 Google 字体域名:10 Mbps 登录表单可见 1169/1207/1238 ms;2 Mbps 为 3358/3424/3407 ms。登录点击到工作台约 328–373 ms,因为静态资源已在匿名导航中取完。2 Mbps 表单可见超过拟定 3 s 预算,且样本不足 20,不关 U1。 +- **性能与耗时 (Duration & Latency)**:20 次 Vite 登录工作台就绪 118–152 ms(本机、无带宽限制,不是预算验收)。重建后 8080 慢网 n=20、CPU 4 倍、阻断 Google 字体:10 Mbps 登录表单可见 p75 559 ms(p95 570);2 Mbps p75 1279 ms(p95 1289)。登录点击到工作台 p75 约 334–340 ms。这两项低于拟定 1.5 s / 3 s,但是本机 CDP 抽样。仅 app 容器重启 5 次到 `/health` 为 0.433–0.463 s,不是完整 U7 矩阵。 证据:[assets/2026-09-19-initial-load-u1/](assets/2026-09-19-initial-load-u1/)。 diff --git a/.doc/test-reports/assets/2026-09-19-initial-load-u1/throttled-schema53-n20.json b/.doc/test-reports/assets/2026-09-19-initial-load-u1/throttled-schema53-n20.json new file mode 100644 index 00000000..07c2e8a0 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-19-initial-load-u1/throttled-schema53-n20.json @@ -0,0 +1,242 @@ +[ + { + "profile": "10mbps-cpu4", + "sample": 1, + "anonymousVisibleMs": 559, + "workbenchReadyMs": 315 + }, + { + "profile": "10mbps-cpu4", + "sample": 2, + "anonymousVisibleMs": 559, + "workbenchReadyMs": 331 + }, + { + "profile": "10mbps-cpu4", + "sample": 3, + "anonymousVisibleMs": 574, + "workbenchReadyMs": 308 + }, + { + "profile": "10mbps-cpu4", + "sample": 4, + "anonymousVisibleMs": 557, + "workbenchReadyMs": 320 + }, + { + "profile": "10mbps-cpu4", + "sample": 5, + "anonymousVisibleMs": 542, + "workbenchReadyMs": 326 + }, + { + "profile": "10mbps-cpu4", + "sample": 6, + "anonymousVisibleMs": 553, + "workbenchReadyMs": 334 + }, + { + "profile": "10mbps-cpu4", + "sample": 7, + "anonymousVisibleMs": 541, + "workbenchReadyMs": 337 + }, + { + "profile": "10mbps-cpu4", + "sample": 8, + "anonymousVisibleMs": 556, + "workbenchReadyMs": 341 + }, + { + "profile": "10mbps-cpu4", + "sample": 9, + "anonymousVisibleMs": 541, + "workbenchReadyMs": 314 + }, + { + "profile": "10mbps-cpu4", + "sample": 10, + "anonymousVisibleMs": 541, + "workbenchReadyMs": 329 + }, + { + "profile": "10mbps-cpu4", + "sample": 11, + "anonymousVisibleMs": 538, + "workbenchReadyMs": 324 + }, + { + "profile": "10mbps-cpu4", + "sample": 12, + "anonymousVisibleMs": 546, + "workbenchReadyMs": 334 + }, + { + "profile": "10mbps-cpu4", + "sample": 13, + "anonymousVisibleMs": 543, + "workbenchReadyMs": 309 + }, + { + "profile": "10mbps-cpu4", + "sample": 14, + "anonymousVisibleMs": 553, + "workbenchReadyMs": 340 + }, + { + "profile": "10mbps-cpu4", + "sample": 15, + "anonymousVisibleMs": 570, + "workbenchReadyMs": 349 + }, + { + "profile": "10mbps-cpu4", + "sample": 16, + "anonymousVisibleMs": 535, + "workbenchReadyMs": 321 + }, + { + "profile": "10mbps-cpu4", + "sample": 17, + "anonymousVisibleMs": 559, + "workbenchReadyMs": 319 + }, + { + "profile": "10mbps-cpu4", + "sample": 18, + "anonymousVisibleMs": 546, + "workbenchReadyMs": 310 + }, + { + "profile": "10mbps-cpu4", + "sample": 19, + "anonymousVisibleMs": 559, + "workbenchReadyMs": 335 + }, + { + "profile": "10mbps-cpu4", + "sample": 20, + "anonymousVisibleMs": 552, + "workbenchReadyMs": 316 + }, + { + "profile": "2mbps-cpu4", + "sample": 1, + "anonymousVisibleMs": 1271, + "workbenchReadyMs": 332 + }, + { + "profile": "2mbps-cpu4", + "sample": 2, + "anonymousVisibleMs": 1283, + "workbenchReadyMs": 350 + }, + { + "profile": "2mbps-cpu4", + "sample": 3, + "anonymousVisibleMs": 1268, + "workbenchReadyMs": 328 + }, + { + "profile": "2mbps-cpu4", + "sample": 4, + "anonymousVisibleMs": 1261, + "workbenchReadyMs": 326 + }, + { + "profile": "2mbps-cpu4", + "sample": 5, + "anonymousVisibleMs": 1270, + "workbenchReadyMs": 335 + }, + { + "profile": "2mbps-cpu4", + "sample": 6, + "anonymousVisibleMs": 1273, + "workbenchReadyMs": 323 + }, + { + "profile": "2mbps-cpu4", + "sample": 7, + "anonymousVisibleMs": 1263, + "workbenchReadyMs": 339 + }, + { + "profile": "2mbps-cpu4", + "sample": 8, + "anonymousVisibleMs": 1269, + "workbenchReadyMs": 332 + }, + { + "profile": "2mbps-cpu4", + "sample": 9, + "anonymousVisibleMs": 1283, + "workbenchReadyMs": 340 + }, + { + "profile": "2mbps-cpu4", + "sample": 10, + "anonymousVisibleMs": 1273, + "workbenchReadyMs": 368 + }, + { + "profile": "2mbps-cpu4", + "sample": 11, + "anonymousVisibleMs": 1287, + "workbenchReadyMs": 322 + }, + { + "profile": "2mbps-cpu4", + "sample": 12, + "anonymousVisibleMs": 1278, + "workbenchReadyMs": 340 + }, + { + "profile": "2mbps-cpu4", + "sample": 13, + "anonymousVisibleMs": 1279, + "workbenchReadyMs": 352 + }, + { + "profile": "2mbps-cpu4", + "sample": 14, + "anonymousVisibleMs": 1274, + "workbenchReadyMs": 326 + }, + { + "profile": "2mbps-cpu4", + "sample": 15, + "anonymousVisibleMs": 1261, + "workbenchReadyMs": 350 + }, + { + "profile": "2mbps-cpu4", + "sample": 16, + "anonymousVisibleMs": 1299, + "workbenchReadyMs": 344 + }, + { + "profile": "2mbps-cpu4", + "sample": 17, + "anonymousVisibleMs": 1289, + "workbenchReadyMs": 333 + }, + { + "profile": "2mbps-cpu4", + "sample": 18, + "anonymousVisibleMs": 1263, + "workbenchReadyMs": 326 + }, + { + "profile": "2mbps-cpu4", + "sample": 19, + "anonymousVisibleMs": 1277, + "workbenchReadyMs": 331 + }, + { + "profile": "2mbps-cpu4", + "sample": 20, + "anonymousVisibleMs": 1278, + "workbenchReadyMs": 339 + } +] \ No newline at end of file