3.3 KiB
M12-07E Status
status: done task: STL normal, unit, degenerate-triangle, and trailing-byte parity updated: 2026-08-18 America/New_York enablingTask: false parityStateChange: false
Scope
The bounded STL protocol requires an explicit binary/ASCII variant and positive unit scale. It parses
facet normals and vertices, applies the scale, removes zero-area triangles the same way as Blender's
validated import, and rejects binary payload after the declared triangle table with
STL_TRAILING_BYTES. Desktop Blender accepts that trailing fixture as an empty mesh, so the report
records STRICTER_WEB_BLOCK rather than claiming exact parity for that edge case.
Evidence
- The deterministic edge generator derived a one-degenerate-triangle binary and a four-trailing-byte binary from M12-07D. Pinned Blender 5.2 was probed at unit scales 1 and 0.001 and against both edge files; it preserves normals, scales world bounds by 1000, removes one degenerate triangle, and accepts the trailing fixture as an empty mesh.
node --test web/tests/unit/stl-import.test.mjspassed 2/2 for binary/ASCII normals, explicit unit scaling, degenerate removal, trailing-byte rejection, and invalid scale.CHROME_PATH=/usr/bin/google-chrome-stable WEB_TEST_PORT=5463 node_modules/.bin/playwright test --config playwright.config.ts --workers=1 tests/e2e/stl-edge-parity.spec.tspassed 1/1 in Chrome 150. Normal comparison is exact, Web/Desktop unit ratio matches within Float32 tolerance, and both retain one triangle after degenerate removal.node tools/web/check-stl-edge-parity.mjspassed:stl-edge-parity-ok normals=exact unitRatio=1000 degenerate=removed trailing=STRICTER_WEB_BLOCK next=M12-07F.- Typecheck and
git diff --checkpassed. The stricter trailing-byte policy leaves N-023 full parity blocked and does not expose an STL UI route.
Artifact Hashes
- parent manifest:
bbc78e47f389562e7d648bf49c9b3bf8a08aaa36e914589a6eab0a1f6e72748d - fixture generator/desktop probe:
018013347642603c21237ebb023bdc7a4e338f5a3f875fea536a996eb121e716/b3d6ea197ef77b5a14f60f5e6b43d4392e943ff5d56acf73915507fc9a4161b7 - protocol/Worker:
87eec72e2b8aa7ad0b168ca0ee8c4016c941f56f5f1ac53aa5fe71d0832f1dd8/d714f1f3a218a2226dd349aea81c6c54efa6246de1c4fe51aaa9f5c352ef44fc - unit/Chromium/checker:
4af52833486421c017f3af2b833b0776e60a6ab57ed66fea2161cf9674f4b243/121d348250e26d29ad966f7427bbef9da77de2098e2e305827b11aae52002c5c/b5ed7fbb41bb46fba982d5726cb8c3eaecf360b772a01d6337c309b1c4a4f535 - fixture/desktop/Web reports:
545463a984356d6635cbaae3865d13fe95bd2d841c394ac9ddff496c95d46f18/2d3028a3b7d97f39654cff5fcef1d0c1c71e9f2d08e3e29c2e926651ed3860f1/e0686cc9be3b68e564651207443e0ebf3e3b0eb3d07a32915b03f44b1908357b - degenerate/trailing fixtures:
c120bb0f218819eb89a3607c0b4f8fafd9afb599402e3b21deaa3b2be143e7d0/0a30aab6db1588722067000e2a08c3c6206a8ed5b7531caa0b082723700a3681 - package:
cfb232baa494ff59f6c8d65514a08c86332ee9354350b2a0392b6f932a7ee42c - manifest:
19a9f460d1b939c9504dadd364cb87dab3b1769b0599035e2d2b51b47091e034
Next Task
M12-07F: STL Web-to-desktop round-trip and material-loss report.
Rollback
Remove the STL edge fixtures, probes, parser, Worker, tests, reports, checker, manifest, and this status entry. Restore M12-07D as the queue tail and move the machine queue back to M12-07E. No parity ledger rollback is required.