Skip to content

Commit b7c3435

Browse files
committed
docs(standards): 收窄 jsdom 级联措辞并加注批7计划
批 8 T16(欠账 #11/#12/#13 的措辞面;doc-only、零行为改动)。 - docs/standards/motion.md(229 → 234):「判据纪律」节追加「批 8 T16 就地加注」块,把 「jsdom 不做样式级联」收窄为「jsdom 做级联;不可得的是几何 / var() 不解析 / 简写不展开 / 伪元素不命中 / 环境 API 缺席」。规范层只写纪律与形态,当次读数进批次报告(§11.1 体例)。 - 批 7 计划 :2560(2612 → 2615):原文一字未改,表后就地加注同一口径(− 列 = 0; HEAD 全文是工作树的子序列 2612/2612)。
1 parent 58829ae commit b7c3435

2 files changed

Lines changed: 8 additions & 0 deletions

File tree

‎docs/standards/motion.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,11 @@
177177
> - ⚠️ **本批的措辞纪律(收口复检)**:`charRate` **不得**被称为「真实语速」(它是**字符率近似**,规格未定义语速函数);`aligned === false` **不得**被描述为「未对齐」(是「无基准、**不能保证**」);「落了 seam」**≠**「已交付」;「判据绿」**≠**「体验已验证」。
178178
> - **未编造弱判据**:上列九项 + 两条**本批一律只登记**,未为它们新造判据(唯一例外 = 真实构建产物的 `vendor-gsap` 三件套与 `engine.guard` 的闭包交集,那是**已有工具可算**的硬判据,不是为本清单新造的)。
179179
180+
> 🔻 **批 8 T16 就地加注 · 「jsdom 不做样式级联」这句理由的**措辞收窄**(2026-09-13;**上面原文一字未改**)**:批 6/7 的台账与下游引用里凡出现「jsdom **不做样式级联**」,**一律按本注读** —— 实测 **jsdom 做级联**(类规则 / ID 选择器 / 子选择器 / 继承 / `!important` **全部正确生效**)。规范层从此固定为**两类**:
181+
> - ✅ **可得(判据只能落在这里)**:**内联与 `<style>` 类规则的声明值**(含 ID / 子选择器 / 继承 / `!important`)· **自定义属性原值**(可继承)· **CSSOM `insertRule`** · **`rAF` 真回调**。
182+
> - 🔴 **不可得(只能登记,不许编造弱判据)**:① **任何几何 / 排版**(`getBoundingClientRect` / `offset*` / `client*` / `scroll*` 全 0;`elementFromPoint` 与 `Range` 的两个 `*Rects` 方法**不存在**)② **`var()` 不解析**(回字面量)· **简写 → 长写展开不一致**(`padding-top` 展开、`transition-duration` 读成 `0s`)⇒ **不可依赖** ③ **伪元素 / 伪类**不命中 ④ **`matchMedia` / `ResizeObserver` / `IntersectionObserver` / canvas 2D / `document.fonts` 全缺席**(`matchMedia` 由**用例级桩**代偿:`app/src/test/motionHarness.ts`)。
183+
> ⇒ 🔴 **结论不变、理由收窄**:本文件「不可用判据」清单与「观感类判据一律不做」的依据 = **上列 ①–④**,**不是**「jsdom 不做级联」—— 旧措辞会让人**低估** jsdom(误以为连类规则都读不到)。🔴 **本注只写纪律与形态**:jsdom 能力表的**当次实测读数**进批次台账 / 报告,**不入 `docs/standards/**`**(§11.1 体例);同句的另两处收窄 = `app/src/test/motionHarness.ts`(代码注释)与批 7 计划 `:2560`(就地加注)。
184+
180185
### 两条 API 陷阱
181186

182187
- `tl.to()` 返回 **Timeline 本身**,不是 Tween ⇒ 「旧 tween 冻结」判据要拿句柄,必须用 `tl.to(...).getChildren()` 或直接用 `gsap.to(...)`(否则 `totalTime()` 永远为真 = 假绿)。

‎docs/superpowers/plans/2026-09-13-frontend-redesign-batch7-unwired.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2563,6 +2563,9 @@ surfaceBaseline.ts:49 → * 阴影 **24 → 24 处 / 24 文件(…)**
25632563
| 9 | **`v0.22` / 规格的渲染观感** | 无渲染器 | `docs-check` 只判链接/文件名/索引 ⇒ **内容正确性靠人工评审** |
25642564
| 10 | **真实构建的懒侧 katex 去向** | 🔴 **需真实构建**(取锁 + `npm run build`)⇒ 若 T17 未跑 ⇒ **写「未判定」**(C6.4 逐字) | 若跑了 ⇒ **族前缀 + 逐块字节闭合核算**(C9.6 第 2 条) |
25652565
2566+
> 🔻 **批 8 T16 就地加注 · 上表第 6 条的**理由句**不准确**(2026-09-13;**上表原文一字未改**)**:`jsdom 不做样式级联(getComputedStyle 拿不到生效值)` 这句经批 8 侦察 A 实测(jsdom 30.0.1 · `.superpowers/sdd/2026-09-13-frontend-redesign-batch8/recon-A-visual-verification.md` §3.1 / §3.3)**为假** —— jsdom **做**级联:类规则 / ID 规则 / 子选择器 / 继承 / `!important` **全部正确生效**。真正拿不到的是:① **任何几何 / 排版**(`getBoundingClientRect` / `offset*` / `client*` / `scroll*` 全 0;`elementFromPoint` 与 `Range` 的两个 `*Rects` 方法不存在)② **`var()` 不解析**(回字面量)· **简写 → 长写不展开**(`transition` 整体读得到,`transition-duration` 读成 `0s`)③ **伪元素 / 伪类**不命中 ④ `matchMedia` / `ResizeObserver` / `IntersectionObserver` / canvas 2D / `document.fonts` 全缺席。
2567+
> ⇒ **第 6 条的结论不变**(`Surface` 逐处迁移的**层叠观感**仍不可判),**变的是理由**:判据只能落在**源码文本 + 类名 + DOM 属性**上,是因为**几何全 0 + `var()` 不解析 + 简写不展开 + 伪元素不命中 + 环境 API 缺席**,**不是**因为 jsdom 不做级联。同句的另两处在批 8 T16 一并收窄:`docs/standards/motion.md`(规范层加注)与 `app/src/test/motionHarness.ts:50-53`(代码注释就地改写)。
2568+
25662569
### 二、本批未做(**做得了,本批不做**;逐条带去向)
25672570
25682571
| # | 项 | 为什么本批不做 | 去向 |

0 commit comments

Comments
 (0)