# MWAL v1 格式

每条记录由 24 字节固定头部和可变载荷组成。多字节整数均采用小端序。

| 偏移 | 长度 | 字段 |
| ---: | ---: | --- |
| 0 | 4 | 魔数 `MWAL` |
| 4 | 1 | 版本，目前为 `1` |
| 5 | 1 | 记录类型 |
| 6 | 1 | 头部长度，固定为 `24` |
| 7 | 1 | 保留位，必须为 `0` |
| 8 | 4 | 全局递增序列号 |
| 12 | 4 | 事务号 |
| 16 | 4 | 载荷长度 |
| 20 | 4 | CRC32C |
| 24 | N | 载荷 |

CRC32C 覆盖版本字段至载荷长度字段（偏移 4 至 19）以及全部载荷，不覆盖魔数和
校验字段本身。魔数由解码器单独验证。

记录类型编码：

| 编码 | 类型 | 载荷 |
| ---: | --- | --- |
| 1 | Begin | 空 |
| 2 | Put | `key_len:u32 + key + value` |
| 3 | Delete | `key_len:u32 + key` |
| 4 | Commit | 空 |
| 5 | Abort | 空 |
| 6 | Checkpoint | 已持久化序列号 `u32` |

## 兼容规则

- 未识别的版本返回 `UnsupportedVersion`，不得猜测解析。
- 未识别的类型、保留位非零或校验失败返回 `Corruption`。
- 数据不足以组成完整头部或载荷返回 `TruncatedTail`。
- 扫描器在首个失败边界停止，后续字节一律不可信。
- v1 内不改变既有字段含义；扩展格式必须提升版本号。
