Checkpoint web parity through Chromium input tasks
This commit is contained in:
41
docs/tasks/M13-04F.md
Normal file
41
docs/tasks/M13-04F.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# M13-04F:受限且脱敏的 Blender 输出
|
||||
|
||||
- `task`: `M13-04F`
|
||||
- `parent`: `M13-04E`
|
||||
- `status`: `done`
|
||||
|
||||
## 目标
|
||||
|
||||
为真实 Blender server job 建立有界 stdout/stderr receipt:输出超出预算时截断,并过滤凭据和
|
||||
内部绝对路径;仍保持 `execution=DISABLED`,不发布 job 结果。
|
||||
|
||||
## 输入
|
||||
|
||||
- manifest:`tests/golden/M13-04E/manifest.json`
|
||||
- 生产启动:`tools/web/server-job-startup.py`
|
||||
- 工作区合同:`tools/web/server-job-isolation.mjs`
|
||||
- 最小运行时:固定 Blender 5.2 `--background --factory-startup`
|
||||
|
||||
## 范围
|
||||
|
||||
- 做:固定 stdout/stderr 字节预算、截断标记、凭据/内部路径脱敏和稳定 receipt 字段。
|
||||
- 不做:取消进程、进程树清理、超时/OOM 错误映射、OPFS 结果提交;这些分别属于 G-J。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:server-job-output-redaction
|
||||
```
|
||||
|
||||
验收必须包含正常输出、超长输出、token/API key、Unix/Windows 风格内部路径和空流负例;真实
|
||||
输出不可把 source path、环境变量值或完整命令行泄露到 report。
|
||||
|
||||
## 产物和交接
|
||||
|
||||
报告、checker、unit/E2E(如适用)、package hash 和 manifest 写入 `tests/golden/M13-04F/`;
|
||||
成功后 manifest 的 `nextTask` 必须为 `M13-04G`。
|
||||
|
||||
## 回滚
|
||||
|
||||
移除输出 receipt/脱敏实现、专项测试、checker、package 命令、报告、manifest 和状态页;将
|
||||
`M13-04E` 恢复为队列尾。
|
||||
37
docs/tasks/M13-04G.md
Normal file
37
docs/tasks/M13-04G.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# M13-04G:取消 Blender 进程树
|
||||
|
||||
- `task`: `M13-04G`
|
||||
- `parent`: `M13-04F`
|
||||
- `status`: `done`
|
||||
|
||||
## 目标
|
||||
|
||||
取消真实 Blender server job 时终止整个 process tree,等待子进程退出,并清理一次性 job 目录;
|
||||
不得留下孤儿进程或临时文件。
|
||||
|
||||
## 输入
|
||||
|
||||
- manifest:`tests/golden/M13-04F/manifest.json`
|
||||
- process receipt:M13-04F 输出 receipt
|
||||
- job 目录:`tools/web/server-job-isolation.mjs`
|
||||
|
||||
## 范围
|
||||
|
||||
- 做:Abort/cancel 到 process-group/tree 的映射、幂等等待、目录清理和 orphan 计数。
|
||||
- 不做:timeout/OOM/signal 分类和结果 hash 校验;分别属于 H/I。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:server-job-cancellation
|
||||
```
|
||||
|
||||
必须有真实长运行 fixture、取消竞态、重复取消、子进程和目录残留负例。
|
||||
|
||||
## 产物和交接
|
||||
|
||||
成功后生成 `tests/golden/M13-04G/` 证据,manifest 的 `nextTask` 为 `M13-04H`。
|
||||
|
||||
## 回滚
|
||||
|
||||
删除取消控制器、专项测试、checker、报告、manifest、package 命令和状态页,恢复 M13-04F 队列尾。
|
||||
37
docs/tasks/M13-04H.md
Normal file
37
docs/tasks/M13-04H.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# M13-04H:稳定化进程故障码
|
||||
|
||||
- `task`: `M13-04H`
|
||||
- `parent`: `M13-04G`
|
||||
- `status`: `done`
|
||||
|
||||
## 目标
|
||||
|
||||
把真实 Blender job 的 timeout、OOM、非零退出和 signal 结果转换为稳定、可诊断且不泄露内部
|
||||
细节的错误码;旧项目 revision 不得被错误结果覆盖。
|
||||
|
||||
## 输入
|
||||
|
||||
- manifest:`tests/golden/M13-04G/manifest.json`
|
||||
- cancel/cleanup receipt:M13-04G
|
||||
- resource limits:`tools/web/server-job-resource-budget.mjs`
|
||||
|
||||
## 范围
|
||||
|
||||
- 做:故障分类优先级、退出状态映射、旧 revision 保持和统一错误 receipt。
|
||||
- 不做:成功结果进入 OPFS、重试幂等;分别属于 I/J。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:server-job-fault-codes
|
||||
```
|
||||
|
||||
覆盖 wall timeout、memory/OOM、SIGTERM/SIGKILL、普通非零退出和无法识别状态,并验证清理完成。
|
||||
|
||||
## 产物和交接
|
||||
|
||||
成功后生成 `tests/golden/M13-04H/` 证据,manifest 的 `nextTask` 为 `M13-04I`。
|
||||
|
||||
## 回滚
|
||||
|
||||
删除故障映射、测试、checker、报告、manifest、package 命令和状态页,恢复 M13-04G 队列尾。
|
||||
37
docs/tasks/M13-04I.md
Normal file
37
docs/tasks/M13-04I.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# M13-04I:校验并提交 server 结果
|
||||
|
||||
- `task`: `M13-04I`
|
||||
- `parent`: `M13-04H`
|
||||
- `status`: `done`
|
||||
|
||||
## 目标
|
||||
|
||||
仅当 source、settings、Blender build 和 output hash 全部匹配请求时,才把 server job 结果绑定到
|
||||
OPFS;任何篡改、过期或重放都 fail-closed。
|
||||
|
||||
## 输入
|
||||
|
||||
- manifest:`tests/golden/M13-04H/manifest.json`
|
||||
- source/output receipt:M13-04H
|
||||
- OPFS 提交合同:项目现有原子保存协议
|
||||
|
||||
## 范围
|
||||
|
||||
- 做:四项 hash 绑定、结果版本检查、临时文件到正式对象的原子提交和失败清理。
|
||||
- 不做:同一 request 的重复提交策略;交给 J。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:server-job-result-binding
|
||||
```
|
||||
|
||||
覆盖 source/settings/build/output 任一 hash 变化、旧 revision、部分输出和 OPFS quota 失败。
|
||||
|
||||
## 产物和交接
|
||||
|
||||
成功后生成 `tests/golden/M13-04I/` 证据,manifest 的 `nextTask` 为 `M13-04J`。
|
||||
|
||||
## 回滚
|
||||
|
||||
删除结果绑定实现、测试、checker、报告、manifest、package 命令和状态页,恢复 M13-04H 队列尾。
|
||||
37
docs/tasks/M13-04J.md
Normal file
37
docs/tasks/M13-04J.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# M13-04J:server request 幂等重试
|
||||
|
||||
- `task`: `M13-04J`
|
||||
- `parent`: `M13-04I`
|
||||
- `status`: `done`
|
||||
|
||||
## 目标
|
||||
|
||||
同一 request 重试只能复用或确认同一个已验证结果,不得把两个冲突结果绑定到同一项目;不同
|
||||
request 必须保持隔离。
|
||||
|
||||
## 输入
|
||||
|
||||
- manifest:`tests/golden/M13-04I/manifest.json`
|
||||
- verified result:M13-04I
|
||||
- request/result identity:M13-04A 至 M13-04I 的 receipts
|
||||
|
||||
## 范围
|
||||
|
||||
- 做:request identity、重试窗口、重复提交、冲突输出和并发绑定策略。
|
||||
- 不做:新增 Blender 能力或放宽脚本执行策略;M13 全程仍需显式安全门。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:server-job-idempotency
|
||||
```
|
||||
|
||||
覆盖成功重试、失败后重试、并发重复、同 request 冲突 output 和跨项目 request 误用。
|
||||
|
||||
## 产物和交接
|
||||
|
||||
成功后生成 `tests/golden/M13-04J/` 证据,manifest 的 `nextTask` 为 `M13-05A`。
|
||||
|
||||
## 回滚
|
||||
|
||||
删除幂等键/绑定策略、测试、checker、报告、manifest、package 命令和状态页,恢复 M13-04I 队列尾。
|
||||
39
docs/tasks/M13-05A.md
Normal file
39
docs/tasks/M13-05A.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# M13-05A:CSP 默认拒绝策略
|
||||
|
||||
- `task`: `M13-05A`
|
||||
- `parent`: `M13-04J`
|
||||
- `status`: `done`
|
||||
|
||||
## 目标
|
||||
|
||||
为部署服务器和生产构建统一声明 CSP,拒绝 inline script、eval、data script 和未声明 origin;
|
||||
所有响应(包括 404)都必须携带相同策略。
|
||||
|
||||
## 输入
|
||||
|
||||
- manifest:`tests/golden/M13-04J/manifest.json`
|
||||
- 部署合同:`docs/web/deployment-contract.json`
|
||||
- 入口与构建:`web/app/index.html`、`web/app/vite.config.ts`
|
||||
|
||||
## 范围
|
||||
|
||||
- 做:`default-src/script-src/worker-src/connect-src` same-origin 约束、`object-src/base-uri/frame-ancestors`
|
||||
拒绝规则、源代码/构建产物扫描和 HTTP 响应检查。
|
||||
- 不做:按资源类型拆分 Worker/WASM/font/image/media 策略;交给 M13-05B。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:csp-policy
|
||||
node tools/web/check-deployment-contract.mjs
|
||||
npm --prefix web run typecheck
|
||||
npm --prefix web run build
|
||||
```
|
||||
|
||||
## 产物和交接
|
||||
|
||||
报告和 manifest 位于 `tests/golden/M13-05A/`;下一任务由 manifest 的 `nextTask` 指向 `M13-05B`。
|
||||
|
||||
## 回滚
|
||||
|
||||
恢复部署合同、HTTP 头、checker、报告、manifest、package 命令和状态页;将 `M13-04J` 恢复为队列尾。
|
||||
28
docs/tasks/M13-05B.md
Normal file
28
docs/tasks/M13-05B.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# M13-05B:资源类型 CSP 矩阵
|
||||
|
||||
- `task`: `M13-05B`
|
||||
- `parent`: `M13-05A`
|
||||
- `status`: `done`
|
||||
|
||||
## 目标
|
||||
|
||||
分别验证 Worker、WASM、font、image、media 资源只能从同源加载;WASM 使用显式
|
||||
`wasm-unsafe-eval` 编译能力,JavaScript `eval` 仍被拒绝。`data:`、`blob:` 和跨源连接必须被
|
||||
浏览器 CSP 阻断。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:csp-resource-policy
|
||||
node tools/web/check-deployment-contract.mjs
|
||||
npm --prefix web run typecheck
|
||||
npm --prefix web run build
|
||||
```
|
||||
|
||||
## 产物和交接
|
||||
|
||||
报告和 manifest 位于 `tests/golden/M13-05B/`;下一任务由 manifest 的 `nextTask` 指向 `M13-05C`。
|
||||
|
||||
## 回滚
|
||||
|
||||
恢复资源 CSP、MIME 合同、checker、报告、manifest、package 命令和状态页;将 `M13-05A` 恢复为队列尾。
|
||||
27
docs/tasks/M13-05C.md
Normal file
27
docs/tasks/M13-05C.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# M13-05C:依赖分类 inventory
|
||||
|
||||
- `task`: `M13-05C`
|
||||
- `parent`: `M13-05B`
|
||||
- `status`: `done`
|
||||
|
||||
## 目标
|
||||
|
||||
从 `web/package.json` 和 `web/package-lock.json` 的真实 npm 依赖闭包分别生成 production、build
|
||||
和 test inventory。每个包绑定 package path、版本、resolved、integrity 和所属类别;共享包显式
|
||||
记录,不允许未分类或依赖树漂移。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:dependency-inventory
|
||||
npm --prefix web run typecheck
|
||||
npm --prefix web run build
|
||||
```
|
||||
|
||||
## 产物和交接
|
||||
|
||||
报告和 manifest 位于 `tests/golden/M13-05C/`;下一任务由 manifest 的 `nextTask` 指向 `M13-05D`。
|
||||
|
||||
## 回滚
|
||||
|
||||
移除 inventory 生成器、checker、报告、manifest、package 命令和状态页;将 `M13-05B` 恢复为队列尾。
|
||||
26
docs/tasks/M13-05D.md
Normal file
26
docs/tasks/M13-05D.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# M13-05D:依赖严重性门和例外
|
||||
|
||||
- `task`: `M13-05D`
|
||||
- `parent`: `M13-05C`
|
||||
- `status`: `done`
|
||||
|
||||
## 目标
|
||||
|
||||
冻结依赖 severity 门和统一例外合同。`BLOCKER/HIGH` 默认阻断,`MEDIUM` 进入 review,`LOW`
|
||||
进入 tracking;任何 finding 的例外必须有 owner、期限、理由和替代控制,过期或字段缺失稳定拒绝。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:dependency-severity-policy
|
||||
npm --prefix web run typecheck
|
||||
npm --prefix web run build
|
||||
```
|
||||
|
||||
## 产物和交接
|
||||
|
||||
报告和 manifest 位于 `tests/golden/M13-05D/`;下一任务由 manifest 的 `nextTask` 指向 `M13-05E`。
|
||||
|
||||
## 回滚
|
||||
|
||||
移除 severity policy、checker、报告、manifest、package 命令和状态页;将 `M13-05C` 恢复为队列尾。
|
||||
27
docs/tasks/M13-05E.md
Normal file
27
docs/tasks/M13-05E.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# M13-05E:供应链发布绑定
|
||||
|
||||
- `task`: `M13-05E`
|
||||
- `parent`: `M13-05D`
|
||||
- `status`: `done`
|
||||
|
||||
## 目标
|
||||
|
||||
将 SPDX 2.3 SBOM、第三方 notices、package/lockfile、source offer、binary/source archive、
|
||||
`SHA256SUMS.txt` 和当前 commit 绑定到机器可验证报告。对应源码归档必须包含构建输入且与发布包
|
||||
独立校验。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:supply-chain-binding
|
||||
npm --prefix web run test:binary-archive
|
||||
npm --prefix web run test:source-archive
|
||||
```
|
||||
|
||||
## 产物和交接
|
||||
|
||||
报告和 manifest 位于 `tests/golden/M13-05E/`;下一任务由 manifest 的 `nextTask` 指向 `M13-05F`。
|
||||
|
||||
## 回滚
|
||||
|
||||
移除供应链 checker、报告、manifest、package 命令和状态页;将 `M13-05D` 恢复为队列尾。
|
||||
26
docs/tasks/M13-05F.md
Normal file
26
docs/tasks/M13-05F.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# M13-05F:恶意输入矩阵
|
||||
|
||||
- `task`: `M13-05F`
|
||||
- `parent`: `M13-05E`
|
||||
- `status`: `done`
|
||||
|
||||
## 目标
|
||||
|
||||
使用生产解析器和既有负例路径验证 malicious blend、image、font、media、archive、node graph、
|
||||
script manifest 和 GLB。每类必须返回稳定拒绝码;不得提取 archive、执行脚本或发布迟到结果。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:malicious-input-matrix
|
||||
npm --prefix web run typecheck
|
||||
npm --prefix web run build
|
||||
```
|
||||
|
||||
## 产物和交接
|
||||
|
||||
报告和 manifest 位于 `tests/golden/M13-05F/`;下一任务由 manifest 的 `nextTask` 指向 `M13-05G`。
|
||||
|
||||
## 回滚
|
||||
|
||||
移除矩阵 checker、报告、manifest、package 命令和状态页;将 `M13-05E` 恢复为队列尾。
|
||||
25
docs/tasks/M13-05G.md
Normal file
25
docs/tasks/M13-05G.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# M13-05G:fuzz 崩溃最小化与回归固化
|
||||
|
||||
- `task`: `M13-05G`
|
||||
- `parent`: `M13-05F`
|
||||
- `status`: `done`
|
||||
|
||||
## 目标
|
||||
|
||||
使用固定 seed 对 blend、image、font、node 和 script manifest 生产解析路径执行确定性 fuzz
|
||||
回放。崩溃必须先保存可重放的最小样本;修复后样本进入长期回归 corpus。本任务不启用脚本执行。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:fuzz-regression
|
||||
```
|
||||
|
||||
## 产物和交接
|
||||
|
||||
报告和 manifest 位于 `tests/golden/M13-05G/`;本轮 5 个域各 16 个用例,共 80 个用例,零崩溃、
|
||||
零最小回归样本。下一任务由 manifest 的 `nextTask` 指向 `M13-05H`。
|
||||
|
||||
## 回滚
|
||||
|
||||
移除 fuzz runner、checker、报告、manifest、package 命令和本状态页;将 `M13-05F` 恢复为队列尾。
|
||||
24
docs/tasks/M13-05H.md
Normal file
24
docs/tasks/M13-05H.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# M13-05H:审计记录完整性
|
||||
|
||||
- `task`: `M13-05H`
|
||||
- `parent`: `M13-05G`
|
||||
- `status`: `done`
|
||||
|
||||
## 目标
|
||||
|
||||
审计记录必须按严格递增的时间和连续 sequence 写入,每个 request ID 只能出现一次;每条记录的
|
||||
digest 绑定前一条 entry hash,任何重放、时间倒退、sequence 或 hash-chain 篡改都稳定拒绝。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:script-audit-integrity
|
||||
```
|
||||
|
||||
## 产物和交接
|
||||
|
||||
报告和 manifest 位于 `tests/golden/M13-05H/`;下一任务由 manifest 的 `nextTask` 指向 `M14-01A`。
|
||||
|
||||
## 回滚
|
||||
|
||||
移除审计完整性 checker、unit、报告、manifest、package 命令和本状态页;将 `M13-05G` 恢复为队列尾。
|
||||
24
docs/tasks/M14-01A.md
Normal file
24
docs/tasks/M14-01A.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# M14-01A:冻结 Chromium、engine 与 archive 身份
|
||||
|
||||
- `task`: `M14-01A`
|
||||
- `parent`: `M13-05H`
|
||||
- `status`: `done`
|
||||
|
||||
## 目标
|
||||
|
||||
冻结当前 Chromium 版本、可加载的 engine manifest/variant 资源、离线 binary/source archive 和
|
||||
`SHA256SUMS.txt`。验收必须对实际文件逐项复算 SHA-256,不能只读取描述性 metadata。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:chromium-freeze
|
||||
```
|
||||
|
||||
## 产物和交接
|
||||
|
||||
报告和 manifest 位于 `tests/golden/M14-01A/`;下一任务由 manifest 的 `nextTask` 指向 `M14-01B`。
|
||||
|
||||
## 回滚
|
||||
|
||||
移除 Chromium freeze checker、报告、manifest、package 命令和本状态页;将 `M13-05H` 恢复为队列尾。
|
||||
25
docs/tasks/M14-01B.md
Normal file
25
docs/tasks/M14-01B.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# M14-01B:Firefox capability probe
|
||||
|
||||
- `task`: `M14-01B`
|
||||
- `parent`: `M14-01A`
|
||||
- `status`: `done`
|
||||
|
||||
## 目标
|
||||
|
||||
在真实 Firefox 上探测 WASM、Worker、OPFS、IndexedDB、WebGL2、WebGPU、OffscreenCanvas 和
|
||||
COOP/COEP isolation。每项都记录实际浏览器、平台和 GPU/adapter 信息;缺失能力只能为
|
||||
`BLOCKED` 或 `UNAVAILABLE`,不能按 user-agent 推断支持。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:firefox-capability
|
||||
```
|
||||
|
||||
## 产物和交接
|
||||
|
||||
报告和 manifest 位于 `tests/golden/M14-01B/`;下一任务由 manifest 的 `nextTask` 指向 `M14-01C`。
|
||||
|
||||
## 回滚
|
||||
|
||||
移除 Firefox probe、报告、manifest、package 命令和本状态页;将 `M14-01A` 恢复为队列尾。
|
||||
25
docs/tasks/M14-01C.md
Normal file
25
docs/tasks/M14-01C.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# M14-01C:WebKit capability probe
|
||||
|
||||
- `task`: `M14-01C`
|
||||
- `parent`: `M14-01B`
|
||||
- `status`: `done`
|
||||
|
||||
## 目标
|
||||
|
||||
在真实 Playwright WebKit 上使用与 Chromium/Firefox 相同的生产资源和隔离头,探测 WASM、Worker、
|
||||
OPFS、IndexedDB、WebGL2、WebGPU、OffscreenCanvas 和 COOP/COEP isolation。缺失能力只能记录为
|
||||
`BLOCKED` 或 `UNAVAILABLE`。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:webkit-capability
|
||||
```
|
||||
|
||||
## 产物和交接
|
||||
|
||||
报告和 manifest 位于 `tests/golden/M14-01C/`;下一任务由 manifest 的 `nextTask` 指向 `M14-01D`。
|
||||
|
||||
## 回滚
|
||||
|
||||
移除 WebKit probe、报告、manifest、package 命令和本状态页;将 `M14-01B` 恢复为队列尾。
|
||||
27
docs/tasks/M14-01D.md
Normal file
27
docs/tasks/M14-01D.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# M14-01D:probe identity and GPU/OS adapter recording
|
||||
|
||||
- `task`: `M14-01D`
|
||||
- `parent`: `M14-01C`
|
||||
- `status`: `in_progress`
|
||||
|
||||
## 目标
|
||||
|
||||
在真实 Chromium 生产构建上记录浏览器、运行时 OS、WebGL renderer/vendor 和 WebGPU adapter
|
||||
身份。身份必须来自实际 API 探测;缺失的 WebGPU adapter 只能记录为 `BLOCKED`,不能按
|
||||
浏览器或 user-agent 推断能力。报告同时绑定当前 production worker/WASM 资源 hash,避免把
|
||||
不同构建的 GPU 结果混在一起。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:probe-identity
|
||||
```
|
||||
|
||||
## 产物和交接
|
||||
|
||||
报告和 manifest 位于 `tests/golden/M14-01D/`。完成后 manifest 的 `nextTask` 指向下一颗
|
||||
最小任务;在本任务通过前不更新浏览器支持声明。
|
||||
|
||||
## 回滚
|
||||
|
||||
移除 probe checker、报告、manifest、package 命令和本状态页;将 `M14-01C` 保持为队列尾。
|
||||
20
docs/tasks/M14-01E.md
Normal file
20
docs/tasks/M14-01E.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# M14-01E:Chromium WebGPU fail-closed boundary
|
||||
|
||||
- `task`: `M14-01E`
|
||||
- `parent`: `M14-01D`
|
||||
- `status`: `in_progress`
|
||||
|
||||
## 目标
|
||||
|
||||
在 Chromium 中验证 WebGPU 不可用时,依赖 WebGPU 的渲染能力返回稳定 `BLOCKED`,而已验证的
|
||||
WebGL2 bounded Eevee/Main 路径仍保持 `READY`。本任务不启动 Firefox 或 WebKit。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:chromium-webgpu-boundary
|
||||
```
|
||||
|
||||
## 产物和交接
|
||||
|
||||
报告和 manifest 位于 `tests/golden/M14-01E/`;通过后从 manifest 的 `nextTask` 继续。
|
||||
16
docs/tasks/M14-04A.md
Normal file
16
docs/tasks/M14-04A.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# M14-04A:Chromium GPU/memory budget device tier selection
|
||||
|
||||
- `task`: `M14-04A`
|
||||
- `parent`: `M14-01E`
|
||||
- `status`: `in_progress`
|
||||
|
||||
## 目标
|
||||
|
||||
在 Chromium 中根据真实探测到的 GPU/adapter、设备内存和硬件并发选择声明的预算档位;缺失
|
||||
或不可信的能力必须降级到保守档位,不能自动扩容。Firefox/WebKit 不在本项目范围内。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:chromium-device-budget
|
||||
```
|
||||
17
docs/tasks/M14-04B.md
Normal file
17
docs/tasks/M14-04B.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# M14-04B:Chromium DPR 1/1.5/2/3 canvas and raycast consistency
|
||||
|
||||
- `task`: `M14-04B`
|
||||
- `parent`: `M14-04A`
|
||||
- `status`: `in_progress`
|
||||
|
||||
## 目标
|
||||
|
||||
在 Chromium 主线程 WebGL2 视口中验证 DPR 1、1.5、2、3 的 canvas backing dimensions、CSS
|
||||
尺寸和 raycast coordinate mapping 保持稳定,不因 DPR 改变逻辑坐标或选择结果。Firefox/WebKit
|
||||
不在本项目范围内。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:chromium-dpr-consistency
|
||||
```
|
||||
17
docs/tasks/M14-04C.md
Normal file
17
docs/tasks/M14-04C.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# M14-04C:Chromium mouse/touch/pen pointer identity and cancellation contract
|
||||
|
||||
- `task`: `M14-04C`
|
||||
- `parent`: `M14-04B`
|
||||
- `status`: `in_progress`
|
||||
|
||||
## 目标
|
||||
|
||||
为 Chromium 生产输入路径建立统一 pointer observation:mouse、touch、pen 分别保留
|
||||
`pointerType`、`pointerId`、`pressure`、`tiltX`、`tiltY`、`button`、`buttons` 和 cancel 状态;
|
||||
未知或越界值 fail-closed,不把触控/笔事件伪装成 mouse。Firefox/WebKit 不在本项目范围内。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:chromium-pointer-contract
|
||||
```
|
||||
16
docs/tasks/M14-04D.md
Normal file
16
docs/tasks/M14-04D.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# M14-04D:Chromium IME composition guard for incomplete operators
|
||||
|
||||
- `task`: `M14-04D`
|
||||
- `parent`: `M14-04C`
|
||||
- `status`: `in_progress`
|
||||
|
||||
## 目标
|
||||
|
||||
在 Chromium 的生产编辑器输入路径中,IME compositionstart/update 期间不触发未完成的
|
||||
operator;compositionend 后才允许提交最终文本。Firefox/WebKit 不在本项目范围内。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:chromium-ime-guard
|
||||
```
|
||||
17
docs/tasks/M14-04E.md
Normal file
17
docs/tasks/M14-04E.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# M14-04E:Chromium US/non-US/dead-key/modifier keymap fixture
|
||||
|
||||
- `task`: `M14-04E`
|
||||
- `parent`: `M14-04D`
|
||||
- `status`: `in_progress`
|
||||
|
||||
## 目标
|
||||
|
||||
固定 Chromium 生产路径的 key identity 解析:US 与非 US 字符、dead key、Shift/Ctrl/Alt/Meta
|
||||
修饰键必须保留原始 `key`/`code`/`location`/修饰键,不把字符布局推断为另一种物理按键。
|
||||
Firefox/WebKit 不在本项目范围内。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:chromium-keymap-fixture
|
||||
```
|
||||
56
docs/tasks/M14-04F.md
Normal file
56
docs/tasks/M14-04F.md
Normal file
@@ -0,0 +1,56 @@
|
||||
# M14-04F:Chromium touch modal cancel / two-finger navigation / pen commit
|
||||
|
||||
- `task`: `M14-04F`
|
||||
- `parent`: `M14-04E`
|
||||
- `status`: `in_progress`
|
||||
|
||||
## 目标
|
||||
|
||||
在 Chromium 输入状态层固定三条边界:触控 modal 取消不提交 Main;双指手势只产生一次
|
||||
navigation session;笔 stroke 的 pointerup 只允许一个 Main commit,重复 up/cancel 不重复提交。
|
||||
Firefox/WebKit 不在本项目范围内。
|
||||
|
||||
## 输入
|
||||
|
||||
- 上一个 manifest:`tests/golden/M14-04E/manifest.json`
|
||||
- 协议入口:`web/protocol/input-modal.ts`
|
||||
- 单测入口:`web/tests/unit/input-modal.test.mjs`
|
||||
- Chromium 检查器:`tools/web/check-chromium-input-modal.mjs`
|
||||
- 当前报告:`tests/golden/M14-04F/chromium-input-modal-report.json`
|
||||
|
||||
## 细分门
|
||||
|
||||
1. **协议门**:固定 `InputModalState`、pointer ID 校验、touch/pen 状态转移和稳定计数。
|
||||
2. **触控门**:`pointercancel` 清理活动 pointer,不产生 Main commit。
|
||||
3. **双指门**:从一个 pointer 进入两个 pointer 时只增加一次 navigation session;重复 down、
|
||||
pointer 顺序和单指结束不得重复创建 session。
|
||||
4. **笔门**:同一笔 stroke 的第一个合法 `pointerup` 最多产生一次 Main commit;late up/cancel
|
||||
不得重复提交或改变 revision。
|
||||
5. **生产接线门**:主线程与 Offscreen 生产输入路径必须真正消费协议;不能只在测试中调用纯函数。
|
||||
6. **浏览器证据门**:Chromium checker 必须读取真实 modal 状态、Main revision/commit counter 或
|
||||
等价生产诊断,而不是仅记录派发了几个 `PointerEvent`。
|
||||
7. **交接门**:focused 命令、必要的 typecheck/build、report、manifest、status 和回滚路径齐全。
|
||||
|
||||
协议单测和事件派发通过,只能关闭前四个门的一部分;在生产接线和真实状态断言完成前,任务保持
|
||||
`in_progress`,不得根据报告中的固定保证字段直接改为 `done`。
|
||||
|
||||
## 验收
|
||||
|
||||
```text
|
||||
npm --prefix web run test:chromium-input-modal
|
||||
```
|
||||
|
||||
必要的补充门:
|
||||
|
||||
```text
|
||||
npm --prefix web run typecheck
|
||||
npm --prefix web run build
|
||||
git diff --check
|
||||
```
|
||||
|
||||
## 产物和交接
|
||||
|
||||
- 报告:`tests/golden/M14-04F/chromium-input-modal-report.json`
|
||||
- manifest:`tests/golden/M14-04F/manifest.json`
|
||||
- 状态页:完成或阻断后新增 `docs/status/M14-04F.md`
|
||||
- 下一任务:只读取 manifest 的 `nextTask`,不能从长期计划手工推导
|
||||
Reference in New Issue
Block a user