Skip to content

Releases: ThzxxArt/dsh-novel-write-engine

v0.2.13

Choose a tag to compare

@ThzxxArt ThzxxArt released this 01 Nov 15:20

0.2.13

0.2.13 是台账可信度与自评校准版本。仍是 28 工具、13 门控、15 维、5 语义项、6 导出;SCHEMA_VERSION 保持 1,所有新字段可选,旧文档不迁移。

Added

  • 计量:WordMetrics 新增 dialogue_chars、dialogue_char_ratio、punctuation_breakdown;targets.min_cjk_chars 与 dialogue_ratio_metric 进入 novel_init/novel_amend,PG-03 同时判总字数与汉字下限,DIALOGUE_RATIO 支持行/字符/两者口径。
  • 数字:check.machine.numeric 汇总 facts_declared/facts_checked/equations_checked/findings;算式扩展到 + - × ÷,strict 模式 facts 为空时出 NUMERIC_FACTS_EMPTY advisory。
  • 锁定:新增 resolveLockBaseline,世界书地点描述优先,人物只认显式 appearance(description 里的传记不再被误当外貌基准),locks 只在没有世界书条目时提供 1–3 条短锚点;无基线的实体不报漂移,doctor 给 LOCK_BASELINE_MISSING 提示。
  • 关系:type_code 枚举与 RELATIONSHIP_TYPE_CODES;新建关系必须给 type_code,旧关系不猜;RELATION_UNKNOWN 只保留归档合并后的唯一 owner,P6 不再先报。
  • 伏笔:planned_resolve、resolved_anchor、kind(plot|motif)、advance_log[].anchor;新 resolve 必须有正文证据;新增 FORESHADOW_OVERDUE/FORESHADOW_DUPLICATE_TITLE advisory;report 增加 planned/unplanned/overdue/resolved_without_evidence/duplicate_titles/motifs。
  • 时间线:稳定 event_key(E{chapter}-{index+1}-{hash}),P8 支持下标或 event_key;旧条目读取时计算,不重写。
  • brief:收据增加 id/current/superseded_at/superseded_by;同章同阶段同 digest replay 不写盘,旧 digest 可重新提升为 current;novel_state {kind:"briefs", current_only:true}。
  • 告警:Violation.id,acknowledge 接受 code 或实例 id,acknowledge_reasons 强制理由,CheckDocument.machine.acknowledged_findings(兼容读旧顶层位置);DUPLICATE_PARAGRAPH 给出章/段与 40 字重合片段。
  • 分页:novel_state 新增 limit/cursor/status/include_history/current_only,返回统一 page;cursor 绑定 section+filters;foreshadows 默认 50 条且只给 advance_count;novel_amend 拒绝把截断/过滤页当完整文档。
  • 自评:P3/P4 写死 1–5 与 low/mid/high 锚点;BookReport.pacing.calibration 与 doctor QUALITY_SELF_SCORE_FLAT;题材 profile 支持 pleasure_keywords、motif_min_dormancy、foreshadow_dormant_after,并校验类型/正整数。
  • 返工:StatusReport.previous_chapter_effort 与 P1 brief 字段,归档后仍能看到上一章 review/revise/check/rollbacks。

Fixed

  • advisory id 改为 sha256(detail).slice(0,12),不再用 48 位 SimHash 截断;同码不同详情不再并成一条。
  • 旧 timeline 的 event_key 以章节记录的 summary.events 为准,不再用被覆盖的 description;真实 209 条只读校验 0 个 key 不一致。
  • 角色 worldbook 行存在但无 appearance 时不再回退首现段落,避免第 21 章 3 条锁定误报;locks 只在 worldbook 无该实体时提供短锚点。
  • legacy brief 收据只追加/晋升受影响行,不再在第一次新 digest 时物化全部旧行;旧行保持原顺序与字段。loader 与 novel_state 共用 current 派生:提升较旧的无 current 行后,PG-01 与 current 视图不会再分别相信不同 digest。
  • planned_resolve/kind 在 advance/resolve delta 上真正落账;P3 PG-05 先拒绝非法 planned_resolve/kind/anchor;advance_log 的 advance/update anchor 与 resolve 一样必须逐字出现在正文,条目校验 chapter/note/new_info/anchor。
  • 普通动作段不再因为只提到实体名就被判 LOCKED_DETAIL_DRIFT;只有带外貌/布局/改写线索的低覆盖段才进入漂移比较,world anchors 单独存在的实体也纳入检查。
  • 旧 timeline 的稀疏行从 summary.events 下标派生事件键;显式 event_key 按章+数字事件序排序,不再按字符串把 10 排在 2 前。
  • integrity-only check 的 numeric 汇总不再保留未执行的 content 计数;foreshadows 的 advance/update anchor 也做逐字正文校验;novel_amend 带 anchor 的新增/变更 resolved 行同样按章正文校验,无 anchor 的旧行保留迁移入口。
  • 超过单页上限的 world/characters/locks 台账去掉 page 后仍不能静默删行;错误提示明确要求合并所有 cursor 页。

