chore: checkpoint web Blender migration source, tools and docs
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled

Accumulated uncommitted work: GHOST Web backend, WebGL/GPU web layer,
web workflow engine and protocol, tooling, docs and task records.
Large generated evidence, user-testing archives, build snapshots and
imported test assets remain untracked.

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
mes123456
2026-11-10 11:18:01 +08:00
parent 122142c26c
commit f3e21c6b98
6887 changed files with 257154 additions and 12294 deletions

217
nextTask1.md Normal file
View File

@@ -0,0 +1,217 @@
# Corrective Continuous Task Handoff
This is the continuation entrypoint for the corrective execution plan. The
authoritative legacy queue remains `docs/EXECUTION_QUEUE.md`; this file points
only to the shadow corrective task and must never advance `M16-GAP-*`.
## Current Task
| Field | Value |
| --- | --- |
| plan | `docs/BLENDER_WASM_CORRECTIVE_TASK_PLAN.json` |
| current corrective task | `C6-003` |
| task card | `docs/corrective/C6-003-reactivate-queue.md` |
| lifecycle (plan) | `in_progress` |
| checkpoint status (handoff) | `in_progress` |
| blocker | none; owner review approved |
| gate | `G5` |
| write scope | `queue_reactivation` |
| queue mutation | `true` |
| execution mode | `corrective_continuous` |
| auto continue after successful handoff | `true` (conditional) |
| auto continue now | `true` after post-handoff gates |
| fresh compact context after handoff | `required` |
| stop on failure or drift | `true` |
| handoff required before successor | `true` |
| legacy queue checkpoint | `M16-GAP-00277` / parent `nextTask=M16-GAP-00277` |
| reserved legacy successor | `M16-GAP-00278` |
| corrective handoff | `tests/golden/corrective/C6-003/handoff.json` |
| handoff next task | `C6-003` (post-write verification) |
## Blocker
The durable corrective checkpoint is `C6-003`: its dry-run and write-preview
bytes match, the explicit owner review is recorded, protected legacy hashes were
verified before the write, and the atomic queue write exited 0. The handoff is
`in_progress` for post-write verification with `queueMutation=true`; the legacy
queue now points to `M16-GAP-00277` and the rollback receipt is recorded. Do not
run another queue write unless the post-write gates identify concrete drift.
The completed predecessor handoffs (`C0-001` through `C5-003`, `C6-001`, and
`C6-002`) remain immutable evidence. Their completion does not release the
current G5 post-write verification gate.
## Resume Prompt
```text
按 nextTask1.md 接续执行。
激活 corrective continuous mode。只要用户消息要求“按 nextTask1.md 接续执行”、
“继续执行”或等价含义,就先做只读 checkpoint recovery,再开始当前 Current
Task;不要要求确认、不要只给计划。只有成功 handoff 才能自动开始下一轮;每轮
完成一个 corrective task 后进入 fresh compact context,重新读取本文件的新
Current Task。遇到阻塞、失败、环境缺失、预算耗尽、传输异常、闭合门或用户要求
停止时立即停在当前 checkpoint,不得为了保持连续而越过门禁。
每次请求的第一步固定为只读恢复(即使上一次请求只报告了 remote compact
错误):
```bash
node tools/web/print-task-context.mjs
node tools/web/check-task-context.mjs
git status --short
jq '{task,status,queueMutation,nextCorrectiveTask,inputDigest,commandExitCodes}' \
tests/golden/corrective/C6-003/handoff.json
```
随后运行 `node tools/web/check-corrective-plan.mjs`。若 plan、task card、handoff
的当前任务/状态/ready/next 不一致,或 handoff `status=blocked`,只记录精确
阻塞并停止;不得重跑未知结果的生成、构建、保存或 queue-write 命令。恢复请求
最多重试一次;再次出现 stream disconnect、error decoding response body 或
remote compact 失败时保持当前状态并结束本轮。
本文件只驱动 corrective shadow plan。`docs/EXECUTION_QUEUE.md` 是 legacy M16
指针;两者不可混用。当前 corrective task、依赖、状态、ready 标志和下一任务只
接受 `docs/BLENDER_WASM_CORRECTIVE_TASK_PLAN.json`、当前 task card 和最新
durable handoff manifest(成功或阻塞)的交叉证明,禁止从历史编号或 Markdown
猜测。
每个 iteration 只完成一个 C0-C6 任务,并严格按以下顺序执行:
1. 读取 `docs/EXECUTION_QUEUE.md`。
2. 运行 `node tools/web/print-task-context.mjs`。
3. 运行 `node tools/web/check-task-context.mjs`。
4. 运行 `node tools/web/check-corrective-plan.mjs`。
5. 只读取当前 C task card、其明确列出的输入和最小必要 fixture。
6. 若当前 task 为 `planned`,在所有 preflight 通过后将当前 task/card 标记为
`in_progress`;若 handoff 为 `blocked`,保持当前 task/card 和 pointer 不变,
不得提前把任何 successor 标记为 ready 或修改 next pointer。
7. 执行任务卡中的真实命令,把长日志写入
`tests/golden/corrective/<task>/`,并记录每个命令的退出码。
8. 完成 focused、negative、persistence、hash、determinism 和 governance gate。
9. 在所有 evidence 文件最终化后运行 `node tools/web/write-corrective-handoff.mjs`,更新该任务的
`handoff.json` 和 `manifest.json`;同时更新该 C task 的 status 文档。
handoff 命令不要用会在 hash 扫描后再次截断/写入同一个日志的重定向;若日志
属于 evidence,先写完日志,再运行 handoff,handoff 完成后不得再编辑 evidence。
10. 校验 handoff 的 artifact SHA-256、`inputDigest`、`queueMutation`、
`nextCorrectiveTask` 和命令退出码。dry-run、write、handoff 三者的
`inputDigest` 必须一致。
11. 只有 handoff 完整成功且所有必需 gate 通过后,才将当前 task 标记为 `done`,
仅按 handoff manifest 的 `nextCorrectiveTask` 从依赖图选择 successor;为
successor 创建/校验 task card,并将唯一 successor 标记为 ready。若 handoff
为 `blocked`,只更新本文件的 durable checkpoint 字段并保留同一 current task,
不创建 successor、不推进 pointer。成功 handoff 后再更新本文件 Current Task
表,重新执行第 1-4 步,开始下一 iteration。
12. 任何状态迁移、task card、plan 或 Current Task 更新都必须由已通过的 handoff
支持;禁止先改指针再补证据。
下一任务只能来自 corrective plan 的依赖图,不能猜测。
严格遵守以下边界:
- C0-C5 期间禁止修改旧 M16 queue、parent manifest、completion registry、
catalog、index、旧 M16 task card 和历史 evidence;corrective task card 只可
按本协议在对应 handoff 前后更新生命周期。
- 禁止手工推进 legacy `nextTask`、offset、completion 状态或 parent pointer;
corrective lifecycle 和 `nextCorrectiveTask` 只能由通过 handoff 的 evidence
与 corrective dependency graph 支持。
- `queueMutation` 必须保持 `false`,直到 C6-003 且 G5 通过。
- `--write` 只能写入明确的 corrective staging 目录,不能覆盖正式生成物。
- 不得把 `CANCELLED`、`UNSUPPORTED`、`EXTERNAL_REQUIRED`、metadata-only、
snapshot/read-only 或 negative-only evidence 当作正向功能完成。
- 浏览器验收永久只使用 Chromium;禁止 Firefox 和 WebKit。
- 不要删除、重置或回滚用户已有改动;失败证据必须保留。
任何命令失败、hash drift、plan/index/catalog/queue 不一致、parent pointer
失配、digest 不一致、预算异常、环境缺失、传输异常或 gate 阻塞,都立即停止
自动迭代;当前 task 保持 `in_progress`/`blocked`,不得创建 successor handoff,
保留失败证据并报告精确路径。不得用重跑覆盖失败日志来伪造通过状态。
当前从 `C6-003` checkpoint 恢复。`C0-001` 至 `C5-003`、`C6-001` 和 `C6-002`
的 handoff 均已完成;明确的 owner review 已记录,queue write 已完成,
`M16-GAP-00277` 现在是唯一 active legacy successor。
上下文大小必须按仓库预算管理:每个 iteration 只保留当前任务卡、parent
manifest、parent status、`print-task-context` 输出和任务卡列出的最小输入;不要
把完整 `next-task-plan.json`、全部 `docs/status/`、历史 transcript、完整 parity
ledger 或长命令日志带入上下文。默认上下文上限约为 3,500 tokens,serialized
context envelope 上限为 1,024 tokens;先运行 `check-task-context`,只有报告
`withinBudget` 才能继续。大 JSON 使用 `jq` 读取指定字段,大日志使用 `sed`/`tail`
读取窄范围;完整日志只保存在 evidence root,不复制到对话中。每个命令返回后只
保留退出码、关键摘要、证据路径和 hash。
每次 handoff 后开始 fresh compact context:丢弃上一轮长输出,下一轮只从新 manifest 的
`nextCorrectiveTask`、status、evidenceRoot、commandExitCodes、sourceHashes、
`inputDigest` 和 `queueMutation` 恢复,不依赖上一轮对话。若上下文接近预算,先
停止读取、写入摘要并重新运行 `print-task-context`;不得用扩大读取范围来解决预算
问题。若 compact、resume 或传输发生异常,先检查已有日志、manifest 和 hash,
从第一个缺失步骤继续;不要盲目重复成功的写入或推进指针。
```
## Context Budget Protocol
每轮执行前必须建立最小上下文,并把上下文治理本身视为 gate:
1. 只读 `docs/EXECUTION_QUEUE.md`、`print-task-context` 输出列出的文件,以及当前
task card 的 `inputPaths`、`commands` 和 `exitCriteria`。
2. 先运行 `node tools/web/check-task-context.mjs`;`withinBudget=false`、
`estimatedContextTokens > 3500` 或 `envelopeTokens > 1024` 时保持当前任务不变,
缩小读取范围后重试。
3. 不打开完整 `next-task-plan.json`、全部历史 status、完整 generated report、
完整 git diff 或完整命令输出;需要判断时用 `jq -e/-r` 提取字段、用
`sha256sum` 校验来源、用 `rg` 定位小节。
4. 将长输出直接写入 `tests/golden/corrective/<task>/`,对话和下一轮上下文只保留
`exitCode`、一行结果、报告路径、artifact count/hash 和失败原因。
5. 一个 iteration 结束时,必须形成可独立恢复的 compact handoff:
`task`、`status`、`gate`、`evidenceRoot`、`commandExitCodes`、`sourceHashes`、
`inputDigest`、`queueMutation`、`nextCorrectiveTask`。
6. 下一 iteration 丢弃上一轮的临时解释和长日志,只读取该 handoff 及新任务卡;
不把完整历史 transcript 作为隐式输入。
7. 出现 compact/remote transport error 时,停止自动推进,按 Resume Prompt 的
只读顺序检查磁盘上的证据和 handoff;只在 checkpoint 明确显示某命令缺失且
不存在未知状态时重跑一次,确认 digest/hash 后再继续。不得用旧 transcript
或完整日志填充下一轮上下文。
## Iteration Contract
1. Run `node tools/web/print-task-context.mjs` and
`node tools/web/check-task-context.mjs`.
2. Run `node tools/web/check-corrective-plan.mjs` before editing.
3. Read only the current C task card and its named inputs.
4. Keep all corrective outputs under `tests/golden/corrective/<task>/`.
5. Before and after every task, compare the protected legacy source hashes; a changed
protected hash is a hard stop, not a reason to re-sign history.
6. A task is complete only when its card's commands, evidence hashes, deterministic
output check, handoff fields, and all gates pass.
7. Run `node tools/web/write-corrective-handoff.mjs` only after all evidence files
are final; do not add or edit evidence afterward without regenerating the handoff.
8. Update this file only from a durable successful or blocked corrective handoff. The
current value and any successor come from the handoff manifest and corrective plan
dependency graph, never from a guessed legacy task number. A blocked handoff may
refresh the checkpoint fields but must keep the same task and pointer.
## Stop Rules
- Never run a queue-writing command before `C6-003` and `G5`.
- Never count `CANCELLED`, `UNSUPPORTED`, `EXTERNAL_REQUIRED`, metadata-only, or
negative-only evidence as positive parity.
- Never edit `docs/EXECUTION_QUEUE.md`, legacy `next-task-plan.json`, task
catalog/index, parent manifest, parent status, or legacy task cards as part of
C0-C5. Corrective cards and shadow plan state may change only after the
preflight/handoff rules above are satisfied.
- Stop on the first failed command or inconsistent hash; keep the current task
`in_progress`/`blocked` and preserve all evidence.
- `owner_review_required` is cleared by the recorded review artifact; any post-write
hash or pointer drift remains a hard stop and requires rollback receipt review.
## Handoff Fields
Completed handoffs: `C0-001` through `C5-003`, `C6-001`, and `C6-002` are `done`.
The current evidence is under `tests/golden/corrective/C6-003/`; its handoff is
`in_progress`, with `queueMutation=true` and `nextCorrectiveTask=C6-003` while
post-write G5 verification remains active.
After each successful iteration, record `task`, `status`, `gate`, `evidenceRoot`,
`commandExitCodes`, `sourceHashes`, `queueMutation`, and `nextCorrectiveTask` in the
task's machine-readable handoff. Then replace the Current Task table above with the
new corrective task before starting the next iteration.