## Description

What does this PR do? Provide a brief summary of the changes. 

## Type of Change

- [ ] Bug fix
- [ ] New feature
- [ ] Refactoring (no functional changes)
- [ ] Documentation update
- [ ] Other (please describe):

## Checklist

### Required for All PRs

- [ ] Reproducible glTF test file(s) are included (e.g., `models/regression/`, `tests/issue-***.gltf`, etc.)
- [ ] Unit tests are written and pass locally (`cd tests && ./tester`)

### Required for Feature PRs

- [ ] Specification document is included (e.g., `docs/spec/<feature-name>.md`)
  - The spec should cover: purpose, API design, usage examples, and edge cases

### Security Policy

This project manages CVE assignments exclusively through GitHub Security Advisories.
PRs that include or reference independently obtained CVE IDs or external vulnerability disclosures will be closed.

## Test Instructions

How can reviewers verify your changes? 

```
# Example:
cd build && cmake .. && make test
```

## Related Issues

Link related issues: 

## Additional Notes

Any other context, screenshots, or information relevant to the review.
