diff --git a/DESIGN.md b/DESIGN.md index 449cc81..0f32967 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -27,7 +27,7 @@ superpaper NEW(v1):读论文 / 笔记编排 skill(文档层) └─ superderive NEW(phase 2):stepwise algebraic derivation figures ``` -`superpaper` 是论文侧的 `youtube-render-pdf`:输入一篇论文,输出结构化中文 `.tex` 笔记 + 编译 PDF。它**不**生长 `superfig.sty`。所谓「抽象公式图像化」在 v1 是一个 **figure router**(决策表 + 委派契约),不是第三套绘图引擎。逐步改写图留给 phase 2 的 `superderive`;v1 笔记用 `align` / `aligned` 顶上。 +`superpaper` 是论文侧的 `youtube-render-pdf`:输入一篇论文,输出结构化中文 `.tex` 笔记 + 编译 PDF。它**不**生长 `superfig.sty`。所谓「抽象公式图像化」在 v1 是一个 **figure router**(决策表 + 委派契约),不是第三套绘图引擎。逐步改写图在 phase 2 由 `superderive` 承接;v1 笔记用 `align` / `aligned` 顶上。 --- @@ -704,7 +704,7 @@ source_assets: | 可选 bookkeeping:想在 figure plan 里留下「已路由到 align」 | 可填该 `F*` | 一行 `toolkit: align`,`include: null`,`request: null`,`signals` ⊆ derive;`status: included` 表示 writer 已把 `align` 写进讲义节 | | v2 且必须看见取消/代入,或 >4 步 | 填 `F*` | `toolkit: superderive`,走 sibling 委派 | -v1:任何 derive-class 行的 toolkit 必须是 `align`;`toolkit: superderive` → `SP022`(PR 4 起;PR 1–3 的 schema 虽允许该枚举值,但 example 不得使用)。phase 2 仍遵守 ≤4 步且无 `cancel-visual`/`subst-visual` ⇒ **必须** `align`(即使包已存在)。 +v1:任何 derive-class 行的 toolkit 必须是 `align`;`toolkit: superderive` → `SP022`(仅在 `SUPERPAPER_PHASE=1` 时触发;缺省已是 2)。phase 2 仍遵守 ≤4 步且无 `cancel-visual`/`subst-visual` ⇒ **必须** `align`(即使包已存在)。 `toolkit: none` 只用于「考虑过、决定不出图」:`status: dropped`,`include: null`。这些组合**不是** `SP010`(`SP010` 只表示 toolkit ∉ `ACCEPTED[class]`)。由下面 `check_row(..., status, include, fig_id)` 给出独立码。 @@ -1330,7 +1330,7 @@ examples/excerpt-toy/ | `SP016` | 2 | `included` ∧ `screenshot` ∧ `include ≠ figures/{id}/orig.png` | | `SP020` | 4 | `status: core` 的 claim 在 `notes/**/*.tex` 无 `\splabel{C*}`(`coverage.mode=excerpt` 同样查 ledger 里列出的 core) | | `SP021` | 4 | `include` 已是非空路径但 `/notes/` 不存在 | -| `SP022` | 4 | v1(`SUPERPAPER_PHASE` 缺省 1)出现 `toolkit: superderive` | +| `SP022` | 4 | v1(`SUPERPAPER_PHASE` 缺省 2,PR 7 已落地;仅当显式设为 1 时触发)出现 `toolkit: superderive` | | `SP023` | 4 | 非 dropped 的新 id ∈ `retired_ids` | | `SP024` | 4 | `figures[].claim` / `derivations[].claim` 不是已有 `C*` | @@ -1612,7 +1612,7 @@ Provenance 写:「第三 sibling;不是从 superfig 长出来的。superpape ## Rollout Plan -本地 skill。开关是 **lint 码启用表 + `SUPERPAPER_PHASE`(缺省 1)**。依赖链是 **1 → 2 → 3 → 4**;PR 5 与 PR 6 可与该链并行;**只有 PR 7** 把 phase 默认改为 2。 +本地 skill。开关是 **lint 码启用表 + `SUPERPAPER_PHASE`(缺省 2,PR 7 已合入)**。依赖链 1→2→3→4、PR 5/6 并行,均已完成;**只有 PR 7** 负责 phase 缺省翻转,2026-08-17 已随 `e6918ff` 落地。 1. PR 1:skill 可跑无委派笔记。`router.py` **完整**(class / `ACCEPTED` / `SPLIT` / `check_row`),但 lint **不**跑 `SP010–SP016`。SKILL 写「委派是后续 PR」。 2. PR 2:启用 `SP010–SP016`;superfig 委派 example(出生即带 `\splabel`)。 diff --git a/scripts/test.sh b/scripts/test.sh index 8a6674d..a5b1b03 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -49,6 +49,16 @@ do expect_ledger "$ROOT/tests/ledger-invalid/$f" "$c" done +out="" +if out=$(SUPERPAPER_PHASE=1 "${LINT[@]}" --ledger "$ROOT/tests/ledger-invalid/superderive-v1.yaml" 2>&1); then + true +fi +if echo "$out" | grep -q "SP022" && echo "$out" | grep -q "SP010"; then + ok "superderive-v1.yaml (SP010+SP022, phase=1)" +else + bad "superderive-v1.yaml (wanted SP010+SP022 with SUPERPAPER_PHASE=1)" +fi + expect_work() { local dir="$1" code="$2" local out