# 书仓格式与修改边界 此文概述贡献代码时必须保留的公共契约。解析与写入实现位于 `packages/core/src`,测试中的合成夹具是可执行示例。 ## 文件真源 书仓通常包含 `构想`、`作品契约`、`大纲`、`世界书`、`定稿`、`账本`、`本书记忆` 和 `草稿区`。工作范围内的 `书房` 保存跨书素材。书 id 来自作品契约,不能凭目录展示名替代。 卷目录形如 `卷01`,章号全书连续,文件中的章号使用既有四位编号规则。不能把“本卷最大章号”当作本卷章数,也不能把窗口耗尽当作整卷完成。 结构化 Markdown 的 frontmatter、版本、模块标题、引用路径和哈希由对应解析器处理。草稿/候选不是已确认设计,定稿不是聊天里的一句“完成”。恢复进度从当前文件推导,不额外维护一套会话状态账。 ## 写入约束 - 所有输入路径均是受校验的仓内相对路径;拒绝盘符、路径逃逸、保留名和不受信任链接。 - 候选与普通文档修改复用原生观察和精确写入授权;并发修改使旧观察失效。 - 多文件定稿/沉淀保留事务边界,失败可恢复,不能拆成若干无保护覆盖。 - 作者批准绑定本次操作。取消、拒绝或迟到答复不能授权写入。 - 定稿、构想快照和其他冻结工件不通过普通编辑直接覆盖;影响已定稿内容的变更走已有补偿流程。 - 成功后可核对文件、账本及 Git 提交;提交失败不得重复升版或重写相同正文。 ## 检索与派生数据 索引、缓存和材料包具有来源与新鲜度要求,不能代替正文、确认规划或账本。模型、维度、指令或原文变化后应按各自契约失效;模型服务失败时显式降级,不伪造增强效果。 ## 兼容性 修改字段、路径、确认状态或格式版本时,附旧数据夹具、迁移/回退说明和验证。预览期也不能把不兼容数据变化藏在普通 patch 中。v6/v7 旧书不属于已验证的自动迁移输入。