# STLKIT 0.1.3

- Mooncakes：[`mik1e80/stlkit@0.1.3`](https://mooncakes.io/docs/mik1e80/stlkit@0.1.3/)
- 固定源码：[`v0.1.3`](https://github.com/mik1e80/stlkit/tree/v0.1.3)
- GitHub Release：[`STLKIT 0.1.3`](https://github.com/mik1e80/stlkit/releases/tag/v0.1.3)
- 旧版 0.1.1 / 0.1.2 的包和标签保持不变。

## 修复范围

PLY 第一行为 `ply`，第二行必须为唯一、完整的 `format <编码> 1.0`，编码仅支持 `ascii`、`binary_little_endian`、`binary_big_endian`。缺失、重复、不完整、增加字段、非 1.0 版本或延后声明都失败，不再把缺失声明当作 ASCII。注释应放在 format 之后；支持字段间的空格 / 制表符及 CRLF。

大小端二进制正文读取全部声明元素与属性后，必须正好到达文件末尾。额外零填充、空格、换行、完整额外标量等均拒绝。未知元素和属性仍按 header 消费，不能把已声明数据误作尾部垃圾；截断仍明确失败。`lenient_ascii=true` 不放宽 header 或二进制尾部规则。

格式依据为 [Greg Turk 的 PLY 原始说明](https://gamma-web.iacs.umd.edu/POWERPLANT/papers/ply.pdf)。本次仍是有限输入边界修复，不代表完整 PLY 规范认证。

## 安装与复核

```sh
moon add mik1e80/stlkit@0.1.3
git clone --branch v0.1.3 --depth 1 https://github.com/mik1e80/stlkit
cd stlkit
git rev-parse HEAD
moon update
moon check --target all --deny-warn
moon test --target wasm
moon test --target wasm-gc
moon test --target js
moon test --target native
node cmd/main/smoke.cjs
bash web/build.sh
node web/smoke.cjs
node scripts/review-cases.cjs
git diff --exit-code -- examples/review
```

每个后端 330 项库测试。新增用例覆盖 format 声明的缺失 / 重复 / 不完整 / 未知编码 / 版本 / 顺序、合法空白与注释、二进制尾部 / 截断和已声明未知元素。CLI / 网页运行实际入口，使用同一组自制坏输入。

`moon run cmd/main examples/missing-format.ply` 应报缺少 format 并以 1 退出，尽管其正文是完整 ASCII 三角形。

## 兼容说明

依赖旧版猜测编码、忽略 format 版本或二进制尾部垃圾的文件现在会失败。请修复 header 或移除未声明尾部，勿用 ASCII 逐行兼容模式绕过。有效的已支持三种编码、坐标 schema、属性重排和未知元素消费保持原行为。

其他能力与边界沿用 [0.1.2 发布说明](https://github.com/mik1e80/stlkit/blob/v0.1.2/docs/releases/0.1.2.md)。重新申报请固定 `0.1.3`、`v0.1.3` 及标签的完整 commit SHA。
