为 v7 搭起第一批可运行的工程骨架:一个零依赖的 Node npm 包雏形、node:test 测试骨架、Linux/Windows 双矩阵 CI,以及 Node 版本门槛检查。骨架格式无关(不依赖 story repo 格式细节),RFC 怎么改都不浪费。
本任务不实现任何业务逻辑(写章流程、缓存、状态机的真实行为都在 M1+)。M0 只交付"能跑起来、CI 能绿、版本门槛能挡"的空壳与脚手架。
v7 分支下 v7 产品代码为 0 行:仓库根没有 package.json,webnovel-writer/ 是冻结的 v6 Python 遗产。node:sqlite,无需 flag 的最低版本即 22.13.0)。v7-implementation-plan.md §2)定义 M0 为"立即可开、不等 RFC"的首个里程碑。v7/ 子目录承载 Node 包;v6 webnovel-writer/ 与仓库根 Python 遗产原地不动。将来 beta 通过合并时再决定是否上提到根。webnovel-writer(对应 npx webnovel-writer,npm 发布名)。v7/)v7/package.json:name=webnovel-writer、type=module(ESM)、engines.node>=22.13.0、dependencies 为空(铁律:零运行时依赖)、bin 指向入口、scripts.test 跑 node --test。v7/bin/:CLI 入口(webnovel-writer init / update 的命令分发空壳,子命令打印"未实现"占位但不报错崩溃)。v7/src/:按职责划分的模块目录骨架(安装器 / 状态机 / 机检 / 备料 / 定稿 / 缓存 / 存储适配器),每个目录一个 index.js 导出空接口或占位,不含真实逻辑。process.version,低于 22.13.0 时输出人话提示(中文、指明需要的版本与升级指引),并以非零退出码终止;满足时静默放行。node:test,零依赖)node:test + node:assert,不引入任何第三方测试框架。v7/test/ 下 *.test.js,与 src/ 镜像。约定写回 directory-structure §4。.github/workflows/),矩阵 os = [ubuntu-latest, windows-latest] × node = [22.13.0(地板), lts/*]。node --test(在 v7/)→ 版本门槛检查冒烟。directory-structure.md §2:把"(v7 代码目录待定)"替换为 v7/ 实际布局。directory-structure.md §4:填实 src/ 模块划分、测试目录与命名约定两项(题材模板位置留到知识层平移任务)。cd v7 && node --test 在本机绿(含版本门槛测试 + 中文路径占位用例)。<22.13.0 时版本门槛给中文人话提示并非零退出;≥22.13.0 放行——有测试覆盖。v7/package.json 零 dependencies、engines.node>=22.13.0、type=module。directory-structure.md §2/§4 已回填,与实际 v7/ 布局一致。package.json;v7 分支当前无任何 .js 源码、无 src/。webnovel-writer/(v6)为 Python:hooks/skills/scripts/templates/dashboard/evals。directory-structure.md §2 已预留"(v7 代码目录待定)"、§4 三个待补项。node:test 候选、UTF-8 无 BOM、Windows 中文路径 CI、缩进两空格、commit 前缀 feat/fix/docs/chore。py(python 是 Store 占位 stub,静默退出 49)。