From 33517065f68b304f05fc2c3711805ebb9f3aad31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=85=E5=BF=B5?= Date: Tue, 20 Oct 2026 18:30:43 +0800 Subject: [PATCH] =?UTF-8?q?docs(plan):=20Task=203=20=E5=8B=BE=E9=80=89=20+?= =?UTF-8?q?=20=E9=98=B6=E6=AE=B52=E8=B4=A3=E4=BB=BB=E6=B8=85=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Code --- .../plans/2026-10-20-slice-foundation-phase0-1.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/superpowers/plans/2026-10-20-slice-foundation-phase0-1.md b/docs/superpowers/plans/2026-10-20-slice-foundation-phase0-1.md index bbcec91..bf00dbc 100644 --- a/docs/superpowers/plans/2026-10-20-slice-foundation-phase0-1.md +++ b/docs/superpowers/plans/2026-10-20-slice-foundation-phase0-1.md @@ -362,7 +362,7 @@ git add infra .env.example && git commit -m "feat(infra): PostgreSQL16 compose --- -### Task 3: contracts 包——UniversalRow 契约冻结 +### Task 3: contracts 包——UniversalRow 契约冻结 ✅ 完成(857389e + 修复 31cd7ed,双审通过;审查修复:守卫收紧必填类型/对象形状、包级 test 脚本移除、10 键 it.each + 4 拒绝用例、REQUIRED 类型锁) **Files:** - Create: `packages/contracts/package.json`、`packages/contracts/tsconfig.json` @@ -843,7 +843,7 @@ describe('空库全量迁移', () => { - Create: `README.md`(快速开始:corepack → install → db:up → migrate → test) - Create: `docs/adr/ADR-001-ORM选择Drizzle.md`(一句话决策 + 备选 Prisma 否决理由:SQL 可控、cms 实战);ADR-002~013 按 spec §3 表逐条落成短文件(每个 3–5 行) -- [ ] **Step 1: 补脚本与 README**(含质量审查沉淀的三项:根 package.json 加 `"type": "module"`、新增 `.gitattributes`(`* text=auto eol=lf` 统一行尾)、加 `engines.node >= 22`) +- [ ] **Step 1: 补脚本与 README**(含质量审查沉淀的三项:根 package.json 加 `"type": "module"`、新增 `.gitattributes`(`* text=auto eol=lf` 统一行尾)、加 `engines.node >= 22`;含 Task 3 实施发现:根 typecheck 需覆盖 packages/apps——扩根 tsconfig include 或根 typecheck 脚本改逐包 `tsc -b`,CI 同步) - [ ] **Step 2: eslint flat config + `pnpm lint` 通过** - [ ] **Step 3: 全量验证**:`pnpm lint && pnpm typecheck && pnpm test` 全绿 - [ ] **Step 4: Commit 并推送** @@ -855,6 +855,12 @@ git push origin main --- +## 移交阶段 2 的责任清单(来自 Task 3 质量审查) + +- canonical `status` 值域 + 未知 status 的导入兜底策略,钉在适配器转换测试里(契约层 string 宽松是有意设计) +- 适配器 property 测试覆盖:`taxonomyRefs`/`attachmentRefs` 元素形状、`sourceId`/`sourceTermId` 非空 +- 如需字段级错误报告:**加法式**新增 `validateUniversalRow(): issue[]`,不动现有布尔守卫 + ## 验收(对照 spec §15 阶段 0/1) - [ ] 原项目未被本项目修改(cms 是活跃仓库、并行会话在继续开发——Task 0.1 审查已确认;验收口径 = **本项目从未向 cms 执行任何写操作**(流程纪律),阶段验收时记录当时所见 cms HEAD 作信息性参考;**发现任何 cms 异常只报告用户,绝不 restore/checkout**)