Compatibility

  • english_punct、types、acknowledged、timeline 数字下标、旧 briefs.yaml 都保留;旧记录不自动改写。
  • SCHEMA_VERSION 仍为 1;REMOTE_VERSION 仍为 6;PANEL_VERSION 升到 0.2.13。
  • 安装与产物校验见 GitHub Release 的 tarball 与 SHA256SUMS.txt;npm 版本为 dsh-novel-write-engine@0.2.13。

Tests

  • 98 个测试文件 / 1071 项全绿;覆盖率 94.01 / 89.02 / 96.88 / 94.01,逐文件与 src/rules 分支门禁通过。
  • 新增 0.2.13 回归覆盖:纯 SHA-256 向量、分页/过滤页写回拒绝、旧 timeline 键规范化与稀疏派生、数字序排序、同码 advisory 实例 id、确认实例不替同码其他实例背书、收据 current 与 PG-01 一致性、旧行不物化、legacy 页脚、archive motif/题材阈值、PG-05 非法 planned_resolve、关系 type_code 与 resolved_anchor 迁移守卫、advance/update anchor 逐字校验、普通叙事不误报锁定漂移、world anchors 单独基线。

v0.2.12 — 工作台滚动与角色标签

Choose a tag to compare

@ThzxxArt ThzxxArt released this 01 Nov 07:05

dsh-novel-write-engine v0.2.12

0.2.12 是工作台滚动与角色标签修复版本,不新增或改变阶段、工具、操作、门控、语义项、导出、schema 或配置键。升级不需要迁移项目文件。

亮点

  • 页面滚动恢复:撤销 0.2.11 的固定顶栏与内容区独立滚动,改为宿主固定高度裁切盒内的整页滚动;顶栏、下一步卡与栏目导航随内容移动,根滚动条隐藏,滚轮、触控和键盘都能滚到底。
  • 局部滚动归位:人物、时间线、线索、设定、全书资料、章节表与卷列表改为有界局部滚动;列表滚到边界后继续滚页面,不再形成滚轮陷阱。
  • 展开卡片通栏:设定与线索分组中任意卡片展开时,整个分组跨两栏、卡片通栏显示,不再被锁在左半栏或右半栏。
  • 全书资料标题修复:删除 summary::before 的 +/− 伪元素,避免展开时多出第四个子项把标题和副标题挤进 14px 箭头列、贴到最右侧;标题行在打开和关闭状态都保持三列。
  • 角色标签补全:antagonist 映射为「反派」,人物卡不再裸出英文规范值;未知角色仍按原值兜底。
  • 版本同步:PANEL_VERSION 从 0.2.11 升到 0.2.12,面板协议 payload_version 保持 7;旧标签页刷新即可。

验证

  • GitHub Actions CI 41282707796:10/10 job 全部 success(static、coverage、host-gate、build-and-package、Linux 当前版/最低版、Windows、macOS、Windows/macOS platform-build)。
  • 95 个测试文件 / 1011 项测试全绿;覆盖率 94.00 / 89.20 / 96.86 / 94.00,逐文件门禁通过。
  • 本地 typecheck、lint、build、check:pack(27 files)、check:artifacts、check:install 通过。
  • client bundle 239.97 KB(react-dom 外置);host 与 client 入口可从 tarball 安装并加载。
  • 新增根滚动、宿主裁切盒、局部列表滚动、展开卡片跨整行、全书资料标题三列与 antagonist 中文标签回归。

安装

dsh plugin --profile web add dsh-novel-write-engine@0.2.12

或安装本页附件的 tarball:

dsh plugin --profile web add /absolute/path/to/dsh-novel-write-engine-0.2.12.tgz

附件

  • dsh-novel-write-engine-0.2.12.tgz:npm 发布包,27 个文件,360.7 kB。
  • SHA256SUMS.txt:tarball 的 SHA-256 校验文件。

已知边界

  • 本轮没有重跑真实模型写路径;0.2.12 未改引擎写路径、阶段、门控或导出。
  • 面板修复由 client 与 responsive 测试锁定;未做触屏真机与屏幕阅读器验收。
  • 升级后请刷新页面或新开会话;旧标签页显示“需要刷新”时刷新即可。

v0.2.11 — 工作台内容层与命令教程

Choose a tag to compare

@ThzxxArt ThzxxArt released this 01 Nov 05:11

dsh-novel-write-engine v0.2.11

0.2.11 是工作台内容层与命令教程版本,不新增或改变阶段、工具、操作、门控、语义项、导出、schema 或配置键。升级不需要迁移项目文件。

