description: "纯函数式相邻 Session 格式规划、无损 JSON 值检查、仅标头迁移与物理编解码分派。"
English | 中文
dsh-session-format 让持久化代码可以直接还原当前 Session,或在只消费一次物理行的同时组合唯一的相邻迁移序列。一次还原会让调用方拥有的已解析值流经有状态 Stage,不复制或冻结中间 artifact。物理分帧、压缩、不可变 generation 命名、排他发布和 Cordis 生命周期行为不属于本库。
当持久化或格式目录代码需要分类物理 Session header、还原当前逻辑值或组合已发布相邻迁移时,使用本库。它不是 Cordis 插件,也没有 profile 挂载行。它不发布运行时不变式伴生入口,因为每个已完成操作都会校验结果;decoder 与 transformer 状态只属于一次尚未完成的流式还原,绝不在多次还原间共享。
const catalog = createSessionFormatCatalog({ currentVersion, codecs, currentEncoder, migrations, restoreCurrent, restoreTransformedCurrent, restoreCurrentHeader })
const descriptor = catalog.readHeader(physicalHeader)
const restore = catalog.createRestore(physicalHeader, { recovery: 'recoverable', validation: 'transformed' })
for (const row of physicalRows) restore.decodeRow(row)
const current = restore.finish()
const headerRecord = catalog.encodeCurrentHeader(current.header, current.inheritedEventCount)
const eventRecords = current.events.map(catalog.encodeCurrentEvent)
createSessionFormatCatalog() 接收每个受支持版本的一个冻结 codec、当前格式的逐记录 encoder、每组相邻版本的一个迁移,以及当前 artifact 与 header 还原器。readHeader() 在不读取事件的情况下返回 current、migration-required、unsupported 或 malformed 描述符。正文读取方创建一次 restore,把每个已解析物理行传给 decodeRow(),再调用一次 finish() 获得当前 artifact。写入方逐条编码其 header 与事件。
recovery 选项决定严格拒绝故障行,还是执行可恢复后缀处理。validation: 'current' 会执行已安装 current 格式的全部校验。validation: 'transformed' 会在历史迁移后执行已发布 current 格式校验;已经是 current 的输入则只接受其 codec 的物理校验。
可恢复解码器返回已接受的逻辑前缀。编解码器可以丢弃一个格式错误或序号不连续的行及其未提交后缀,但后续成功解码的 turn/end 会使原始问题成为致命错误。
没有直接内容。消费方通过 deriveMessages() 从经过校验的当前产物重建模型历史。
不直接产生 token。
没有直接影响。迁移若改变当前历史,可能改变由请求重建逻辑拥有的缓存身份。