diff --git a/packages/artplayer-plugin-danmuku-mask/package.json b/packages/artplayer-plugin-danmuku-mask/package.json
index 44735d2b4..afa1b0493 100644
--- a/packages/artplayer-plugin-danmuku-mask/package.json
+++ b/packages/artplayer-plugin-danmuku-mask/package.json
@@ -34,6 +34,13 @@
"types": "./types/artplayer-plugin-danmuku-mask.d.ts",
"legacy": "./dist/artplayer-plugin-danmuku-mask.legacy.js",
"browserslist": "last 1 Chrome version",
+ "typesVersions": {
+ "*": {
+ "legacy": [
+ "types/artplayer-plugin-danmuku-mask.d.ts"
+ ]
+ }
+ },
"dependencies": {
"@mediapipe/selfie_segmentation": "^0.1.1675465747",
"@tensorflow-models/body-segmentation": "^1.0.2",
@@ -41,12 +48,5 @@
"@tensorflow/tfjs-backend-webgl": "^4.21.0",
"@tensorflow/tfjs-converter": "^4.21.0",
"@tensorflow/tfjs-core": "^4.21.0"
- },
- "typesVersions": {
- "*": {
- "legacy": [
- "types/artplayer-plugin-danmuku-mask.d.ts"
- ]
- }
}
}
diff --git a/refactor/baselines/manifest-lint-validation.json b/refactor/baselines/manifest-lint-validation.json
new file mode 100644
index 000000000..737559e4b
--- /dev/null
+++ b/refactor/baselines/manifest-lint-validation.json
@@ -0,0 +1,18 @@
+{
+ "task": "ENG-LINT-01",
+ "source": "e0d785662daac01d3c9c01f2dd2d2d2c16ab32d1",
+ "node": "v24.21.0",
+ "yarn": "1.22.22",
+ "file": "packages/artplayer-plugin-danmuku-mask/package.json",
+ "beforeSha256": "03b68f518f32d6619d7da1f163180224942ab195b5d1c0d18ab852d98fffdc3f",
+ "afterSha256": "7b9778b964582cd7f4a340bf0401a4222dd21bcdc23163e2d3fc85b12d4a2a1c",
+ "parsedDeepEqual": true,
+ "lint": {
+ "passed": true,
+ "errors": 0,
+ "warnings": 1,
+ "log": "yarn run v1.22.22\r\n(node:30840) [DEP0169] DeprecationWarning: `url.parse()` behavior is not standardized and prone to errors that have security implications. Use the WHATWG URL API instead. CVEs are not issued for `url.parse()` vulnerabilities.\r\n(Use `node --trace-deprecation ...` to show where the warning was created)\r\n$ eslint \"packages/*/{src,public,types,package.json}\" \"scripts/*.{js,mjs}\" \"test/*\" \"docs/assets/ts/*\" \"types/*.d.ts\" \"playwright*.config.js\" --no-fix\r\n\r\nD:\\github\\ArtPlayer\\docs\\assets\\ts\\artplayer.d.ts\r\n 2:1 warning Unused eslint-disable directive (no problems were reported from 'ts/no-namespace')\r\n\r\n✖ 1 problem (0 errors, 1 warning)\r\n 0 errors and 1 warning potentially fixable with the `--fix` option.\r\n\r\nDone in 8.31s.\r\n"
+ },
+ "toolchain": "yarn run v1.22.22\r\n(node:21480) [DEP0169] DeprecationWarning: `url.parse()` behavior is not standardized and prone to errors that have security implications. Use the WHATWG URL API instead. CVEs are not issued for `url.parse()` vulnerabilities.\r\n(Use `node --trace-deprecation ...` to show where the warning was created)\r\n$ node scripts/check-toolchain.mjs --strict\r\nToolchain verified: 22 workspaces, 33 pinned tools, 1450 dependency selectors; Node 24.21.0 (canonical 24.21.0), yarn@1.22.22\r\nDone in 0.16s.\r\n",
+ "scope": "Top-level manifest property ordering only. No source, declaration, runtime distribution or lockfile change; package-specific runtime acceptance is unchanged."
+}
diff --git a/refactor/changes/2026-09-14-ENG-LINT-01-manifest-order.md b/refactor/changes/2026-09-14-ENG-LINT-01-manifest-order.md
new file mode 100644
index 000000000..f0a6b79a4
--- /dev/null
+++ b/refactor/changes/2026-09-14-ENG-LINT-01-manifest-order.md
@@ -0,0 +1,23 @@
+# ENG-LINT-01 恢复全仓 lint
+
+起点 `e0d785662daac01d3c9c01f2dd2d2d2c16ab32d1`,在 EX-01 完成并通过提交审计
+之后独立修复。此前全仓 `yarn lint` 在未改动的 Mask manifest 报
+`jsonc/sort-keys`:`dependencies` 应在 `typesVersions` 后面。
+
+只移动 `packages/artplayer-plugin-danmuku-mask/package.json` 的顶层
+`typesVersions` 区块,不调整内部条件导出键顺序或任何值。将修复后的 JSON 与
+起点 Git 内容解析后 `assert.deepEqual`,确认版本、依赖、入口、types、files
+和全部其他字段内容不变。没有运行代码、声明、构建产物、根锁或包架构变化,
+不增加仅验证格式的测试文件,也不重跑模型/设备测试。
+
+Node 24.21.0、Yarn 1.22.22:全仓 `yarn lint` 返回 0,0 error、1 warning;
+剩余 warning 为生成的 `docs/assets/ts/artplayer.d.ts` 中既有 unused-disable
+注释,不在本次手改生成文件。严格工具链检查通过,仍是 22 workspace、
+33 个固定开发工具。计划、差异和独立提交审计另行核验。
+
+日志和文件哈希见 [证据](../baselines/manifest-lint-validation.json)。Mask
+运行产物没有重建;未来打包的 package.json 字节会改变,因此 npm 候选冻结仍
+须以重新打包后的 tarball 为准,不能复用旧 tarball 完整性值。
+
+回退本任务提交仅恢复字段顺序及其 lint 错误。没有推送、版本升级或发布;
+Mask 的真实模型/设备/分发任务状态不变。
diff --git a/refactor/plan.md b/refactor/plan.md
index 75cc5d9be..e3e79dce8 100644
--- a/refactor/plan.md
+++ b/refactor/plan.md
@@ -4,7 +4,7 @@
基线:`40fcda6a37d0049d42e49c1e64e70d4fd9ba5f7f`。总任务 238 项,范围 22 个包及工作区/示例。
-状态:todo 62 / doing 15 / blocked 0 / done 161 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
+状态:todo 61 / doing 15 / blocked 0 / done 162 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
前置依赖是启动条件;验收是完成条件。任务可以继续拆分,但不能复用或悄悄删除旧 ID。
@@ -438,7 +438,7 @@
| ID | 范围 / 步骤 | 前置依赖 | 交付物 | 验收条件 | 风险 | 状态 |
| --- | --- | --- | --- | --- | --- | --- |
-| ENG-LINT-01 | artplayer-plugin-danmuku-mask, workspace
修复 Mask manifest 排序并恢复全仓 lint | PKG-MASK-04 | 仅调整 manifest 字段顺序,独立验证全仓只读 lint 与元数据语义不变 | 根 lint 通过;解析后的 manifest 深度相等;不改包版本、依赖或公开入口 | L | todo |
+| ENG-LINT-01 | artplayer-plugin-danmuku-mask, workspace
修复 Mask manifest 排序并恢复全仓 lint | PKG-MASK-04 | 仅调整 manifest 字段顺序,独立验证全仓只读 lint 与元数据语义不变 | 根 lint 通过;解析后的 manifest 深度相等;不改包版本、依赖或公开入口 | L | done |
## 完成证据与阻塞
@@ -619,3 +619,4 @@
- PKG-AUTO-THUMB-07: [记录](changes/2026-09-14-PKG-AUTO-THUMB-07-canvas.md) [记录](baselines/auto-thumbnail-canvas-validation.json)
- PKG-AUTO-THUMB-08: [记录](changes/2026-09-14-PKG-AUTO-THUMB-08-types.md) [记录](baselines/auto-thumbnail-types-validation.json)
- PKG-AUTO-THUMB-09: [记录](changes/2026-09-14-PKG-AUTO-THUMB-09-alias.md) [记录](baselines/auto-thumbnail-alias-validation.json)
+- ENG-LINT-01: [记录](changes/2026-09-14-ENG-LINT-01-manifest-order.md) [记录](baselines/manifest-lint-validation.json)
diff --git a/refactor/progress.md b/refactor/progress.md
index 3b4962a45..67795ec6f 100644
--- a/refactor/progress.md
+++ b/refactor/progress.md
@@ -1,5 +1,15 @@
# 进度与证据
+## ENG-LINT-01 全仓 lint 恢复
+
+在 EX-01 独立提交 e0d785662 并通过提交审计后,只调整 Mask manifest 顶层字段
+顺序。解析后与起点完全相等;全仓 lint 返回 0(0 error、1 条既有生成声明
+注释 warning),严格工具链通过。见[变更](changes/2026-09-14-ENG-LINT-01-manifest-order.md)
+和[证据](baselines/manifest-lint-validation.json)。未改运行代码/类型/产物/锁,
+未关闭 Mask 设备等任务,未推送发布。当前 238 项:162 done、15 doing、61 todo。
+下一步为 EX-02 Vue 实际消费者;VAST 默认选择和 Auto Thumbnail 首帧仍待关闭。
+
+
## EX-01 React 实际消费者完成
修复 React HTML 错误入口,以及 getInstance 抛错时实例泄漏;保留 Partial