亮点

  • 工作台内容层重做:七栏内容区固定在面板高度内独立滚动,顶栏、下一步卡与栏目导航不再随长内容移动。所有折叠详情、资料卡、章节/质量详情与章节表改为有界滚动,章节表固定表头;长内容不再把整页无限向下拉长。
  • 全部命令教程:面板「? 教程」新增「全部命令」,覆盖 5 个入口、/novel 的 25 种带名写法、6 种导出、25 个 admin 操作与 5 组常用组合;标注 --prune --yes、--register、admin JSON 对象等边界。
  • 单一命令参考:命令参考数据集中在 src/command-reference.ts,教程与 /novel admin 帮助共用,并由测试逐项校验,避免文档与实现漂移。
  • 版本同步:PANEL_VERSION 从 0.2.10 升到 0.2.11,面板协议 payload_version 保持 7;旧标签页刷新即可。

验证

  • GitHub Actions CI 41274759256:10/10 job 全部 success(static、coverage、host-gate、build-and-package、Linux 当前版/最低版、Windows、macOS、Windows/macOS platform-build)。
  • 95 个测试文件 / 1009 项测试全绿;覆盖率 93.99 / 89.21 / 96.86 / 93.99,逐文件门禁通过。
  • 本地 build、validate:rulepack、check:pack(27 files)、check:artifacts、check:install 通过。
  • client bundle 238.90 KB(react-dom 外置);host 与 client 入口可从 tarball 安装并加载。
  • 新增命令参考测试校验 5 个入口、25 种带名写法与 25 个 admin 操作无重复,并与实际 admin 操作表一一对应;client 教程测试逐项断言所有命令与操作名已渲染。

安装

dsh plugin --profile web add dsh-novel-write-engine@0.2.11

或安装本页附件的 tarball:

dsh plugin --profile web add /absolute/path/to/dsh-novel-write-engine-0.2.11.tgz

附件

  • dsh-novel-write-engine-0.2.11.tgz:npm 发布包,27 个文件。
  • SHA256SUMS.txt:tarball 的 SHA-256 校验文件。

已知边界

  • 本轮没有重跑真实模型写路径;0.2.11 未改引擎写路径、阶段、门控或导出。
  • 面板交互由客户端测试与静态 Chromium 截图核验;未做有项目态真实宿主、触屏真机与屏幕阅读器验收。
  • 升级后请刷新页面或新开会话;旧标签页显示“需要刷新”时刷新即可。

v0.2.10

Choose a tag to compare

@ThzxxArt ThzxxArt released this 01 Nov 03:22

网文工坊 0.2.10

工作台呈现层版本:让面板真正像工作台,而不是一列挤在左侧的折叠列表。

这版做了什么

  • 七栏全宽:概览、章节、人物、线索、世界设定、质量、健康不再被主栏宽度限制。
  • 人物 / 线索 / 设定卡片墙:图标、标题、摘要、状态标签和可展开详情,替代普通 details 列表。
  • 章节移动端卡片:桌面保留表格行,窄屏切换为双行章节卡,不再横向裁切。
  • 概览图表:最近 10 章评分趋势折线与最近 8 章字数柱状图;空态、单点态和 aria-label 都已覆盖。
  • 质量 / 健康页重排:全书 KPI、维度卡、节奏卡、返工投入、PASS / CHECK 状态卡。
  • 版本与文档同步:PANEL_VERSION 升到 0.2.10;README 徽章、升级说明和验证数字同步;删除已完成使命的历史方案文档,避免仓库继续携带过期记录。

兼容性

  • 没有工具、阶段、门控、语义项、导出格式、schema 或配置键变化。
  • 面板协议 payload_version 保持 7。
  • Node >=24.9.0;DSH >=0.2.1-rc.2 <0.3.0-0。
  • 现有项目数据不需要迁移。

安装

dsh plugin --profile web add dsh-novel-write-engine@0.2.10

验证

  • corepack pnpm test:coverage:94 个测试文件 / 1003 项全部通过
  • 覆盖率:语句 93.76% / 分支 89.17% / 函数 96.75% / 行 93.76%,逐文件门禁通过
  • typecheck、lint、build:通过
  • check:pack:26 files;check:artifacts:host + client 入口加载通过
  • check:install:tarball 在干净 consumer 中安装并加载双入口
  • check:preset:13 个预设包从真实 DSH bundle root 解析通过
  • check:host:临时 DSH profile 安装、面板 401 到 200、预设可见、novel_init 可执行、卸载后层消失
  • GitHub Actions:10 / 10 job 成功(run 41268387877)

发布产物

  • dsh-novel-write-engine-0.2.10.tgz
  • SHA256SUMS.txt
  • SHA-256:006b6aaf8cae0483d98abdaf6788768a1ac26fc2a914c19e6c06496c96b3fe3a

说明

