diff --git a/deploy/komodo/lingxiloop-app-a/compose.yml b/deploy/komodo/lingxiloop-app-a/compose.yml index 0e24a0911..77d559f3c 100644 --- a/deploy/komodo/lingxiloop-app-a/compose.yml +++ b/deploy/komodo/lingxiloop-app-a/compose.yml @@ -7,7 +7,7 @@ x-logging: &logging max-file: "3" x-runtime: &runtime - image: accel.way2api.fun/ghcr.io/lingxi-org/lingxiloop-server:c132e9f20b3df1873792618ed3f3bfe8be2be00e + image: accel.way2api.fun/ghcr.io/lingxi-org/lingxiloop-server:b76c4cc00f545ddbca27bced6628e1ed191e6777 pull_policy: always restart: unless-stopped environment: &runtime-environment @@ -106,7 +106,7 @@ services: worker: <<: *runtime - image: accel.way2api.fun/ghcr.io/lingxi-org/lingxiloop-server:e1fe01c5d82d1553a9cc0f9d81d9e7d92898708d + image: accel.way2api.fun/ghcr.io/lingxi-org/lingxiloop-server:b76c4cc00f545ddbca27bced6628e1ed191e6777 environment: <<: *runtime-environment NODE_OPTIONS: --max-old-space-size=640 diff --git a/deploy/komodo/lingxiloop-app-b/compose.yml b/deploy/komodo/lingxiloop-app-b/compose.yml index f0082fad3..ea75a852f 100644 --- a/deploy/komodo/lingxiloop-app-b/compose.yml +++ b/deploy/komodo/lingxiloop-app-b/compose.yml @@ -7,7 +7,7 @@ x-logging: &logging max-file: "3" x-runtime: &runtime - image: accel.way2api.fun/ghcr.io/lingxi-org/lingxiloop-server:c132e9f20b3df1873792618ed3f3bfe8be2be00e + image: accel.way2api.fun/ghcr.io/lingxi-org/lingxiloop-server:b76c4cc00f545ddbca27bced6628e1ed191e6777 pull_policy: always restart: unless-stopped environment: &runtime-environment @@ -106,7 +106,7 @@ services: worker: <<: *runtime - image: accel.way2api.fun/ghcr.io/lingxi-org/lingxiloop-server:e1fe01c5d82d1553a9cc0f9d81d9e7d92898708d + image: accel.way2api.fun/ghcr.io/lingxi-org/lingxiloop-server:b76c4cc00f545ddbca27bced6628e1ed191e6777 environment: <<: *runtime-environment NODE_OPTIONS: --max-old-space-size=640 diff --git a/docs/evidence/release-20261019/COMMANDS.md b/docs/evidence/release-20261019/COMMANDS.md new file mode 100644 index 000000000..be7b97f49 --- /dev/null +++ b/docs/evidence/release-20261019/COMMANDS.md @@ -0,0 +1,42 @@ +# 复验命令索引(本次整理未执行) + +命令来自已完成的验收记录。先检出各记录中的精确源提交并使用精确官方 3.5.3 包。集成 runner 会清理测试数据,必须使用专用空测试数据库和独立 Redis;合成环境值、缓存绝对路径与凭据不包含在公开包中。设置 DOTENV_CONFIG_PATH 禁用真实环境文件载入,停用非目标 live provider;网页与浏览器也使用隔离 fixture。以下不含安装、部署或发布命令。 + +问卷: + +```bash +node server/run-integration-tests.mjs --file questionnaire-wait.test.ts --file im-conversation-style.test.ts --file native-message-flow.test.ts --file native-message-approvals.test.ts --file im-send-reconciliation.test.ts --file interactive-ui-disabled.test.ts --file migration.test.ts +node scripts/run-tests.mjs server +CI_TEST_FILES='["src/api/questionnaires.test.ts","src/features/chat/runtime/error-recovery.test.ts","src/features/chat/runtime/history-loading.test.ts","src/features/chat/runtime/run-updates.test.ts","src/features/chat/runtime/transport.test.ts"]' node scripts/run-tests.mjs web +npm run server:typecheck +npm run server:lint +npm run typecheck +npm run test:e2e:typecheck +NODE_ENV=production node node_modules/vite/bin/vite.js build --config e2e/vite.questionnaire.config.ts --mode questionnaire-test +``` + +启动该新构建的隔离 preview 后,将 E2E_BASE_URL 绑定到它,设置 E2E_PROJECT=web、E2E_TELEMETRY_DISABLED=1、E2E_BUILD_INDEX=.e2e/questionnaire-site/e2e/questionnaire.html,并使用已缓存的官方浏览器执行: + +```bash +node e2e/web/run.mjs e2e/web/questionnaire.e2e.ts --output .e2e/pr190-official-3.5.3 +``` + +案例与论坛: + +```bash +node docs/evidence/issue-187/live-case-agent/run.mjs owning organization-cases.test.ts knowledge-vertical-slice.test.ts attachment-answers.test.ts migration.test.ts +node docs/evidence/issue-187/live-case-agent/run.mjs live +node e2e/server/cases.mjs --browser-only +node e2e/server/forum.mjs --browser-only --issue184 +node e2e/server/forum.mjs --browser --issue187 +``` + +Provider(首轮、独立单项分别记录;真实模型命令需已有授权凭据绑定,不能在无授权时自动执行): + +```bash +node scripts/runtime-acceptance/provider-fault-matrix.mjs +node scripts/runtime-acceptance/provider-fault-matrix.mjs runtime-deadline-recovery.test.ts +node --use-env-proxy e2e/server/model-switch.mjs --live +``` + +本包不携带真实凭据或 live 消息。四次模型调用和 usage 成本仅引用验收摘要。 diff --git a/docs/evidence/release-20261019/README.md b/docs/evidence/release-20261019/README.md new file mode 100644 index 000000000..ba9768388 --- /dev/null +++ b/docs/evidence/release-20261019/README.md @@ -0,0 +1,30 @@ +# 2026-10-19 预发布验收证据 + +`@lyyzka/lingxios@3.5.3` 已正式发布,registry gitHead 为 `59be37b141f41798ec03b2fffabb824d3ef50e36`。[runtime CI](https://github.com/LingXi-Org/LingxiOS/actions/runs/39240936281) · [发布流程](https://github.com/LingXi-Org/LingxiOS/actions/runs/39241356024)。精确包 integrity: + +```text +sha512-e/KhQgtBJlKQl1aM+amJGail2ax8rqGL4Bqw68ehIM+2mlUbaq0WT1FD8WQaGU1/t7TyhYk8gt2IuHlX6OKhfQ== +``` + +产品 PR #185、#188、#192、#191、#190、#189 已合并,最终 main 为 `b76c4cc00f545ddbca27bced6628e1ed191e6777`。本预发布证据快照创建时,[最终 main CI 39243667498](https://github.com/LingXi-Org/LingxiLoop/actions/runs/39243667498) 仍在运行,本包不宣称它已通过。生产部署尚未发生;后续发布结果以发布 PR 的最终回执为准。 + +| 验收 | 实际结果 | 证据 | +| --- | --- | --- | +| 问卷与相关消息、迁移 | 66/66(36 + 30);server 107/107;web 92/92;browser 8/8,均零跳过 | [validation](questionnaire/validation.json)、[browser report](questionnaire/browser/report.json)、[JUnit](questionnaire/browser/junit.xml) | +| 案例相关集成与合成 live fixture | 52/52、1/1,零跳过 | [summary](cases/summary.json)、[实际 runtime](cases/actual-runtime.json)、[依赖一致性](cases/physical-dependencies.json) | +| 案例浏览器 | 2/2,零跳过 | [report](cases/results/cases/browser/report.json)、[JUnit](cases/results/cases/browser/junit.xml) | +| 论坛 #184 / #187 | browser 3/3 + 1/1;论坛集成 10/10,零跳过 | [#184 report](cases/results/forum184/browser/report.json)、[#187 report](cases/results/forum187/browser/report.json)、[summary](cases/summary.json) | +| Provider 矩阵首轮 | 13/14;1 失败,0 跳过 | [首轮摘要](provider-acceptance/20261019T110518Z/matrix-summary.json) | +| Deadline 单项独立复验 | 1/1;未改变阈值,未重跑全矩阵,付费调用 0 | [单项摘要](provider-acceptance/20261019T111735Z-deadline-targeted/matrix-summary.json) | +| 真实模型验收 | 1/1;4 次成功调用(Agent 3、host helper 1) | [live summary](provider-acceptance/20261019T110518Z/live-summary.json)、[完整公开说明](provider-acceptance/20261019T110518Z/PUBLIC-SUMMARY.md) | +| PR 级 CI 集成结果 | PR190:269 pass / 21 门控 skip;PR189:281 pass / 21 门控 skip | [release state](release-state.json),由发布主会话报告;不等同最终 main CI | + +上述专项不是在最终 main 上新增重跑:问卷源提交为 `05b6fd2ed9ee53ed5c1fb07e29ba7dc730899878`,案例与 provider 源提交为 `ef594b8b8f0091d49ac4d618d2c221bdc54f617a`。各文件保留精确提交与包完整性,不能把分支验收改称最终 main 验收。 + +Provider 首轮的 100ms deadline 用例观察到请求数 0,而预期为 1。单项复验后来通过;首轮仍记为 13/14,不能合并写成 14/14。真实模型总 usage × 测试 tariff 为 **USD 0.00405601**,不是供应商扣费收据。Agent root 的预算不覆盖 host helper;总额限制是运行后的账本断言。[最终 provider 汇总](provider-acceptance/FINAL-SUMMARY.json)保留这一边界。 + +执行历史单独保留:[问卷](questionnaire/execution-attempts.json)首轮因输出目录参数被拒绝,exit 2、执行 0 个测试;修正后 8/8。[案例](cases/execution-attempts.json)首轮浏览器缓存不匹配,执行 0 个测试;下一轮虽有 2 个功能用例通过,但字体访问失败,不算最终视觉验收;随后使用内容相同的物理依赖副本完成最终浏览器验收。浏览器报告中的原始 VCS dirty 标志保留;最终工作树恢复状态另见 summary,不改写当时观测。 + +四个历史 issue #153、#155、#157、#161 仍待最终耐久性及完整 Worker–SPA 边界验收。旧 **3.5.1** soak 的 **797** 个样本、**47829.58 秒**仍是未完成记录,不能改称通过,也不能迁移归属到 3.5.3。案例 embeddings 使用合成常量 1024 维向量,未验证真实语义排序;真实模型那一轮也不替代这些待验边界。 + +[命令与环境边界](COMMANDS.md) · [核心截图索引](SCREENSHOTS.md) · [来源与变换记录](SOURCE-MANIFEST.json) · [本包 SHA-256](SHA256SUMS.json)。浏览器 report.json 是明确标注的精简公开投影,保留选择用例与结果;原始输入文件哈希可用于溯源。JUnit 与 7 张核心截图按字节保留。未纳入原始 live 对话、账单内容、网络/控制台记录、私有操作日志及历史归档目录。 diff --git a/docs/evidence/release-20261019/SCREENSHOTS.md b/docs/evidence/release-20261019/SCREENSHOTS.md new file mode 100644 index 000000000..0ffb7bd92 --- /dev/null +++ b/docs/evidence/release-20261019/SCREENSHOTS.md @@ -0,0 +1,17 @@ +# 核心截图 + +全部为隔离合成 fixture,已目视检查。仅保留 7 张代表截图;源报告中的截图总数描述完整原始验收,并非本包数量。 + +- [问卷:显式重试后原答案保持只读](questionnaire/questionnaire-resume-retry.png) + +- [cases: 001-student-editorial-grid-light.png](cases/results/cases/screenshots/001-student-editorial-grid-light.png) + +- [cases: 004-mobile-dark-single-column-keyboard.png](cases/results/cases/screenshots/004-mobile-dark-single-column-keyboard.png) + +- [forum184: 003-issue184-light-1440-editor-materials-open.png](cases/results/forum184/screenshots/003-issue184-light-1440-editor-materials-open.png) + +- [forum184: 022-issue184-dark-390-focus-long-body.png](cases/results/forum184/screenshots/022-issue184-dark-390-focus-long-body.png) + +- [forum187: 002-forum-scope-navigation-390.png](cases/results/forum187/screenshots/002-forum-scope-navigation-390.png) + +- [forum187: 003-forum-scope-composer-mobile.png](cases/results/forum187/screenshots/003-forum-scope-composer-mobile.png) diff --git a/docs/evidence/release-20261019/SHA256SUMS.json b/docs/evidence/release-20261019/SHA256SUMS.json new file mode 100644 index 000000000..3e8ae208b --- /dev/null +++ b/docs/evidence/release-20261019/SHA256SUMS.json @@ -0,0 +1,44 @@ +{ + "COMMANDS.md": "ba98a3336346b412a8d3d5ca6e70bc4cf949b1e2276eb95bc372538c9d9664c2", + "README.md": "b3b3e39cb20e23df4741962256cd244a1977edc4b41045b3b59cbb0876866553", + "SCREENSHOTS.md": "1436b4c6174d6661b0c455676205fbb039571aeb0478e5161a0279dfc0dd5d6d", + "SOURCE-MANIFEST.json": "866d3fe098596843d05185d3c8966cb404f336c7286b9ec4474daaedd67dfd02", + "cases/actual-runtime.json": "ca840215bf24cf06878846c230d65fbb4669f09169a51113386d9fd6b47887de", + "cases/cases.json": "2fdb3623d774017e92abdc2a8593597a99af20f71584f53e3f22d956bd0a50af", + "cases/execution-attempts.json": "2eb74eac1e93a6dcb6ed8512b807559d8daa9b48e3c68f07df9b4d06c43b6ce4", + "cases/forum184.json": "94c02630e957dc8fb6c6b0ffa965d97714cb1d526ed704e09dfa6d3d56626aed", + "cases/forum187.json": "bde990c470d5aa128f67ae0915068aacebaa13c1e3a9a56a1ad42e09bea087b6", + "cases/live.json": "0cef4bc3442f67f7ed3e8800719f6468a7c47be6a7ad7ad676def3a79c634d65", + "cases/owning.json": "338b7d5efc8ce599aa6a8fac3393b9d885548ec13c46616cf2a96ca28416affc", + "cases/physical-dependencies.json": "26e5dfbb80919b536b78cfbbb3aa045234b1a104caad2776c9527eebecc8b7a6", + "cases/results/cases/browser/junit.xml": "dddda04aecade810861934a2eaf56a1b538cabfa24f26b3536005bf2dd20cabe", + "cases/results/cases/browser/report.json": "3a0eb90e1c75e998f406a2d7ccd464f86b24a931165e290db74b4a028e6e71b5", + "cases/results/cases/browser-results.json": "c8c4141a9ae01e9e4f3715db7e85965efc553e67588f88be3e5b96248680671d", + "cases/results/cases/screenshots/001-student-editorial-grid-light.png": "9ddad2f8e2734ebfb58abf9937c851edc750669e3e0428c5b092cbdad8d55f74", + "cases/results/cases/screenshots/004-mobile-dark-single-column-keyboard.png": "76ce10b919e64e0f8d318fa1b6ea10a44a8fdf1a1601f240124fcb0517dd77e5", + "cases/results/forum184/browser/junit.xml": "1dfb534d214cf48af49bd3639a71cf004e5ab6581949ab59f53ab6086c802a48", + "cases/results/forum184/browser/report.json": "6a1fa56d017db4f805e562798924ea18bee5ab35ab8f0231d5f911f8b6c5f79a", + "cases/results/forum184/browser-results.json": "79aa1c5c7de9842ace64b0ce571868d49c8415cdf2e9f4cfd75b2ddd8971864a", + "cases/results/forum184/screenshots/003-issue184-light-1440-editor-materials-open.png": "423725704d57b65a92107c8798eefeb100914e0d8e2fc043428c382dec3c4791", + "cases/results/forum184/screenshots/022-issue184-dark-390-focus-long-body.png": "6874e3a0a23123480a6d8562c54e0e412c040575567d940deda5f6d873084623", + "cases/results/forum187/browser/junit.xml": "1736a652e1c4a73e67c2dadd4c4c9077adff22583ebfc254918cece1d98f2ed6", + "cases/results/forum187/browser/report.json": "ffad231ceb10ef22459c0ab22ff51da14ecdbd4c3ead03eaaf6516c844fd884d", + "cases/results/forum187/results.json": "74edd673edf3aec092c8ac332696196b1128be8e042bb5b3799855bfc95e979b", + "cases/results/forum187/screenshots/002-forum-scope-navigation-390.png": "487bb483a2bad616e677e5e62c49c2c5f3c24d3e57b5437d36aa5e5f1364f6a6", + "cases/results/forum187/screenshots/003-forum-scope-composer-mobile.png": "bb0f2c0485987d0cb3608c73cdab7dd4a9e8daac91a33fb7b09b8eacdc56eaf8", + "cases/summary.json": "7ed5b8c41f37d6c2d51eb65553b229b035aa17ac4f9cbba33e8172387dd772ba", + "provider-acceptance/20261019T110518Z/PUBLIC-SUMMARY.md": "8132d394ef53aca950c401a1e8474c586db3b96bce2d2aa6b452fca2891ed1d8", + "provider-acceptance/20261019T110518Z/live-summary.json": "80e92ad6758cf5d1e6840efda2ecae2c88886c9c4a7abc7030608558c2851425", + "provider-acceptance/20261019T110518Z/matrix-summary.json": "2b3f26e5b1007997f45828704eda2b1a554015ade632081c57a94f3e3cccf912", + "provider-acceptance/20261019T110518Z/provenance.json": "0f1aed2c1fffee18b18eb4636e62967596131189cd4105ae319dd517c9274879", + "provider-acceptance/20261019T111735Z-deadline-targeted/matrix-summary.json": "12e0bd8dc033661b1c3a24cbaa12f791e288293bf00ff5f890e2de73b2984373", + "provider-acceptance/20261019T111735Z-deadline-targeted/provenance.json": "0f1aed2c1fffee18b18eb4636e62967596131189cd4105ae319dd517c9274879", + "provider-acceptance/FINAL-SUMMARY.json": "96ba333ccba6f28e6b7dec02f7004308f3685ca9d4d89db53ee7cf1bca10abad", + "questionnaire/PUBLIC-SUMMARY.md": "95f37af2cbb70eefd1610a6acf40b5aa49f6bf7018ac2e093c239c8ba4a21b06", + "questionnaire/browser/junit.xml": "fb0fc271e0ed5035335db90d8d052a65c3fa19fcb0d2572884a66c3bc33e6465", + "questionnaire/browser/report.json": "6e95a500de0c2b56524c76954e6f3a1c7bcd3053143045ec39dd917e4efd8f12", + "questionnaire/execution-attempts.json": "025e63ca78c40638161b0b0ce5f653819d8bdfbe30cc3ca36ae885c9ec48ac45", + "questionnaire/questionnaire-resume-retry.png": "78c53b317fd18e2c3e4ecffd846d1ed31b1f16386dee1cfaa86a892d8278efc7", + "questionnaire/validation.json": "37cf7c524c784c32d23b8fec99f98a1bf9d5f4c2d9e130eaa113ca661e079824", + "release-state.json": "f5fa9555418657c34d8885d1906729e3fc77bc150e7a0315b3b3d5f3de90f6e9" +} diff --git a/docs/evidence/release-20261019/SOURCE-MANIFEST.json b/docs/evidence/release-20261019/SOURCE-MANIFEST.json new file mode 100644 index 000000000..58d4253f2 --- /dev/null +++ b/docs/evidence/release-20261019/SOURCE-MANIFEST.json @@ -0,0 +1,237 @@ +{ + "sourceRootDescription": "private formal-3.5.3 qualification archive; paths below are relative labels, not deployment locations", + "entries": [ + { + "file": "questionnaire/validation.json", + "source": "formal-3.5.3/questionnaire/validation.json", + "sourceSha256": "07775158e444eb2dafc4be160d7c9b666cdccc915c8a56894479116101716a4a", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "questionnaire/PUBLIC-SUMMARY.md", + "source": "formal-3.5.3/questionnaire/PUBLIC-SUMMARY.md", + "sourceSha256": "95f37af2cbb70eefd1610a6acf40b5aa49f6bf7018ac2e093c239c8ba4a21b06", + "transformation": "byte-for-byte copy after review" + }, + { + "file": "questionnaire/execution-attempts.json", + "source": "formal-3.5.3/questionnaire/validation.json", + "sourceSha256": "07775158e444eb2dafc4be160d7c9b666cdccc915c8a56894479116101716a4a", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "questionnaire/questionnaire-resume-retry.png", + "source": "formal-3.5.3/questionnaire/questionnaire-resume-retry.png", + "sourceSha256": "78c53b317fd18e2c3e4ecffd846d1ed31b1f16386dee1cfaa86a892d8278efc7", + "transformation": "byte-for-byte copy after review" + }, + { + "file": "cases/summary.json", + "source": "formal-3.5.3/cases/summary.json", + "sourceSha256": "827d6017c0d61ba6df386ad9fa91610e59f24e9e2a50859e0dfa5ceba089f060", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "cases/actual-runtime.json", + "source": "formal-3.5.3/cases/actual-runtime.json", + "sourceSha256": "e9bb902e1e887a95f2c95f158450ca8ee775467f2177bd27fc780ca7ded19a4f", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "cases/physical-dependencies.json", + "source": "formal-3.5.3/cases/physical-dependencies.json", + "sourceSha256": "dbcda18991acbea9a2b99d7f3d2e61619db4c8590f15fc1925d598f353c7dd94", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "cases/owning.json", + "source": "formal-3.5.3/cases/owning.json", + "sourceSha256": "67db8c88ddbf185c06b4d0318bcec391009749bd627cfcbe8fbc563440d661ff", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "cases/live.json", + "source": "formal-3.5.3/cases/live.json", + "sourceSha256": "5a32f4b9515c83c586b0ee467387fa16309f3b3d3024dd051b6a3a7ed2ba32cd", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "cases/cases.json", + "source": "formal-3.5.3/cases/cases.json", + "sourceSha256": "095fb68d44e47b9237ae674a88c8ac0e5f5a5c243cc97f2858acd580780f4d19", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "cases/forum184.json", + "source": "formal-3.5.3/cases/forum184.json", + "sourceSha256": "34702dbbc0d07fe95ce9316a0739e70d7caf314b112d250757f07f0ec5f1e39c", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "cases/forum187.json", + "source": "formal-3.5.3/cases/forum187.json", + "sourceSha256": "9a01cf2a04837a79ffaae4b636a714555757fa6aa5f579aa12f39b678bd08d48", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "cases/execution-attempts.json", + "source": "formal-3.5.3/cases/summary.json", + "sourceSha256": "827d6017c0d61ba6df386ad9fa91610e59f24e9e2a50859e0dfa5ceba089f060", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "cases/results/cases/browser-results.json", + "source": "formal-3.5.3/cases/results/cases/browser-results.json", + "sourceSha256": "881c4161519d7b21153f3424870ec127312e01744b22c7aa57436cee84901330", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "cases/results/forum184/browser-results.json", + "source": "formal-3.5.3/cases/results/forum184/browser-results.json", + "sourceSha256": "d52e8d5ddf4d58c169249c66c99b821cdd95744f667d18406ce451f781869d5a", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "cases/results/forum187/results.json", + "source": "formal-3.5.3/cases/results/forum187/results.json", + "sourceSha256": "b6755a804bc5caeb90cb973b37fd49e7a2b0f30d2a5afe60525eac42324d0f60", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "questionnaire/browser/report.json", + "source": "formal-3.5.3/questionnaire/browser/report.json", + "sourceSha256": "ca1ee657cbd41303aa8a4202a4f50b8caae7a15a5f12049aebd0ad88c4647718", + "transformation": "compact public report projection; retains run identity, VCS dirty flag, counts and selected test outcomes" + }, + { + "file": "questionnaire/browser/junit.xml", + "source": "formal-3.5.3/questionnaire/browser/junit.xml", + "sourceSha256": "fb0fc271e0ed5035335db90d8d052a65c3fa19fcb0d2572884a66c3bc33e6465", + "transformation": "byte-for-byte copy after review" + }, + { + "file": "cases/results/cases/browser/report.json", + "source": "formal-3.5.3/cases/results/cases/browser/report.json", + "sourceSha256": "6e60aaba62982707a66a7074b4fa5e45006356ff2dcbfe4856d1ce24bdf1ae05", + "transformation": "compact public report projection; retains run identity, VCS dirty flag, counts and selected test outcomes" + }, + { + "file": "cases/results/cases/browser/junit.xml", + "source": "formal-3.5.3/cases/results/cases/browser/junit.xml", + "sourceSha256": "dddda04aecade810861934a2eaf56a1b538cabfa24f26b3536005bf2dd20cabe", + "transformation": "byte-for-byte copy after review" + }, + { + "file": "cases/results/forum184/browser/report.json", + "source": "formal-3.5.3/cases/results/forum184/browser/report.json", + "sourceSha256": "6479bcd21731405b535162345fcca35de7c722fb91ca857258b1d834bc5cc04d", + "transformation": "compact public report projection; retains run identity, VCS dirty flag, counts and selected test outcomes" + }, + { + "file": "cases/results/forum184/browser/junit.xml", + "source": "formal-3.5.3/cases/results/forum184/browser/junit.xml", + "sourceSha256": "1dfb534d214cf48af49bd3639a71cf004e5ab6581949ab59f53ab6086c802a48", + "transformation": "byte-for-byte copy after review" + }, + { + "file": "cases/results/forum187/browser/report.json", + "source": "formal-3.5.3/cases/results/forum187/browser/report.json", + "sourceSha256": "bbc3bb77249e73e7e5844a6d09de78a77b59127dee2485db7c9b566df62c79d9", + "transformation": "compact public report projection; retains run identity, VCS dirty flag, counts and selected test outcomes" + }, + { + "file": "cases/results/forum187/browser/junit.xml", + "source": "formal-3.5.3/cases/results/forum187/browser/junit.xml", + "sourceSha256": "1736a652e1c4a73e67c2dadd4c4c9077adff22583ebfc254918cece1d98f2ed6", + "transformation": "byte-for-byte copy after review" + }, + { + "file": "cases/results/cases/screenshots/001-student-editorial-grid-light.png", + "source": "formal-3.5.3/cases/results/cases/browser/artifacts/cases/e2e_cases_browser.e2e.ts__organization_20case_20publication_2C_20cross-course_20access_2C_20isolation_20and_20r-fbc7ebba/default/attempt-0/screenshots/001-student-editorial-grid-light.png", + "sourceSha256": "9ddad2f8e2734ebfb58abf9937c851edc750669e3e0428c5b092cbdad8d55f74", + "transformation": "byte-for-byte copy after review" + }, + { + "file": "cases/results/cases/screenshots/004-mobile-dark-single-column-keyboard.png", + "source": "formal-3.5.3/cases/results/cases/browser/artifacts/cases/e2e_cases_browser.e2e.ts__organization_20case_20publication_2C_20cross-course_20access_2C_20isolation_20and_20r-fbc7ebba/default/attempt-0/screenshots/004-mobile-dark-single-column-keyboard.png", + "sourceSha256": "76ce10b919e64e0f8d318fa1b6ea10a44a8fdf1a1601f240124fcb0517dd77e5", + "transformation": "byte-for-byte copy after review" + }, + { + "file": "cases/results/forum184/screenshots/003-issue184-light-1440-editor-materials-open.png", + "source": "formal-3.5.3/cases/results/forum184/browser/artifacts/forum/e2e_forum_issue184.e2e.ts__issue184_20responsive_20focus_20canvas_3A_20compact_2C_20editor_2C_20closed_2Fopen_2-eda50c7e/default/attempt-0/screenshots/003-issue184-light-1440-editor-materials-open.png", + "sourceSha256": "423725704d57b65a92107c8798eefeb100914e0d8e2fc043428c382dec3c4791", + "transformation": "byte-for-byte copy after review" + }, + { + "file": "cases/results/forum184/screenshots/022-issue184-dark-390-focus-long-body.png", + "source": "formal-3.5.3/cases/results/forum184/browser/artifacts/forum/e2e_forum_issue184.e2e.ts__issue184_20responsive_20focus_20canvas_3A_20compact_2C_20editor_2C_20closed_2Fopen_2-eda50c7e/default/attempt-0/screenshots/022-issue184-dark-390-focus-long-body.png", + "sourceSha256": "6874e3a0a23123480a6d8562c54e0e412c040575567d940deda5f6d873084623", + "transformation": "byte-for-byte copy after review" + }, + { + "file": "cases/results/forum187/screenshots/002-forum-scope-navigation-390.png", + "source": "formal-3.5.3/cases/results/forum187/browser/artifacts/forum/e2e_forum_resources.e2e.ts__forum_20offers_20only_20assignments_20and_20discussions_20on_20desktop_20and_20mobi-82bb95a9/default/attempt-0/screenshots/002-forum-scope-navigation-390.png", + "sourceSha256": "487bb483a2bad616e677e5e62c49c2c5f3c24d3e57b5437d36aa5e5f1364f6a6", + "transformation": "byte-for-byte copy after review" + }, + { + "file": "cases/results/forum187/screenshots/003-forum-scope-composer-mobile.png", + "source": "formal-3.5.3/cases/results/forum187/browser/artifacts/forum/e2e_forum_resources.e2e.ts__forum_20offers_20only_20assignments_20and_20discussions_20on_20desktop_20and_20mobi-82bb95a9/default/attempt-0/screenshots/003-forum-scope-composer-mobile.png", + "sourceSha256": "bb0f2c0485987d0cb3608c73cdab7dd4a9e8daac91a33fb7b09b8eacdc56eaf8", + "transformation": "byte-for-byte copy after review" + }, + { + "file": "provider-acceptance/FINAL-SUMMARY.json", + "source": "formal-3.5.3/provider-acceptance/FINAL-SUMMARY.json", + "sourceSha256": "a57ca90bc954ad70f4627b0f260b0c2978746546c05afe0700a442cb3724163e", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "provider-acceptance/20261019T110518Z/provenance.json", + "source": "formal-3.5.3/provider-acceptance/20261019T110518Z/provenance.json", + "sourceSha256": "97d47c140a59476165f2a10083be02fab25b40a0a9157650c5f3f81d123b2e1b", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "provider-acceptance/20261019T110518Z/matrix-summary.json", + "source": "formal-3.5.3/provider-acceptance/20261019T110518Z/matrix-summary.json", + "sourceSha256": "afc3b2cd9b236e0844669124c669b5882089a3edef9c73b4a7726c5d1239ff67", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "provider-acceptance/20261019T110518Z/live-summary.json", + "source": "formal-3.5.3/provider-acceptance/20261019T110518Z/live-summary.json", + "sourceSha256": "80e92ad6758cf5d1e6840efda2ecae2c88886c9c4a7abc7030608558c2851425", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "provider-acceptance/20261019T111735Z-deadline-targeted/matrix-summary.json", + "source": "formal-3.5.3/provider-acceptance/20261019T111735Z-deadline-targeted/matrix-summary.json", + "sourceSha256": "bead183e201e7b10fb3f159175166eb67c204c468b8fb9b71409e64d40b7c3ea", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "provider-acceptance/20261019T111735Z-deadline-targeted/provenance.json", + "source": "formal-3.5.3/provider-acceptance/20261019T111735Z-deadline-targeted/provenance.json", + "sourceSha256": "5a2702c53ae54857d1b8aacee6810d10756cb77eb6a29656ce04b2e51a2e5622", + "transformation": "public projection: local paths/resources and raw run details omitted" + }, + { + "file": "provider-acceptance/20261019T110518Z/PUBLIC-SUMMARY.md", + "source": "formal-3.5.3/provider-acceptance/20261019T110518Z/PUBLIC-SUMMARY.md", + "sourceSha256": "8132d394ef53aca950c401a1e8474c586db3b96bce2d2aa6b452fca2891ed1d8", + "transformation": "byte-for-byte copy after review" + } + ], + "generatedFiles": [ + "README.md", + "COMMANDS.md", + "SCREENSHOTS.md", + "release-state.json", + "SOURCE-MANIFEST.json", + "SHA256SUMS.json" + ], + "packagingOnly": true, + "testsRunDuringPackaging": 0 +} diff --git a/docs/evidence/release-20261019/cases/actual-runtime.json b/docs/evidence/release-20261019/cases/actual-runtime.json new file mode 100644 index 000000000..01f983a6b --- /dev/null +++ b/docs/evidence/release-20261019/cases/actual-runtime.json @@ -0,0 +1,26 @@ +{ + "head": "ef594b8b8f0091d49ac4d618d2c221bdc54f617a", + "node": "v24.19.0", + "resolved": "node_modules/@lyyzka/lingxios/dist/src/index.js", + "metadata": { + "name": "@lyyzka/lingxios", + "version": "3.5.3" + }, + "registry": { + "observedAt": "2026-10-19T11:02:58.106Z", + "version": "3.5.3", + "expectedCommit": "59be37b141f41798ec03b2fffabb824d3ef50e36", + "registryGitHead": "59be37b141f41798ec03b2fffabb824d3ef50e36", + "integrity": "sha512-e/KhQgtBJlKQl1aM+amJGail2ax8rqGL4Bqw68ehIM+2mlUbaq0WT1FD8WQaGU1/t7TyhYk8gt2IuHlX6OKhfQ==", + "installedPath": "node_modules/@lyyzka/lingxios", + "exactRootAndServerLocks": true, + "candidateSymlinkRemoved": true + }, + "hashes": { + "package-lock.json": "f3d91f01d323d4309a75dc9093bf9d0af0fd9049e5dc15a1dbcc3a4e8eca2a2e", + "server/package-lock.json": "9831c9e0fdaee746934a370c7ecd7e0f511e7cae8cf2494c175bdeb14f1967ca", + "server/src/db/migrations/0044_questionnaire_wait.sql": "2d2630b60f3d13f97d90522d86ce7d7b0b2e42cc58558c14ed488922feebac19", + "server/src/db/migrations/0045_organization_cases.sql": "697d68b27732329d6161a25337aa48d503a9a56435a79bec02dc51940c7a7247" + }, + "note": "Historical live fixture prints a fixed 3.5.2 label. This observed official 3.5.3 identity governs this fresh qualification; source metadata is unchanged." +} diff --git a/docs/evidence/release-20261019/cases/cases.json b/docs/evidence/release-20261019/cases/cases.json new file mode 100644 index 000000000..153f48ef0 --- /dev/null +++ b/docs/evidence/release-20261019/cases/cases.json @@ -0,0 +1,13 @@ +{ + "phase": "cases", + "head": "ef594b8b8f0091d49ac4d618d2c221bdc54f617a", + "args": [ + "e2e/server/cases.mjs", + "--browser-only" + ], + "startedAt": "2026-10-19T11:12:39.186Z", + "finishedAt": "2026-10-19T11:13:49.673Z", + "exitCode": 0, + "signal": null, + "historicalOutputRestored": true +} diff --git a/docs/evidence/release-20261019/cases/execution-attempts.json b/docs/evidence/release-20261019/cases/execution-attempts.json new file mode 100644 index 000000000..af1a34d98 --- /dev/null +++ b/docs/evidence/release-20261019/cases/execution-attempts.json @@ -0,0 +1,34 @@ +{ + "initialCacheAttempt": { + "phase": "cases", + "head": "ef594b8b8f0091d49ac4d618d2c221bdc54f617a", + "args": [ + "e2e/server/cases.mjs", + "--browser-only" + ], + "startedAt": "2026-10-19T11:08:45.426Z", + "finishedAt": "2026-10-19T11:09:04.313Z", + "exitCode": 1, + "signal": null, + "historicalOutputRestored": true, + "testsExecuted": 0, + "qualification": "execution setup failed; not a test pass" + }, + "fontServingAttempt": { + "phase": "cases", + "head": "ef594b8b8f0091d49ac4d618d2c221bdc54f617a", + "args": [ + "e2e/server/cases.mjs", + "--browser-only" + ], + "startedAt": "2026-10-19T11:10:01.127Z", + "finishedAt": "2026-10-19T11:11:07.993Z", + "exitCode": 0, + "signal": null, + "historicalOutputRestored": true, + "functionalTestsPassed": 2, + "fontServing": "denied", + "qualification": "functional-only round; not final visual acceptance" + }, + "finalRound": "See cases.json and results/cases/browser/report.json; unchanged dependency contents copied physically before final browser qualification." +} diff --git a/docs/evidence/release-20261019/cases/forum184.json b/docs/evidence/release-20261019/cases/forum184.json new file mode 100644 index 000000000..d087505da --- /dev/null +++ b/docs/evidence/release-20261019/cases/forum184.json @@ -0,0 +1,14 @@ +{ + "phase": "forum184", + "head": "ef594b8b8f0091d49ac4d618d2c221bdc54f617a", + "args": [ + "e2e/server/forum.mjs", + "--browser-only", + "--issue184" + ], + "startedAt": "2026-10-19T11:13:54.632Z", + "finishedAt": "2026-10-19T11:15:14.536Z", + "exitCode": 0, + "signal": null, + "historicalOutputRestored": true +} diff --git a/docs/evidence/release-20261019/cases/forum187.json b/docs/evidence/release-20261019/cases/forum187.json new file mode 100644 index 000000000..373f798ca --- /dev/null +++ b/docs/evidence/release-20261019/cases/forum187.json @@ -0,0 +1,14 @@ +{ + "phase": "forum187", + "head": "ef594b8b8f0091d49ac4d618d2c221bdc54f617a", + "args": [ + "e2e/server/forum.mjs", + "--browser", + "--issue187" + ], + "startedAt": "2026-10-19T11:15:22.762Z", + "finishedAt": "2026-10-19T11:15:54.641Z", + "exitCode": 0, + "signal": null, + "historicalOutputRestored": true +} diff --git a/docs/evidence/release-20261019/cases/live.json b/docs/evidence/release-20261019/cases/live.json new file mode 100644 index 000000000..a26d6c1c7 --- /dev/null +++ b/docs/evidence/release-20261019/cases/live.json @@ -0,0 +1,13 @@ +{ + "phase": "live", + "head": "ef594b8b8f0091d49ac4d618d2c221bdc54f617a", + "args": [ + "docs/evidence/issue-187/live-case-agent/run.mjs", + "live" + ], + "startedAt": "2026-10-19T11:08:22.872Z", + "finishedAt": "2026-10-19T11:08:39.903Z", + "exitCode": 0, + "signal": null, + "historicalOutputRestored": true +} diff --git a/docs/evidence/release-20261019/cases/owning.json b/docs/evidence/release-20261019/cases/owning.json new file mode 100644 index 000000000..f7d44df16 --- /dev/null +++ b/docs/evidence/release-20261019/cases/owning.json @@ -0,0 +1,17 @@ +{ + "phase": "owning", + "head": "ef594b8b8f0091d49ac4d618d2c221bdc54f617a", + "args": [ + "docs/evidence/issue-187/live-case-agent/run.mjs", + "owning", + "organization-cases.test.ts", + "knowledge-vertical-slice.test.ts", + "attachment-answers.test.ts", + "migration.test.ts" + ], + "startedAt": "2026-10-19T11:05:15.482Z", + "finishedAt": "2026-10-19T11:08:19.316Z", + "exitCode": 0, + "signal": null, + "historicalOutputRestored": true +} diff --git a/docs/evidence/release-20261019/cases/physical-dependencies.json b/docs/evidence/release-20261019/cases/physical-dependencies.json new file mode 100644 index 000000000..175098b5f --- /dev/null +++ b/docs/evidence/release-20261019/cases/physical-dependencies.json @@ -0,0 +1,16 @@ +{ + "source": "official dependency directory", + "physicalPath": "isolated browser dependency copy", + "copyCommand": "cp -a --reflink=auto", + "runtimeBefore": { + "sha256": "d401de36d2bf9479d531e9d45402ba3d2f7e6413db7b74404efd943236cada11", + "files": 438 + }, + "runtimeAfter": { + "sha256": "d401de36d2bf9479d531e9d45402ba3d2f7e6413db7b74404efd943236cada11", + "files": 438 + }, + "version": "3.5.3", + "noInstall": true, + "noSourceOrLockChanges": true +} diff --git a/docs/evidence/release-20261019/cases/results/cases/browser-results.json b/docs/evidence/release-20261019/cases/results/cases/browser-results.json new file mode 100644 index 000000000..12f8c9416 --- /dev/null +++ b/docs/evidence/release-20261019/cases/results/cases/browser-results.json @@ -0,0 +1,43 @@ +{ + "passed": true, + "reproduce": "node e2e/server/cases.mjs --browser-only", + "results": [ + { + "command": [ + "node", + "--import", + "tsx", + "server/src/migrate-bin.ts" + ], + "startedAt": "2026-10-19T11:12:39.300Z", + "finishedAt": "2026-10-19T11:12:40.563Z", + "exitCode": 0 + }, + { + "command": [ + "node", + "--import", + "tsx", + "server/src/migrate-bin.ts" + ], + "startedAt": "2026-10-19T11:12:40.563Z", + "finishedAt": "2026-10-19T11:12:41.116Z", + "exitCode": 0 + }, + { + "command": [ + "node", + "node_modules/e2e/dist/cli/bin.js", + "run", + "--config", + "e2e.cases.config.ts" + ], + "startedAt": "2026-10-19T11:12:48.609Z", + "finishedAt": "2026-10-19T11:13:49.573Z", + "exitCode": 0 + } + ], + "limitations": [ + "Synthetic identities and in-memory object storage; real HTTP API and isolated PostgreSQL. No live Open Notebook ingestion or vector retrieval is exercised." + ] +} diff --git a/docs/evidence/release-20261019/cases/results/cases/browser/junit.xml b/docs/evidence/release-20261019/cases/results/cases/browser/junit.xml new file mode 100644 index 000000000..b2a073f9e --- /dev/null +++ b/docs/evidence/release-20261019/cases/results/cases/browser/junit.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/evidence/release-20261019/cases/results/cases/browser/report.json b/docs/evidence/release-20261019/cases/results/cases/browser/report.json new file mode 100644 index 000000000..fb6187015 --- /dev/null +++ b/docs/evidence/release-20261019/cases/results/cases/browser/report.json @@ -0,0 +1,75 @@ +{ + "schemaVersion": "public-report-projection-1", + "note": "Selected result summary extracted from the official browser report. Steps, HTTP/console observations, target origins and unselected tests are omitted. Source hash is in SOURCE-MANIFEST.json.", + "run": { + "id": "01a153dd-385f-77bf-928c-4e75d4a38caf", + "runner": { + "name": "e2e", + "version": "0.17.0" + }, + "status": "passed", + "exitCode": 0, + "startedAt": "2026-10-19T11:12:50.077Z", + "finishedAt": "2026-10-19T11:13:49.526Z", + "project": { + "id": "lingxiloop-cases", + "configDigest": "1a8f93d722e524270b6160f700eaa6be0500363734ed900ac6dea696fe664c61" + }, + "vcs": { + "commit": "ef594b8b8f0091d49ac4d618d2c221bdc54f617a", + "branch": "codex/fix-case-agent-evidence", + "dirty": true + }, + "summary": { + "discovered": 2, + "selected": 2, + "executed": 2, + "passed": 2, + "failed": 0, + "interrupted": 0, + "flaky": 0, + "skipped": 0 + } + }, + "engines": [ + { + "targetId": "cases", + "platform": "web", + "engine": { + "name": "web", + "version": "0.12.0", + "spiVersion": 1 + } + } + ], + "selectedResults": [ + { + "testId": "e2e/cases/browser.e2e.ts::organization%20case%20publication%2C%20cross-course%20access%2C%20isolation%20and%20responsive%20navigation", + "titlePath": [ + "organization case publication, cross-course access, isolation and responsive navigation" + ], + "file": "e2e/cases/browser.e2e.ts", + "source": { + "file": "e2e/cases/browser.e2e.ts", + "line": 7, + "column": 1 + }, + "status": "passed", + "selected": true + }, + { + "testId": "e2e/cases/browser.e2e.ts::teacher%20authors%20and%20publishes%20cover%20and%20body%20images%20through%20the%20UI", + "titlePath": [ + "teacher authors and publishes cover and body images through the UI" + ], + "file": "e2e/cases/browser.e2e.ts", + "source": { + "file": "e2e/cases/browser.e2e.ts", + "line": 145, + "column": 1 + }, + "status": "passed", + "selected": true + } + ] +} diff --git a/docs/evidence/release-20261019/cases/results/cases/screenshots/001-student-editorial-grid-light.png b/docs/evidence/release-20261019/cases/results/cases/screenshots/001-student-editorial-grid-light.png new file mode 100644 index 000000000..c9a9dadfd Binary files /dev/null and b/docs/evidence/release-20261019/cases/results/cases/screenshots/001-student-editorial-grid-light.png differ diff --git a/docs/evidence/release-20261019/cases/results/cases/screenshots/004-mobile-dark-single-column-keyboard.png b/docs/evidence/release-20261019/cases/results/cases/screenshots/004-mobile-dark-single-column-keyboard.png new file mode 100644 index 000000000..2b24d816a Binary files /dev/null and b/docs/evidence/release-20261019/cases/results/cases/screenshots/004-mobile-dark-single-column-keyboard.png differ diff --git a/docs/evidence/release-20261019/cases/results/forum184/browser-results.json b/docs/evidence/release-20261019/cases/results/forum184/browser-results.json new file mode 100644 index 000000000..7869e6b3d --- /dev/null +++ b/docs/evidence/release-20261019/cases/results/forum184/browser-results.json @@ -0,0 +1,43 @@ +{ + "passed": true, + "reproduce": "node e2e/server/forum.mjs --browser-only --issue184", + "results": [ + { + "command": [ + "node", + "--import", + "tsx", + "server/src/migrate-bin.ts" + ], + "startedAt": "2026-10-19T11:13:54.807Z", + "finishedAt": "2026-10-19T11:13:57.039Z", + "exitCode": 0 + }, + { + "command": [ + "node", + "--import", + "tsx", + "server/src/migrate-bin.ts" + ], + "startedAt": "2026-10-19T11:13:57.039Z", + "finishedAt": "2026-10-19T11:13:57.597Z", + "exitCode": 0 + }, + { + "command": [ + "node", + "node_modules/e2e/dist/cli/bin.js", + "run", + "--config", + "e2e.forum.config.ts" + ], + "startedAt": "2026-10-19T11:14:02.764Z", + "finishedAt": "2026-10-19T11:15:14.393Z", + "exitCode": 0 + } + ], + "limitations": [ + "Synthetic identities, recorded WuKong messages and in-memory object storage; browser validation is reported separately." + ] +} diff --git a/docs/evidence/release-20261019/cases/results/forum184/browser/junit.xml b/docs/evidence/release-20261019/cases/results/forum184/browser/junit.xml new file mode 100644 index 000000000..030393dc0 --- /dev/null +++ b/docs/evidence/release-20261019/cases/results/forum184/browser/junit.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/evidence/release-20261019/cases/results/forum184/browser/report.json b/docs/evidence/release-20261019/cases/results/forum184/browser/report.json new file mode 100644 index 000000000..8169693c9 --- /dev/null +++ b/docs/evidence/release-20261019/cases/results/forum184/browser/report.json @@ -0,0 +1,89 @@ +{ + "schemaVersion": "public-report-projection-1", + "note": "Selected result summary extracted from the official browser report. Steps, HTTP/console observations, target origins and unselected tests are omitted. Source hash is in SOURCE-MANIFEST.json.", + "run": { + "id": "01a153de-59a6-77b6-b9f1-26787ffb4912", + "runner": { + "name": "e2e", + "version": "0.17.0" + }, + "status": "passed", + "exitCode": 0, + "startedAt": "2026-10-19T11:14:03.994Z", + "finishedAt": "2026-10-19T11:15:14.270Z", + "project": { + "id": "lingxiloop-forum", + "configDigest": "78b935ee5c7453b15b0557056d63a925cc3def58e538f66a0c07128e83d2108e" + }, + "vcs": { + "commit": "ef594b8b8f0091d49ac4d618d2c221bdc54f617a", + "branch": "codex/fix-case-agent-evidence", + "dirty": false + }, + "summary": { + "discovered": 3, + "selected": 3, + "executed": 3, + "passed": 3, + "failed": 0, + "interrupted": 0, + "flaky": 0, + "skipped": 0 + } + }, + "engines": [ + { + "targetId": "forum", + "platform": "web", + "engine": { + "name": "web", + "version": "0.12.0", + "spiVersion": 1 + } + } + ], + "selectedResults": [ + { + "testId": "e2e/forum/issue184.e2e.ts::issue184%20materials%2C%20body%20links%2C%20upload%20states%2C%20drafts%20and%20publish%20retry%20use%20real%20forum%20routes", + "titlePath": [ + "issue184 materials, body links, upload states, drafts and publish retry use real forum routes" + ], + "file": "e2e/forum/issue184.e2e.ts", + "source": { + "file": "e2e/forum/issue184.e2e.ts", + "line": 45, + "column": 1 + }, + "status": "passed", + "selected": true + }, + { + "testId": "e2e/forum/issue184.e2e.ts::issue184%20responsive%20focus%20canvas%3A%20compact%2C%20editor%2C%20closed%2Fopen%20materials%2C%20focus%20mode%20and%20both%20themes", + "titlePath": [ + "issue184 responsive focus canvas: compact, editor, closed/open materials, focus mode and both themes" + ], + "file": "e2e/forum/issue184.e2e.ts", + "source": { + "file": "e2e/forum/issue184.e2e.ts", + "line": 171, + "column": 1 + }, + "status": "passed", + "selected": true + }, + { + "testId": "e2e/forum/issue184.e2e.ts::issue184%20formal%20assignment%20fields%20survive%20mode%20switches%20and%20student%20permission%20stays%20enforced", + "titlePath": [ + "issue184 formal assignment fields survive mode switches and student permission stays enforced" + ], + "file": "e2e/forum/issue184.e2e.ts", + "source": { + "file": "e2e/forum/issue184.e2e.ts", + "line": 305, + "column": 1 + }, + "status": "passed", + "selected": true + } + ] +} diff --git a/docs/evidence/release-20261019/cases/results/forum184/screenshots/003-issue184-light-1440-editor-materials-open.png b/docs/evidence/release-20261019/cases/results/forum184/screenshots/003-issue184-light-1440-editor-materials-open.png new file mode 100644 index 000000000..73d063c45 Binary files /dev/null and b/docs/evidence/release-20261019/cases/results/forum184/screenshots/003-issue184-light-1440-editor-materials-open.png differ diff --git a/docs/evidence/release-20261019/cases/results/forum184/screenshots/022-issue184-dark-390-focus-long-body.png b/docs/evidence/release-20261019/cases/results/forum184/screenshots/022-issue184-dark-390-focus-long-body.png new file mode 100644 index 000000000..62da1a327 Binary files /dev/null and b/docs/evidence/release-20261019/cases/results/forum184/screenshots/022-issue184-dark-390-focus-long-body.png differ diff --git a/docs/evidence/release-20261019/cases/results/forum187/browser/junit.xml b/docs/evidence/release-20261019/cases/results/forum187/browser/junit.xml new file mode 100644 index 000000000..6eb7af2b9 --- /dev/null +++ b/docs/evidence/release-20261019/cases/results/forum187/browser/junit.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/evidence/release-20261019/cases/results/forum187/browser/report.json b/docs/evidence/release-20261019/cases/results/forum187/browser/report.json new file mode 100644 index 000000000..4f14bbf50 --- /dev/null +++ b/docs/evidence/release-20261019/cases/results/forum187/browser/report.json @@ -0,0 +1,61 @@ +{ + "schemaVersion": "public-report-projection-1", + "note": "Selected result summary extracted from the official browser report. Steps, HTTP/console observations, target origins and unselected tests are omitted. Source hash is in SOURCE-MANIFEST.json.", + "run": { + "id": "01a153df-d7b6-7ab4-8c9a-4cd2a17e8b36", + "runner": { + "name": "e2e", + "version": "0.17.0" + }, + "status": "passed", + "exitCode": 0, + "startedAt": "2026-10-19T11:15:41.743Z", + "finishedAt": "2026-10-19T11:15:54.482Z", + "project": { + "id": "lingxiloop-forum", + "configDigest": "ae266b4cc8e1afeae13b80facc02f7d21e666802665e605e4023d36105041e70" + }, + "vcs": { + "commit": "ef594b8b8f0091d49ac4d618d2c221bdc54f617a", + "branch": "codex/fix-case-agent-evidence", + "dirty": true + }, + "summary": { + "discovered": 1, + "selected": 1, + "executed": 1, + "passed": 1, + "failed": 0, + "interrupted": 0, + "flaky": 0, + "skipped": 0 + } + }, + "engines": [ + { + "targetId": "forum", + "platform": "web", + "engine": { + "name": "web", + "version": "0.12.0", + "spiVersion": 1 + } + } + ], + "selectedResults": [ + { + "testId": "e2e/forum/resources.e2e.ts::forum%20offers%20only%20assignments%20and%20discussions%20on%20desktop%20and%20mobile", + "titlePath": [ + "forum offers only assignments and discussions on desktop and mobile" + ], + "file": "e2e/forum/resources.e2e.ts", + "source": { + "file": "e2e/forum/resources.e2e.ts", + "line": 6, + "column": 1 + }, + "status": "passed", + "selected": true + } + ] +} diff --git a/docs/evidence/release-20261019/cases/results/forum187/results.json b/docs/evidence/release-20261019/cases/results/forum187/results.json new file mode 100644 index 000000000..cadd1d37a --- /dev/null +++ b/docs/evidence/release-20261019/cases/results/forum187/results.json @@ -0,0 +1,54 @@ +{ + "passed": true, + "reproduce": "node e2e/server/forum.mjs --browser --issue187", + "results": [ + { + "command": [ + "node", + "--import", + "tsx", + "server/src/migrate-bin.ts" + ], + "startedAt": "2026-10-19T11:15:22.841Z", + "finishedAt": "2026-10-19T11:15:23.401Z", + "exitCode": 0 + }, + { + "command": [ + "node", + "--import", + "tsx", + "server/src/migrate-bin.ts" + ], + "startedAt": "2026-10-19T11:15:23.401Z", + "finishedAt": "2026-10-19T11:15:23.935Z", + "exitCode": 0 + }, + { + "command": [ + "node", + "server/run-integration-tests.mjs", + "--file", + "course-forum.test.ts" + ], + "startedAt": "2026-10-19T11:15:23.935Z", + "finishedAt": "2026-10-19T11:15:35.934Z", + "exitCode": 0 + }, + { + "command": [ + "node", + "node_modules/e2e/dist/cli/bin.js", + "run", + "--config", + "e2e.forum.config.ts" + ], + "startedAt": "2026-10-19T11:15:40.640Z", + "finishedAt": "2026-10-19T11:15:54.511Z", + "exitCode": 0 + } + ], + "limitations": [ + "Synthetic identities, recorded WuKong messages and in-memory object storage; browser validation is reported separately." + ] +} diff --git a/docs/evidence/release-20261019/cases/results/forum187/screenshots/002-forum-scope-navigation-390.png b/docs/evidence/release-20261019/cases/results/forum187/screenshots/002-forum-scope-navigation-390.png new file mode 100644 index 000000000..51c0c48e1 Binary files /dev/null and b/docs/evidence/release-20261019/cases/results/forum187/screenshots/002-forum-scope-navigation-390.png differ diff --git a/docs/evidence/release-20261019/cases/results/forum187/screenshots/003-forum-scope-composer-mobile.png b/docs/evidence/release-20261019/cases/results/forum187/screenshots/003-forum-scope-composer-mobile.png new file mode 100644 index 000000000..401d903c4 Binary files /dev/null and b/docs/evidence/release-20261019/cases/results/forum187/screenshots/003-forum-scope-composer-mobile.png differ diff --git a/docs/evidence/release-20261019/cases/summary.json b/docs/evidence/release-20261019/cases/summary.json new file mode 100644 index 000000000..466c6e60b --- /dev/null +++ b/docs/evidence/release-20261019/cases/summary.json @@ -0,0 +1,90 @@ +{ + "status": "passed", + "head": "ef594b8b8f0091d49ac4d618d2c221bdc54f617a", + "runtime": "official registry 3.5.3", + "runtimeIdentity": "actual-runtime.json", + "physicalDependencyIdentity": "physical-dependencies.json", + "counts": { + "owning": { + "tests": 52, + "pass": 52, + "fail": 0, + "skipped": 0 + }, + "live": { + "tests": 1, + "pass": 1, + "fail": 0, + "skipped": 0 + }, + "cases": { + "discovered": 2, + "selected": 2, + "executed": 2, + "passed": 2, + "failed": 0, + "interrupted": 0, + "flaky": 0, + "skipped": 0 + }, + "forum184": { + "discovered": 3, + "selected": 3, + "executed": 3, + "passed": 3, + "failed": 0, + "interrupted": 0, + "flaky": 0, + "skipped": 0 + }, + "forum187": { + "discovered": 1, + "selected": 1, + "executed": 1, + "passed": 1, + "failed": 0, + "interrupted": 0, + "flaky": 0, + "skipped": 0 + }, + "forumIntegration": { + "tests": 10, + "pass": 10, + "fail": 0, + "skipped": 0 + } + }, + "screenshots": { + "cases": 8, + "forum184": 32, + "forum187": 3 + }, + "visualReview": { + "cases": [ + "student desktop light grid", + "mobile dark single column keyboard focus" + ], + "forum184": [ + "desktop light material tray", + "mobile dark focus mode long body" + ], + "forum187": [ + "mobile three-section navigation", + "mobile discussion/assignment composer" + ] + }, + "history": { + "sourceAndTrackedArtifactsClean": true, + "originalRunnerOutputsRestored": true, + "firstBrowserAttempt": "Browser-cache mismatch: exit 1, zero tests executed; matching cached browser reused for subsequent runs.", + "secondBrowserAttempt": "Font-serving round: exit 0, 2 functional tests passed, but font access failed. It is not final visual acceptance; subsequent physical-dependency run passed.", + "publicAttemptSummary": "execution-attempts.json" + }, + "migrations": "fresh dedicated case database ran 0001 through real 0044 and 0045; browser runners also passed migration/no-op pairs", + "limitations": [ + "Notebook embeddings remain synthetic constant 1024 vectors; no semantic ranking or paid provider qualification", + "Browser fixtures use synthetic identities and in-memory storage/recorded IM", + "Live fixture historical runtime string says 3.5.2; actual-runtime.json verifies this execution used official 3.5.3 and source metadata was not changed", + "No npm install, source/lock change, commit, push, merge or deployment performed in this qualification" + ] +} diff --git a/docs/evidence/release-20261019/provider-acceptance/20261019T110518Z/PUBLIC-SUMMARY.md b/docs/evidence/release-20261019/provider-acceptance/20261019T110518Z/PUBLIC-SUMMARY.md new file mode 100644 index 000000000..dc63c4d97 --- /dev/null +++ b/docs/evidence/release-20261019/provider-acceptance/20261019T110518Z/PUBLIC-SUMMARY.md @@ -0,0 +1,31 @@ +# Formal 3.5.3 provider acceptance + +Validation used published `@lyyzka/lingxios@3.5.3`, package gitHead `59be37b141f41798ec03b2fffabb824d3ef50e36`, on product HEAD `ef594b8b8f0091d49ac4d618d2c221bdc54f617a`. Root/server exact locks matched the formal package integrity: + +`sha512-e/KhQgtBJlKQl1aM+amJGail2ax8rqGL4Bqw68ehIM+2mlUbaq0WT1FD8WQaGU1/t7TyhYk8gt2IuHlX6OKhfQ==` + +| Check | Result | +| --- | --- | +| Existing deterministic provider matrix | 13 passed, 1 failed, 0 skipped, 0 cancelled | +| Real GLM-5.3-Flash canonical validation | 1 passed, 0 failed, 0 skipped | +| Original 3.5.2 evidence restoration | SHA-256 manifests identical | + +The matrix's five HTTP fault cases (429, 503, socket reset, stream interruption, and empty output) passed their bounded-attempt, settled-ledger, durable-result and next-human-turn checks. Group mentions, native admission, first-byte timeout and reliability/cancellation coverage also passed. The unchanged 100ms total-deadline case failed because the local provider observed zero requests rather than one. Its failed-run and delivered classified-feedback assertions passed; the remaining assertions in that case were not reached. A separately recorded isolated rerun subsequently passed 1/1; the initial matrix result remains 13/14. + +The one real-provider invocation used exact `zai-org/GLM-5.3-Flash`: four successful calls, comprising three Agent/runtime calls and one host JSON helper, with no failed attempts or whole-run retry. It passed the actual files.list tool turn, streamed answer, JSON helper, and durable replay checks. There were 35 preview frames, a final text length of 684, and no text retractions. + +Provider-reported usage was 25,466 input tokens and 2,864 output tokens, with no cached input. Tariff-derived total ledger cost was $0.00405601: $0.00400915 for Agent/runtime and $0.00004686 for the helper. This is usage multiplied by the tested tariff, not a supplier deduction receipt. The tariff assertions used CNY 0.8 input, 0.23 cached input and 2.8 output per million tokens, converted at USD/CNY 7. + +The configured 8 calls / 100k tokens / $0.25 budget applies to the Agent root. The host JSON helper is outside that root; the whole-run <= $0.25 check is a final ledger assertion, not a preflight hard cap. No extra load was generated to approach a cap. + +All test data was synthetic and isolated locally. Matrix and live validation ran serially, with no production changes or paid fault injection. Original 3.5.2 evidence was archived and restored exactly; formal 3.5.3 outputs are stored separately. This summary does not claim the broader historical acceptance issues are closed. + +Reproduction uses the existing scripts: `node scripts/runtime-acceptance/provider-fault-matrix.mjs`, followed once by `node --use-env-proxy e2e/server/model-switch.mjs --live` under an existing authorized credential binding. Detailed logs and runtime replay remain private evidence. + +## Isolated deadline rerun: PASSED (1/1) + +After concurrent browser/test load ended, one authorized rerun used the unchanged launcher with only `runtime-deadline-recovery.test.ts`. It passed 1/1 with zero skips/failures, using the same product HEAD, official 3.5.3 package and integrity. The dependency directory had been copied without content changes into the product worktree; its new physical path is recorded in the rerun provenance. No threshold was changed and no full-matrix rerun occurred. + +The actual synthetic provider received one initial request and observed one disconnect. The run failed with model_unavailable feedback, one ledger call settled, one terminal notice was retained, and the next human request succeeded. Measured run elapsed time was 400.35ms (the existing test limit is <3000ms; provider total timeout remains 100ms). The original matrix result remains 13/14; this separate rerun is 1/1. Passing under lower load is consistent with timing sensitivity, but does not establish the cause of the initial failure. + +Rerun command: `node scripts/runtime-acceptance/provider-fault-matrix.mjs runtime-deadline-recovery.test.ts`. Paid calls: 0. Old evidence and known auxiliary artifacts were restored byte-for-byte again, and the product worktree remained clean. diff --git a/docs/evidence/release-20261019/provider-acceptance/20261019T110518Z/live-summary.json b/docs/evidence/release-20261019/provider-acceptance/20261019T110518Z/live-summary.json new file mode 100644 index 000000000..542fed424 --- /dev/null +++ b/docs/evidence/release-20261019/provider-acceptance/20261019T110518Z/live-summary.json @@ -0,0 +1,26 @@ +{ + "passed": true, + "model": "zai-org/GLM-5.3-Flash", + "actualCalls": 4, + "agentCalls": 3, + "hostCalls": 1, + "succeeded": 4, + "failed": 0, + "inputTokens": 25466, + "outputTokens": 2864, + "cachedInputTokens": 0, + "totalCostUSD": 0.00405601, + "costMeaning": "provider-reported usage multiplied by tariff; not supplier invoice", + "previewFrames": 35, + "finalLength": 684, + "retractions": 0, + "finalRetractions": 0, + "agentRootBudget": { + "calls": 8, + "tokens": 100000, + "costUSD": 0.25 + }, + "helperOutsideRootBudget": true, + "wholeRunRetries": 0, + "combinedCostLimit": "post-run ledger assertion <= $0.25" +} diff --git a/docs/evidence/release-20261019/provider-acceptance/20261019T110518Z/matrix-summary.json b/docs/evidence/release-20261019/provider-acceptance/20261019T110518Z/matrix-summary.json new file mode 100644 index 000000000..79dffbd75 --- /dev/null +++ b/docs/evidence/release-20261019/provider-acceptance/20261019T110518Z/matrix-summary.json @@ -0,0 +1,13 @@ +{ + "directory": "20261019T110518Z", + "exitCode": 1, + "counts": { + "tests": 14, + "pass": 13, + "fail": 1, + "cancelled": 0, + "skipped": 0 + }, + "passed": false, + "oldEvidenceRestored": true +} diff --git a/docs/evidence/release-20261019/provider-acceptance/20261019T110518Z/provenance.json b/docs/evidence/release-20261019/provider-acceptance/20261019T110518Z/provenance.json new file mode 100644 index 000000000..ec174d863 --- /dev/null +++ b/docs/evidence/release-20261019/provider-acceptance/20261019T110518Z/provenance.json @@ -0,0 +1,55 @@ +{ + "productGitHead": "ef594b8b8f0091d49ac4d618d2c221bdc54f617a", + "packageVersion": "3.5.3", + "packageGitHead": "59be37b141f41798ec03b2fffabb824d3ef50e36", + "integrity": "sha512-e/KhQgtBJlKQl1aM+amJGail2ax8rqGL4Bqw68ehIM+2mlUbaq0WT1FD8WQaGU1/t7TyhYk8gt2IuHlX6OKhfQ==", + "installedPath": "node_modules/@lyyzka/lingxios", + "locks": { + "root": { + "version": "3.5.3", + "resolved": "https://npm.pkg.github.com/download/@lyyzka/lingxios/3.5.3/b6a5ea08d1488eba798e5dff4d679f8bbbe33ef2", + "integrity": "sha512-e/KhQgtBJlKQl1aM+amJGail2ax8rqGL4Bqw68ehIM+2mlUbaq0WT1FD8WQaGU1/t7TyhYk8gt2IuHlX6OKhfQ==", + "license": "MIT", + "dependencies": { + "mammoth": "1.12.2", + "pdfjs-dist": "6.3.289" + }, + "bin": { + "lingxios-doctor": "dist/src/cli/doctor.js", + "lingxios-eval": "dist/src/cli/eval.js", + "lingxios-worker": "dist/src/worker/main.js" + }, + "engines": { + "node": ">=22.13.0" + } + }, + "server/": { + "version": "3.5.3", + "resolved": "https://npm.pkg.github.com/download/@lyyzka/lingxios/3.5.3/b6a5ea08d1488eba798e5dff4d679f8bbbe33ef2", + "integrity": "sha512-e/KhQgtBJlKQl1aM+amJGail2ax8rqGL4Bqw68ehIM+2mlUbaq0WT1FD8WQaGU1/t7TyhYk8gt2IuHlX6OKhfQ==", + "license": "MIT", + "dependencies": { + "mammoth": "1.12.2", + "pdfjs-dist": "6.3.289" + }, + "bin": { + "lingxios-doctor": "dist/src/cli/doctor.js", + "lingxios-eval": "dist/src/cli/eval.js", + "lingxios-worker": "dist/src/worker/main.js" + }, + "engines": { + "node": ">=22.13.0" + } + } + }, + "installationReceipt": { + "observedAt": "2026-10-19T11:02:58.106Z", + "version": "3.5.3", + "expectedCommit": "59be37b141f41798ec03b2fffabb824d3ef50e36", + "registryGitHead": "59be37b141f41798ec03b2fffabb824d3ef50e36", + "integrity": "sha512-e/KhQgtBJlKQl1aM+amJGail2ax8rqGL4Bqw68ehIM+2mlUbaq0WT1FD8WQaGU1/t7TyhYk8gt2IuHlX6OKhfQ==", + "installedPath": "node_modules/@lyyzka/lingxios", + "exactRootAndServerLocks": true, + "candidateSymlinkRemoved": true + } +} diff --git a/docs/evidence/release-20261019/provider-acceptance/20261019T111735Z-deadline-targeted/matrix-summary.json b/docs/evidence/release-20261019/provider-acceptance/20261019T111735Z-deadline-targeted/matrix-summary.json new file mode 100644 index 000000000..e86be44ab --- /dev/null +++ b/docs/evidence/release-20261019/provider-acceptance/20261019T111735Z-deadline-targeted/matrix-summary.json @@ -0,0 +1,13 @@ +{ + "directory": "20261019T111735Z-deadline-targeted", + "exitCode": 0, + "counts": { + "tests": 1, + "pass": 1, + "fail": 0, + "cancelled": 0, + "skipped": 0 + }, + "passed": true, + "oldEvidenceRestored": true +} diff --git a/docs/evidence/release-20261019/provider-acceptance/20261019T111735Z-deadline-targeted/provenance.json b/docs/evidence/release-20261019/provider-acceptance/20261019T111735Z-deadline-targeted/provenance.json new file mode 100644 index 000000000..ec174d863 --- /dev/null +++ b/docs/evidence/release-20261019/provider-acceptance/20261019T111735Z-deadline-targeted/provenance.json @@ -0,0 +1,55 @@ +{ + "productGitHead": "ef594b8b8f0091d49ac4d618d2c221bdc54f617a", + "packageVersion": "3.5.3", + "packageGitHead": "59be37b141f41798ec03b2fffabb824d3ef50e36", + "integrity": "sha512-e/KhQgtBJlKQl1aM+amJGail2ax8rqGL4Bqw68ehIM+2mlUbaq0WT1FD8WQaGU1/t7TyhYk8gt2IuHlX6OKhfQ==", + "installedPath": "node_modules/@lyyzka/lingxios", + "locks": { + "root": { + "version": "3.5.3", + "resolved": "https://npm.pkg.github.com/download/@lyyzka/lingxios/3.5.3/b6a5ea08d1488eba798e5dff4d679f8bbbe33ef2", + "integrity": "sha512-e/KhQgtBJlKQl1aM+amJGail2ax8rqGL4Bqw68ehIM+2mlUbaq0WT1FD8WQaGU1/t7TyhYk8gt2IuHlX6OKhfQ==", + "license": "MIT", + "dependencies": { + "mammoth": "1.12.2", + "pdfjs-dist": "6.3.289" + }, + "bin": { + "lingxios-doctor": "dist/src/cli/doctor.js", + "lingxios-eval": "dist/src/cli/eval.js", + "lingxios-worker": "dist/src/worker/main.js" + }, + "engines": { + "node": ">=22.13.0" + } + }, + "server/": { + "version": "3.5.3", + "resolved": "https://npm.pkg.github.com/download/@lyyzka/lingxios/3.5.3/b6a5ea08d1488eba798e5dff4d679f8bbbe33ef2", + "integrity": "sha512-e/KhQgtBJlKQl1aM+amJGail2ax8rqGL4Bqw68ehIM+2mlUbaq0WT1FD8WQaGU1/t7TyhYk8gt2IuHlX6OKhfQ==", + "license": "MIT", + "dependencies": { + "mammoth": "1.12.2", + "pdfjs-dist": "6.3.289" + }, + "bin": { + "lingxios-doctor": "dist/src/cli/doctor.js", + "lingxios-eval": "dist/src/cli/eval.js", + "lingxios-worker": "dist/src/worker/main.js" + }, + "engines": { + "node": ">=22.13.0" + } + } + }, + "installationReceipt": { + "observedAt": "2026-10-19T11:02:58.106Z", + "version": "3.5.3", + "expectedCommit": "59be37b141f41798ec03b2fffabb824d3ef50e36", + "registryGitHead": "59be37b141f41798ec03b2fffabb824d3ef50e36", + "integrity": "sha512-e/KhQgtBJlKQl1aM+amJGail2ax8rqGL4Bqw68ehIM+2mlUbaq0WT1FD8WQaGU1/t7TyhYk8gt2IuHlX6OKhfQ==", + "installedPath": "node_modules/@lyyzka/lingxios", + "exactRootAndServerLocks": true, + "candidateSymlinkRemoved": true + } +} diff --git a/docs/evidence/release-20261019/provider-acceptance/FINAL-SUMMARY.json b/docs/evidence/release-20261019/provider-acceptance/FINAL-SUMMARY.json new file mode 100644 index 000000000..0172d229e --- /dev/null +++ b/docs/evidence/release-20261019/provider-acceptance/FINAL-SUMMARY.json @@ -0,0 +1,51 @@ +{ + "productHead": "ef594b8b8f0091d49ac4d618d2c221bdc54f617a", + "package": "@lyyzka/lingxios@3.5.3", + "packageGitHead": "59be37b141f41798ec03b2fffabb824d3ef50e36", + "initialMatrix": { + "path": "20261019T110518Z", + "tests": 14, + "pass": 13, + "fail": 1, + "skipped": 0, + "failure": "100ms total deadline provider request count 0 instead of 1" + }, + "live": { + "passed": true, + "model": "zai-org/GLM-5.3-Flash", + "actualCalls": 4, + "agentCalls": 3, + "hostCalls": 1, + "succeeded": 4, + "failed": 0, + "inputTokens": 25466, + "outputTokens": 2864, + "cachedInputTokens": 0, + "totalCostUSD": 0.00405601, + "costMeaning": "provider-reported usage multiplied by tariff; not supplier invoice", + "previewFrames": 35, + "finalLength": 684, + "retractions": 0, + "finalRetractions": 0, + "agentRootBudget": { + "calls": 8, + "tokens": 100000, + "costUSD": 0.25 + }, + "helperOutsideRootBudget": true, + "wholeRunRetries": 0, + "combinedCostLimit": "post-run ledger assertion <= $0.25" + }, + "isolatedDeadlineRerun": { + "path": "20261019T111735Z-deadline-targeted", + "tests": 1, + "pass": 1, + "fail": 0, + "skipped": 0, + "paidCalls": 0, + "unchangedThreshold": true + }, + "oldEvidenceRestored": true, + "sourceChanges": false, + "worktreeClean": true +} diff --git a/docs/evidence/release-20261019/questionnaire/PUBLIC-SUMMARY.md b/docs/evidence/release-20261019/questionnaire/PUBLIC-SUMMARY.md new file mode 100644 index 000000000..5a2f72d98 --- /dev/null +++ b/docs/evidence/release-20261019/questionnaire/PUBLIC-SUMMARY.md @@ -0,0 +1,5 @@ +PR190 在冻结提交 `05b6fd2ed9ee53ed5c1fb07e29ba7dc730899878` 上通过正式发布的 `@lyyzka/lingxios@3.5.3` 验收;包的 registry gitHead 为 `59be37b141f41798ec03b2fffabb824d3ef50e36`,root/server 均精确锁定版本及完整性。 + +相关集成 **66/66**(问卷与消息36、迁移30)、服务端 **107/107**、网页定向 **92/92**、官方浏览器 **8/8**,均零失败、零跳过。服务端/网页/E2E 类型检查、服务端 lint 和全新生产模式测试页面构建均通过。验证包含持久等待、显式恢复重试、重复提交、取消/权限/版本拦截,以及迁移数据保全和事务回滚。 + +浏览器首次启动因报告目录位于项目外被工具拒绝,执行0个测试;修正输出路径后8个用例全部通过,首轮记录单独保留。所有测试使用隔离本地服务和合成数据,没有生产或真实模型调用。源码及锁文件未变更。 diff --git a/docs/evidence/release-20261019/questionnaire/browser/junit.xml b/docs/evidence/release-20261019/questionnaire/browser/junit.xml new file mode 100644 index 000000000..f9f4012bb --- /dev/null +++ b/docs/evidence/release-20261019/questionnaire/browser/junit.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/docs/evidence/release-20261019/questionnaire/browser/report.json b/docs/evidence/release-20261019/questionnaire/browser/report.json new file mode 100644 index 000000000..e0c8ef283 --- /dev/null +++ b/docs/evidence/release-20261019/questionnaire/browser/report.json @@ -0,0 +1,167 @@ +{ + "schemaVersion": "public-report-projection-1", + "note": "Selected result summary extracted from the official browser report. Steps, HTTP/console observations, target origins and unselected tests are omitted. Source hash is in SOURCE-MANIFEST.json.", + "run": { + "id": "01a153d8-abb6-7a88-9bbc-68da8217a452", + "runner": { + "name": "e2e", + "version": "0.17.0" + }, + "status": "passed", + "exitCode": 0, + "startedAt": "2026-10-19T11:07:52.041Z", + "finishedAt": "2026-10-19T11:08:19.112Z", + "project": { + "id": "lingxiloop-web", + "configDigest": "902db8f4cde4d759622f97d393ca196019d582122cb8e3fc38126f5b61dc0bd4" + }, + "vcs": { + "commit": "05b6fd2ed9ee53ed5c1fb07e29ba7dc730899878", + "branch": "codex/pr190-resume-repair-20261019", + "dirty": false + }, + "summary": { + "discovered": 139, + "selected": 8, + "executed": 8, + "passed": 8, + "failed": 0, + "interrupted": 0, + "flaky": 0, + "skipped": 0 + } + }, + "engines": [ + { + "targetId": "web", + "platform": "web", + "engine": { + "name": "web", + "version": "0.12.0", + "spiVersion": 1 + } + } + ], + "selectedResults": [ + { + "testId": "e2e/web/questionnaire.e2e.ts::durable%20questionnaire::trusted%20questionnaire%20binding%20replaces%20generic%20continuation%20forms", + "titlePath": [ + "durable questionnaire", + "trusted questionnaire binding replaces generic continuation forms" + ], + "file": "e2e/web/questionnaire.e2e.ts", + "source": { + "file": "e2e/web/questionnaire.e2e.ts", + "line": 5, + "column": 3 + }, + "status": "passed", + "selected": true + }, + { + "testId": "e2e/web/questionnaire.e2e.ts::durable%20questionnaire::unread%20status%20blocks%20submission%3B%20waiting%20stays%20idle%20until%20explicit%20submit", + "titlePath": [ + "durable questionnaire", + "unread status blocks submission; waiting stays idle until explicit submit" + ], + "file": "e2e/web/questionnaire.e2e.ts", + "source": { + "file": "e2e/web/questionnaire.e2e.ts", + "line": 14, + "column": 3 + }, + "status": "passed", + "selected": true + }, + { + "testId": "e2e/web/questionnaire.e2e.ts::durable%20questionnaire::durable%20answers%20render%20read-only%20without%20answer%20history%20and%20refresh%20never%20posts", + "titlePath": [ + "durable questionnaire", + "durable answers render read-only without answer history and refresh never posts" + ], + "file": "e2e/web/questionnaire.e2e.ts", + "source": { + "file": "e2e/web/questionnaire.e2e.ts", + "line": 21, + "column": 3 + }, + "status": "passed", + "selected": true + }, + { + "testId": "e2e/web/questionnaire.e2e.ts::durable%20questionnaire::double%20clicks%20submit%20once%3B%20failure%20retries%20and%20refresh%20preserves%20accepted%20answers", + "titlePath": [ + "durable questionnaire", + "double clicks submit once; failure retries and refresh preserves accepted answers" + ], + "file": "e2e/web/questionnaire.e2e.ts", + "source": { + "file": "e2e/web/questionnaire.e2e.ts", + "line": 31, + "column": 3 + }, + "status": "passed", + "selected": true + }, + { + "testId": "e2e/web/questionnaire.e2e.ts::durable%20questionnaire::a%20lost%20accepted%20response%20reconciles%20canonical%20answers%20before%20another%20POST", + "titlePath": [ + "durable questionnaire", + "a lost accepted response reconciles canonical answers before another POST" + ], + "file": "e2e/web/questionnaire.e2e.ts", + "source": { + "file": "e2e/web/questionnaire.e2e.ts", + "line": 46, + "column": 3 + }, + "status": "passed", + "selected": true + }, + { + "testId": "e2e/web/questionnaire.e2e.ts::durable%20questionnaire::pending%20submission%20freezes%20saved%20answers%20and%20retries%20only%20those%20values", + "titlePath": [ + "durable questionnaire", + "pending submission freezes saved answers and retries only those values" + ], + "file": "e2e/web/questionnaire.e2e.ts", + "source": { + "file": "e2e/web/questionnaire.e2e.ts", + "line": 58, + "column": 3 + }, + "status": "passed", + "selected": true + }, + { + "testId": "e2e/web/questionnaire.e2e.ts::durable%20questionnaire::an%20exhausted%20resume%20keeps%20canonical%20answers%20and%20requires%20one%20explicit%20recovery", + "titlePath": [ + "durable questionnaire", + "an exhausted resume keeps canonical answers and requires one explicit recovery" + ], + "file": "e2e/web/questionnaire.e2e.ts", + "source": { + "file": "e2e/web/questionnaire.e2e.ts", + "line": 69, + "column": 3 + }, + "status": "passed", + "selected": true + }, + { + "testId": "e2e/web/questionnaire.e2e.ts::durable%20questionnaire::unavailable%20and%20foreign%20owner%20cards%20stay%20disabled%3B%20loading%20failure%20can%20reload", + "titlePath": [ + "durable questionnaire", + "unavailable and foreign owner cards stay disabled; loading failure can reload" + ], + "file": "e2e/web/questionnaire.e2e.ts", + "source": { + "file": "e2e/web/questionnaire.e2e.ts", + "line": 87, + "column": 3 + }, + "status": "passed", + "selected": true + } + ] +} diff --git a/docs/evidence/release-20261019/questionnaire/execution-attempts.json b/docs/evidence/release-20261019/questionnaire/execution-attempts.json new file mode 100644 index 000000000..cce29c18d --- /dev/null +++ b/docs/evidence/release-20261019/questionnaire/execution-attempts.json @@ -0,0 +1,10 @@ +{ + "firstBrowserAttempt": { + "exitCode": 2, + "testsExecuted": 0, + "reason": "official e2e output directory must be inside project root" + }, + "correction": "use .e2e/pr190-official-3.5.3 and copy completed reports to this evidence directory", + "notCountedAsTestPass": true, + "summaryFile": "execution-attempts.json" +} diff --git a/docs/evidence/release-20261019/questionnaire/questionnaire-resume-retry.png b/docs/evidence/release-20261019/questionnaire/questionnaire-resume-retry.png new file mode 100644 index 000000000..858fe0369 Binary files /dev/null and b/docs/evidence/release-20261019/questionnaire/questionnaire-resume-retry.png differ diff --git a/docs/evidence/release-20261019/questionnaire/validation.json b/docs/evidence/release-20261019/questionnaire/validation.json new file mode 100644 index 000000000..3b30ce4b9 --- /dev/null +++ b/docs/evidence/release-20261019/questionnaire/validation.json @@ -0,0 +1,89 @@ +{ + "verifiedAt": "2026-10-19T11:10:01.695658+00:00", + "productCommit": "05b6fd2ed9ee53ed5c1fb07e29ba7dc730899878", + "runtime": { + "version": "3.5.3", + "registryGitHead": "59be37b141f41798ec03b2fffabb824d3ef50e36", + "integrity": "sha512-e/KhQgtBJlKQl1aM+amJGail2ax8rqGL4Bqw68ehIM+2mlUbaq0WT1FD8WQaGU1/t7TyhYk8gt2IuHlX6OKhfQ==", + "qualification": "exact official published package; root and server manifests/locks verified" + }, + "counts": { + "integration": { + "tests": 66, + "pass": 66, + "fail": 0, + "cancelled": 0, + "skipped": 0 + }, + "server": { + "tests": 107, + "pass": 107, + "fail": 0, + "cancelled": 0, + "skipped": 0 + }, + "web": { + "tests": 92, + "pass": 92, + "fail": 0, + "cancelled": 0, + "skipped": 0 + } + }, + "integrationBreakdown": { + "owningQuestionnaireAndMessaging": 36, + "migration": 30 + }, + "browser": { + "tests": 8, + "pass": 8, + "fail": 0, + "errors": 0, + "skipped": 0, + "engine": "official @e2e-dev/web via tester-army/e2e", + "freshProductionBuild": { + "file": ".e2e/questionnaire-site/e2e/questionnaire.html", + "modifiedAt": "2026-10-19T11:06:45.476Z", + "sha256": "a193a1f980ed3f2e5c49f5c74b01c623743931d356e66c246a7f2e691435c294" + }, + "report": "browser/report.json", + "junit": "browser/junit.xml", + "screenshot": "questionnaire-resume-retry.png", + "screenshotReviewed": true + }, + "checks": { + "serverTypecheck": "passed", + "webTypecheck": "passed", + "e2eTypecheck": "passed", + "serverLint": "passed", + "fixtureProductionBuild": "passed" + }, + "executionCorrection": { + "firstBrowserAttempt": { + "exitCode": 2, + "testsExecuted": 0, + "reason": "official e2e output directory must be inside project root" + }, + "correction": "use .e2e/pr190-official-3.5.3 and copy completed reports to this evidence directory", + "notCountedAsTestPass": true, + "summaryFile": "execution-attempts.json" + }, + "isolation": { + "productionAccess": false, + "liveProviders": false, + "sourceOrLockChanges": false, + "installs": false, + "commitsOrPushes": false, + "oldCandidateEvidencePreserved": true, + "freshPreviewStopped": true + }, + "lockSha256": { + "package.json": "bcfffb6bc293e9751aba0c3cfc27cf6f7627e1fca5960c46c39eee072d3f191f", + "package-lock.json": "f3d91f01d323d4309a75dc9093bf9d0af0fd9049e5dc15a1dbcc3a4e8eca2a2e", + "server/package.json": "0e67ec29bea0237f140b031479efc98f7747141688d0f923b10fb261f643770c", + "server/package-lock.json": "9831c9e0fdaee746934a370c7ecd7e0f511e7cae8cf2494c175bdeb14f1967ca" + }, + "commands": { + "reference": "../COMMANDS.md" + } +} diff --git a/docs/evidence/release-20261019/release-state.json b/docs/evidence/release-20261019/release-state.json new file mode 100644 index 000000000..1c4d491a7 --- /dev/null +++ b/docs/evidence/release-20261019/release-state.json @@ -0,0 +1,59 @@ +{ + "preparedAt": "2026-10-19T11:22:36.654279+00:00", + "finalMainCommit": "b76c4cc00f545ddbca27bced6628e1ed191e6777", + "runtime": { + "version": "3.5.3", + "registryGitHead": "59be37b141f41798ec03b2fffabb824d3ef50e36", + "integrity": "sha512-e/KhQgtBJlKQl1aM+amJGail2ax8rqGL4Bqw68ehIM+2mlUbaq0WT1FD8WQaGU1/t7TyhYk8gt2IuHlX6OKhfQ==", + "qualification": "exact official published package; root and server manifests/locks verified" + }, + "runtimeReleaseCi": { + "runId": "39240936281", + "url": "https://github.com/LingXi-Org/LingxiOS/actions/runs/39240936281" + }, + "runtimePublish": { + "runId": "39241356024", + "url": "https://github.com/LingXi-Org/LingxiOS/actions/runs/39241356024", + "status": "published" + }, + "mergedProductPRs": [ + 185, + 188, + 192, + 191, + 190, + 189 + ], + "productCiReportedByReleaseOwner": { + "PR190": { + "runId": "39241771904", + "integrationPass": 269, + "gatedSkip": 21 + }, + "PR189": { + "integrationPass": 281, + "gatedSkip": 21 + }, + "finalMain": { + "runId": "39243667498", + "status": "running-at-task-handoff", + "passedNotClaimed": true, + "url": "https://github.com/LingXi-Org/LingxiLoop/actions/runs/39243667498" + } + }, + "pendingHistoricalIssues": [ + 153, + 155, + 157, + 161 + ], + "historicalSoak": { + "runtime": "3.5.1", + "samples": 797, + "elapsedSeconds": 47829.58, + "status": "incomplete", + "notTransferredTo353": true + }, + "productionDeployment": "not performed", + "snapshotPhase": "prerelease; deployment outcome recorded separately" +}