面板截图与验收覆盖 1440 静态 Chromium 与 390 CDP 视口;有项目态真实宿主、触屏真机和屏幕阅读器未验收。0.2.10 未改引擎写路径,因此本轮没有重新跑真实模型链路。

完整变更:CHANGELOG.md · 提交:f0384f1

网文工坊 v0.2.9

Choose a tag to compare

@ThzxxArt ThzxxArt released this 01 Nov 01:10

网文工坊 v0.2.9

0.2.9 是可信工作台与工具契约版本:把长篇小说连载需要的状态、门禁、规则和账本,继续从提示词搬进可验证的代码。

本版重点

  • 归档卡证据链:归档时把受保护的章卡字段写入 archive_card 与 digest;novel_amend 优先使用归档卡证据,无法证明时 fail closed,不再从候选章卡伪造旧卡。
  • 工具契约:26 个自由 JSON 入参收敛为类型化 schema;summary、review/check、archive/handoff、worldbook 等输入定形;新增 2,000 字引号/换行压力用例和 32KB 参数预算。
  • 面板 v7:overview / chapters / characters / foreshadows / timeline / relationships / worldbook / quality / health 分栏;total/returned/truncated/next_cursor、section 与 bundle ETag/304、64KB 字节预算、章节/质量按需详情、人物/线索/设定搜索与 240/400 字自由文本上限。
  • 读模型修复:health 要求文件可读且无 error;无目标书进度为 null;草稿未评审不显示 0/150;quality 维度带 max;listHistory 默认不读正文;stats 损坏时返回 state_errors/partial。
  • 规则包:修复角色短名子串、数值单位、资源符号/角色绑定/证据词;LOCKED_DETAIL_DRIFT 改为检查所有描述段、取最高覆盖,仅全部低于阈值才报告;新增可选 genre profile(advisory)。
  • 稳定卷 id:卷 upsert 支持改名保留 id,拒绝重复 id/title/区间;Markdown 导入不再悄悄扩展声明范围。

安装

corepack prepare pnpm@11.28.9 --activate
dsh plugin --profile web add dsh-novel-write-engine@0.2.9

需要 DSH >=0.2.1-rc.2 <0.3.0-0、Node >=24.9.0、pnpm 11.x。安装后刷新页面、新开会话。

验证结果

  • 测试:94 个文件 / 1000 项通过
  • 覆盖率:语句 93.47% / 分支 89.01% / 函数 96.82% / 行 93.47%
  • typecheck、lint、build、pack(26 files)、artifacts、install(26 packages)、preset(13 packages)、host、crash、hygiene(160 files / 0 ignore)、isolated(63 源文件)、rulepack(default@1.1.0)通过
  • 真实模型:agnes-2.5-flash 在临时环境跑通 20 章完整 P1→P8→archive,20/20 score=150、stage=done,正文合计 15,374 字;P1/P2/P4/P6 为确定性夹具,P3 正文为模型生成并按发布验收记录做了确定性规范化
  • CI:本 tag 对应提交的 GitHub Actions 全部 job 成功(见 Release 页面 Checks)

附件

  • dsh-novel-write-engine-0.2.9.tgz:npm 包 tarball
  • SHA256SUMS.txt:tarball 的 SHA-256,下载后请核对

SHA-256:794f1904401636302ecedfb5eac989ded2dddc7677b4dcdd2a82f0842fd5423a(以 SHA256SUMS.txt 为准)

已知边界

  • 真实宿主只验收了临时 profile 空态;有项目态真实宿主、触屏真机、屏幕阅读器仍未验收。
  • 真实模型 P1/P2/P4/P6 仍是确定性夹具,不等同于模型自主完成全流程。
  • 全量 panelBundle() 对带大量历史 review 的旧项目仍会读取质量数据;客户端默认走 lean bundle。
  • 触屏、屏幕阅读器与真实宿主有项目态是后续版本继续补齐的范围。

升级

0.2.9 没有破坏性 schema、阶段、门控、导出或配置键变更;ChapterRecord.archive_card 是可选新字段,旧项目缺它时只读回退。升级命令:

dsh plugin --profile web add dsh-novel-write-engine@0.2.9

完整变更与验证证据见仓库 CHANGELOG.md、docs/0.2.9-acceptance.md 和本 Release 的 CI。

v0.2.8

Choose a tag to compare

@ThzxxArt ThzxxArt released this 31 Oct 08:50

0.2.8 边界与可信性

0.2.8 是边界与可信性版本,不改工具、阶段、门控、schema、导出或配置键。

Fixed

  • 章节边界读模型:归档第 N 章后 pipeline.chapter 指向 N+1、stage 仍为 done,旧读面把它拼成“当前第 N+1 章,阶段 done”。新增 ChapterProgress 单一投影,/novel status、/novel resume、novel_status、novel_pipeline、novel_guide、novel_doctor、面板摘要与复制续写指令统一显示“第 N 章已归档;下一章第 N+1 章从 P1 开始”。全书达到目标后 finished=true,引擎续写文本返回 null;/novel resume 改为显示“全书已完成”,不再把它当成故障态。
  • 备份路径安全:backups/ 改用 FsStore.ensureDir + safePath 创建和解析,符号链接目录返回 ENGINE_PATH_ESCAPE,项目外零写入;备份 staging 写入前重复检查项目根,避免删除根后被 mkdir 重建;备份列表/retention 跳过 backups/ 下的符号链接子项,不再因一个用户文件整体失败。
  • 叙述者别名:新增 src/domain/narrator.ts,PG-05、state_delta 的存在性与 locks 取证共用 isNarratorAlias;narrator: "林砚(第一人称)" 不再因为正文只写“我”而卡在 PG-05 或归档;只接受第一人称“我”,排除第三人称与无关括号引号,locks 优先非对白段落。
  • 面板健康缓存:panelCacheKey 纳入 journal 行数、末尾行与 journalBlocking 摘要,外部 ledger 改动或 journal 追加后不再返回旧 health.ok/旧 activity。
  • 归档卡字段:归档卡的 goal/conflict/hook/notes 与 title/scene_type/target_words/cast 一样不可改写;省略字段仍保留原值。novel_amend 在 chapters.yaml 不可读时也以旧大纲卡为证据,不能借损坏窗口改写。
  • created growth:state_delta 的 created 角色不再丢弃已声明的 growth,按当前章写入 ledger。

Changed

  • stats() 与 /novel stats 的 totalWords 统一为“归档 + 活动草稿”,并新增 archivedWords/draftWords 拆分;面板同步新增 archivedWords/draftWords,头部总字数与命令口径一致。
  • 面板九阶段名称改为与 README/DESIGN 一致:P7 状态同步、P8 终审、P9 归档;教程注明首次章卡提交默认 strict、纯文本 novel_word_count/novel_diff 不绑定会话。

Tests

  • 91 个测试文件 / 923 项测试全绿;覆盖率 93.55 / 89.23 / 98.14 / 93.55,逐文件门禁通过。新增归档边界、完结续写与命令文案、P8 brief 回归、面板缓存、字数拆分、备份符号链接、第一人称归档、created growth、归档字段保护、损坏 chapters 下的 amend 保护、空 legacy 卡重交、locks 对白取证、提交叙述者优先级回归。

Migration

  • progress、archivedWords、draftWords 均为 additive 字段;REMOTE_VERSION 保持 6,旧标签页刷新即可。
  • 无 schema、工具、阶段、门控、导出或配置键变更;项目文件不需要迁移。

安装与升级

npm install dsh-novel-write-engine@0.2.8
  • 无 schema、工具、阶段、门控、导出或配置键变更;升级不需要迁移项目文件。
  • 面板 v6 新增字段为 additive,旧标签页刷新即可。

发布产物

  • dsh-novel-write-engine-0.2.8.tgz(26 files)
  • SHA256SUMS.txt

SHA-256:652fb9093ae61642442bd977d10ccf4257120a2a56fd7834381f546a297158e6

验证

  • 91 个测试文件 / 923 项测试全绿;覆盖率 93.55 / 89.23 / 98.14 / 93.55。
  • 同一提交 CI 41185429492 10/10 job 成功。

v0.2.7

Choose a tag to compare

@ThzxxArt ThzxxArt released this 30 Oct 17:31

0.2.7 · 通用性与发布边界

这是一个不改变运行时契约的维护版本:工具、阶段、门控、schema、导出格式和规则阈值均未变化。

主要变更

  • README 全量重写:围绕当前项目全貌重组为安装、快速开始、核心机制、工具手册、配置、数据与安全、升级、排障、开发验证九个部分,补充 npm / CI / release / Node / DSH / License 徽章,移除历史版本堆叠与失效链接。
  • 文档收口:当前分支只保留 docs/tools.md、docs/states.md、docs/rulepack.md 三份维护文档;历史版本方案与验收稿留在对应发布 tag,不再复制进 main。
  • 产品面去具体项目化:novel_brief P8 示例、state_delta 错误提示、规则注释和历史验收段落不再引用具体书稿的人物、地点、货币或道具,统一改为中性占位。
  • 测试夹具中立化:单元与集成测试改用合成人物、地点、资源,不再依赖某一本书的专有名词。

新增验证

  • 三题材归档矩阵:玄幻修仙、都市现代、西方奇幻三组互不相关的原创文本各跑一遍 init → P1 → P2 → P3 → P4 → P6 → P8 → archive,验证同一流水线不依赖单一题材词汇。
  • 发布面隐私守卫:扫描 src / briefs / skills / presets / rulepacks / docs 与根文档,阻止真实项目名、人物名和宿主绝对路径进入随包内容;同时断言扫描目标存在,避免目录缺失时空跑通过。

质量门禁

  • 91 个测试文件 / 910 项测试全绿;
  • 覆盖率:语句 93.51% / 分支 89.13% / 函数 98.12% / 行 93.51%;
  • typecheck、lint、build 通过;
  • validate:rulepack、check:pack、check:artifacts、check:install、check:preset、check:host、check:crash、check:hygiene、test:isolated 全过。

升级

无 schema、工具、阶段、门控、导出或配置键变更,不需要迁移项目文件。升级后刷新页面、新开会话即可。

完整变更见 CHANGELOG.md。

产物

  • npm:dsh-novel-write-engine@0.2.7
  • Release 附件:dsh-novel-write-engine-0.2.7.tgz 与 SHA256SUMS.txt

v0.2.6

Choose a tag to compare

@ThzxxArt ThzxxArt released this 30 Oct 16:38

dsh-novel-write-engine 0.2.6

0.2.6 的主题是让证据、台账锚点和书籍数据都能被解释。本版不新增工具、命令或阶段,工具 28、操作 32、语义项 5、门控 13、导出 6 不变。

新增

  • 语义证据配对:novel_check 失败项新增 conflicts,区分 duplicate / same_sentence / interval_overlap,带配对 id、重叠原文/字数/比例、段落和句子;submission 错误汇总最多五条配对,aborted journal 写紧凑审计。
  • world 实体锚点:summary.new_element_anchors 支持 name + anchors;PG-05 与归档共用 entity-anchors.ts,新实体持久化 anchors,旧数据无 anchors 继续按 name 回退。
  • panel v6:summary.bookData 增加书脊/蓝图、当前章卡、世界/人物/关系/伏笔/时间线、15 维质量、节奏、逐章 effort、outline drift、state_errors/pending/damaged;quality 明确分开全书 average 与 last_ten_average。
  • pipeline 恢复:novel_restore { paths: ["state/pipeline.yaml"], txid } 可从有效备份恢复损坏 pipeline;status/doctor 报 PIPELINE_UNREADABLE,恢复前普通写入 fail-closed。
  • 恢复与不变量:summary-only 的 PG-01 旁路只对紧接的 P6 check 生效;outline restore 复用归档卷守卫;PG-05 null row 不崩溃;PG-09 重复句按引用段落的最近出现匹配。

修复

  • resources:null 不再被当成空对象;summary-only 不再静默吞掉 issues/proof;rulepack 递归 unknown-key 覆盖 reader_intrusion/god_view、genres.*、water_words.scene_thresholds。
  • 面板 pending 不再丢失,活跃章详情改读 pipeline.draft.summary,revisionLabel 用本章 revise 轮次,samples/attempts 不倒挂,章节行补 dialogue ratio 与 archived_at。
  • 测试与 docs 移除真实项目正文,新增 docs/tests 正文片段隐私扫描;工具数固定 28 并断言全集;R7 识别 skipIf;panel v6 从真实 engine 快照集成验证。

验证

  • 90 个测试文件 / 906 项通过;覆盖率 93.51% / 89.14% / 98.12% / 93.51%。
  • typecheck、lint、build、pack 26 files、artifacts、install、preset 13 packages、host、crash、hygiene、isolated、rulepack 全部通过。
  • 另对一个真实项目只读验证:stage=done、blocking=0、state_errors=0(项目名不公开)。
  • agnes-2.5-flash 临时项目实时 P1/P2/P3→P8 成功,stage=done,score=145。
  • agnes-3.0-flash 实时请求被供应商连续 HTTP 429;按作者确认,使用 0.2.5 的真实 3.0 正文在当前 0.2.6 引擎离线重放作为 3.0 证据,未伪造成实时成功。

安装

GitHub Release 附件:dsh-novel-write-engine-0.2.6.tgz(与 npm 发布一致)和 SHA256SUMS.txt。

npm install dsh-novel-write-engine@0.2.6

DSH:

dsh plugin --profile web add dsh-novel-write-engine@0.2.6

迁移

  • check/world/summary 新字段均为 additive;旧文档可读,不自动迁移 anchors。
  • panel v6 与 v5 不混用;旧标签页显示刷新。
  • 旧项目已消耗的 rounds 不回滚。

提交:e562fa1;标签:v0.2.6。验收与证据见 docs/0.2.6-acceptance.md。

v0.2.5

Choose a tag to compare

@ThzxxArt ThzxxArt released this 30 Oct 08:45

dsh-novel-write-engine 0.2.5

发布前全量回归 review 完成:M1–M7、S1–S8 与 P2/P3 清理全部收口,真实模型 agnes-2.5/3.0 已在临时项目跑通完整链路。

Fixed

  • 语义证据跨句/跨段:novel_check 的引文不再要求落在同一句;支持句末收尾引号、跨段证据,逐条返回 pass|fail|missing|invalid|not_found|too_short|duplicate|overlap|same_sentence,并在失败时给出 nearest/conflict_with。同一段被两条证据复用、或同一句不同子串仍按 overlap/same_sentence 拒绝;真实 r0076 的四段双句引文全部通过,r0075 的编造 POV 引文只报 not_found。
  • check submission/content 分流:形状、缺项、引文不存在等提交错误改为 ENGINE_CHECK_SUBMISSION_INVALID,不写 check、不增加 blocking、不消耗 rounds.check;只有正文/机器门真正的 content failure 才写 check 并 counted:true。工具错误行会回传逐条 items。
  • world delta 双真源仲裁:summary.new_elements 只作为意图声明;state/world.yaml 的存在性为真源。已有实体写 created 归一化为 updated,新实体写 updated/no_change 在 kind/正文可判定时归一化为 created;kind/detail 冲突仍拒绝。archiveChapter 返回 delta_warnings 与 normalized_world,warning 不再静默。
  • pending 只读诊断:inspectPending 分类 none|complete|untouched|partial;status/doctor/audit/panel 对 complete/untouched 给 warning、partial 给 ENGINE_PENDING_PARTIAL,不再误报 hash mismatch。novel_init 会先恢复/拒绝崩溃 init,partial 不被 PROJECT_EXISTS 掩盖。
  • outline 归档不变量统一:novel_blueprint、novel_outline_import(含 dry-run)、novel_amend(outline) 与 novel_outline 共用 assertArchivedCardVolumes/assertArchivedCardsInVolumes 和 active 卡保护;即使旧卡缺失或卷重排,归档章也必须由最终卡指向覆盖它的卷。reindexed/would_reindex 显式回显,omitted 归档卡不再伪造 archived_at。
  • summary-only 修复:novel_revise 可只传 summary:正文 hash、章文件和历史不变,不消耗 revise 轮次,保持/推进到 P6;不要求 P4/P6 proof,接下来可直接 check/archive。summary-only 明确拒绝 issues/proof,避免静默吞掉评审/证明。P8 与工具文档已改为先 summary-only、只有正文需要改才走 P5。
  • PG-05 前置:P3/P5 即检查 summary.new_elements 名字在正文出现、已在 world ledger 时报“remove/use updated”,并校验 characters_appeared 正文/叙述者别名,避免错误留到 P8。
  • 资源余额:current_state.resources 与旧余额深合并,保留兄弟资源;created/updated 都校验有限非负整数,负值/字符串/null/数组拒绝;P8 示例与错误提示改为非负。

Hardened

  • brief digest 绑定完整 project/outline/worldbook/plan/worldPlan,而不只是裁剪后的 context。
  • characters/world 重复实体名在 load 与 amend 均拒绝;strict_explicit 只允许内部 provenance,公共 outline 写入拒绝该字段。
  • FsStore 将 EACCES/EPERM/EROFS 包装为 ENGINE_IO_PERMISSION;rulepack 对每个 section/nested object 递归 knownKeys,包括 reader_intrusion/god_view、genres.* 与 water_words.scene_thresholds。
  • worldbook 导出补 数值事实;duplicate paragraph 指回原章真实段落号;time regression 指向正文段落;timeline.characters 必须是已声明角色;export 在 artifact 缺失时使 replay 失效并重写。
  • migration 备份 backups/migrations/ 不参与 retention prune;无硬链接文件系统(FAT/SMB/WSL)用受控 rename fallback 回收 stale lock;面板选择中配置 projectRoot 优先于单行 registry;commands 错误行与 tools 一样保留 blocking/items。

Migration

  • check 文档 schema_version 不变;新增字段可选,旧 check 可读。旧项目已消耗的 rounds 不回滚。
  • archive 遇到旧 summary.new_elements 与 ledger 冲突时按新规则成功并给 warning;不会回写旧 ledger。
  • summary-only 是新增调用模式,旧 content/patch 修订语义不变。
  • strict_explicit 若曾被外部写入,仍可被读取;新的公共写入必须改用 strict。
  • 详细验收与真实项目/模型证据见 docs/0.2.5-acceptance.md、docs/0.2.5-real-model-evidence.md。

安装

npm install dsh-novel-write-engine@0.2.5

验证

  • 81 个测试文件 / 875 项测试通过
  • 覆盖率 93.51% statements / 89.07% branches / 98.05% functions / 93.51% lines
  • typecheck、lint、build、pack、artifacts、install、preset、host、crash、hygiene、isolated、rulepack 全绿
  • 真实项目《1971从偷渡港岛开始》只读回归:stage=done,blocking=0

完整证据:https://github.com/ThzxxArt/dsh-novel-write-engine/blob/main/docs/0.2.5-acceptance.md

v0.2.4

Choose a tag to compare

@ThzxxArt ThzxxArt released this 30 Oct 04:27

dsh-novel-write-engine 0.2.4

0.2.4 是一次数据安全语义修正:根治 novel_outline 的“省略即删除”,把章卡/卷从“提交集合就是全集”改为按标识 upsert,并补上删除显式化、写前预演、变更回显、回退副本与 outline 级恢复路径。

核心变更

  • BREAKING:novel_outline 改为按标识 upsert
    • chapters 按 num、volumes 按 title 合并;未提交的计划卡逐字节保持,不再被静默删除。
    • 删除只能通过 remove: number[] / remove_volumes: string[] 表达;活动章、归档章、不存在章、已完成卷、包含归档章的卷都会被拒绝。
    • novel_outline {remove:[2]} 可以直接只删卡;chapters 可省略。
    • 空 {} / chapters:[] / volumes:[] / book:{} 是真正的 no-op,不写盘、不推进 revision、不偷改 strict。
  • 可解释写入
    • dry_run:true 返回 would_add / would_update / would_remove,零写盘、零 journal。
    • 成功返回 added / updated / removed 与 volumes_added / volumes_updated / volumes_removed。
    • novel_outline 正常写入保留 outline/outline.deprecated.yaml。
    • novel_restore 支持 paths:["outline/outline.yaml"],不要求 chapter;恢复结果必须与当前章索引一致,预归档 outline 需先 novel_reopen。
  • 卷与工具契约
    • novel_blueprint.volumes 仍是整体 replace,但删卷必须 confirm_remove:true。
    • 持久集合的数组参数声明 upsert/replace/remove 语义;DSH 的强制 JSON Schema 子集不接受未知 x-* 关键字,因此语义落在参数描述 + src/tools/semantics.ts 契约表,并由 tests/tool-contract.spec.ts 对漏声明、缺 remove/confirm 和未登记 untyped JSON 参数强制报错。
    • 同名卷新写入拒绝;旧项目只读加载兼容,提交卷前需用 novel_amend 改名。
  • 数据不变量与恢复
    • 归档卡不可改;计划卡的部分更新会保留省略的 cast / notes(null 也视为省略)。
    • 删卷后新增卷不会复用已存在的 volume id。
    • 恢复 outline 不允许把归档章变成 planned、把缺失卡补成缺失,或把已 reopen 章恢复成 archived。

验证

  • 测试:80 个测试文件 / 848 项全绿。
  • 覆盖率:语句 93.97% / 分支 89.14% / 函数 98.00% / 行 93.97%,逐文件门禁通过。
  • 发布门禁:typecheck、lint、build、check:pack(25 files)、check:artifacts、check:install(26 packages)、check:preset(13 packages)、check:host、check:crash、check:hygiene(143 files,0 v8 ignore)、test:isolated(60 源文件)、validate:rulepack 全过。
  • 真实模型:agnes-2.5-flash 完成 P1→P8(382 字 / 7 段),agnes-3.0-flash 完成 P1→P8(341 字 / 8 段);两者归档、report/doctor/panel v5、六种导出、novel_reopen 与重新归档均成功。P1/P2/P3 为真实模型输出,P4/P6 为确定性夹具。
  • 发布提交:9a23ed9;标签:v0.2.4。
  • GitHub Actions:CI 10/10 success。

安装与升级

npm install dsh-novel-write-engine@0.2.4

或安装 GitHub Release 附件:

npm install -g /path/to/dsh-novel-write-engine-0.2.4.tgz

旧项目不需要迁移 outline.yaml。老的“全量提交”在 upsert 下等价;老的“部分提交”以前会删掉未提交卡,现在只改提交的卡——这正是本次修正。想清空计划卡必须显式 remove,空数组是 no-op。若旧项目存在同名卷,只读加载仍兼容,但提交 volumes/remove_volumes 前需先用 novel_amend 改名。

产物

  • npm:dsh-novel-write-engine@0.2.4
  • GitHub Release 附件:dsh-novel-write-engine-0.2.4.tgz
    • size:303,261 B
    • sha256:ae3c38b818a61a69377ab3510f4000592320fd5aa6d1e45d433057cbd376e0a8

边界

  • 这是一次有意的 BREAKING 语义修正:从“提交集合就是全集”变成“提交的是要改的对象”。
  • P4/P6 不是模型评分;P4 的十五维评分与 P6 的五条语义证据由确定性夹具生成。
  • DSH 宿主不接受 x-semantics 关键字,语义以参数描述 + 本地契约表 + 测试强制承载。
  • 详细设计与验收见仓库 docs/0.2.4-plan.md、docs/0.2.4-acceptance.md、docs/0.2.4-real-model-evidence.md。