BlueGit

golden-age paperdoll-renderer

design: #14 robustness gate decisions

timfa Grok Bot · pushed by timfa

Authored 2026-11-07 · 7 days ago

Hash
b2933bc68b58ecaf94348b9fcf250fe268d68d57
Parent
c9033dff
Pipeline
Passed
1 file changed +5 −0
design.md +5 −0
@@ -427,3 +427,8 @@ Alpha is always kept (scaled to the bit depth). Distance = near + t·(far − ne
427 427 ## Decision 2026-11-07 (#13 orientation + envelope, implementation choice)
428 428 - Orientation convention fixed and test-guarded with labelled markers: +Y up, character faces −Z, its right is +X; yaw 0 = front (character's right on image left), 90 = left side, 180 = back, 270 = right side; positive pitch looks from above.
429 429 - "Omhullende animaties" is a one-shot, user-triggered button: height and center Y are set so every clip, every frame at project fps and all 60 views fit, +5% margin per side; the pivot is unchanged. Framing stays fixed afterwards: no per-frame, per-clip or per-layer autozoom. Equipment allowance stays manual. Root motion stays retained, so a travelling clip widens the envelope.
430
431 ## Decision 2026-11-07 (#14 robustness gate, implementation choice)
432 - Robustness acceptance is an automated, deterministic mutation suite (`tests/robustness.rs`): corrupt/truncated/mutated glTF/GLB, FBX, OBJ bodies, .ppe presets, .ppd manifests and .ppda files must yield an error or a valid result, never a panic or a non-finite body.
433 - glTF loading rejects non-finite positions/normals/weights, mismatched attribute lengths and out-of-range indices; panics inside the gltf parser are caught and reported as load errors (editor import overview included).
434 - Not covered (no automated gate possible here): accessibility, real OS file pickers and non-Linux platforms; these stay manual acceptance items.
@@ -427,3 +427,8 @@ Alpha is always kept (scaled to the bit depth). Distance = near + t·(far − ne
427## Decision 2026-11-07 (#13 orientation + envelope, implementation choice)
427## Decision 2026-11-07 (#13 orientation + envelope, implementation choice)
428- Orientation convention fixed and test-guarded with labelled markers: +Y up, character faces −Z, its right is +X; yaw 0 = front (character's right on image left), 90 = left side, 180 = back, 270 = right side; positive pitch looks from above.
428- Orientation convention fixed and test-guarded with labelled markers: +Y up, character faces −Z, its right is +X; yaw 0 = front (character's right on image left), 90 = left side, 180 = back, 270 = right side; positive pitch looks from above.
429- "Omhullende animaties" is a one-shot, user-triggered button: height and center Y are set so every clip, every frame at project fps and all 60 views fit, +5% margin per side; the pivot is unchanged. Framing stays fixed afterwards: no per-frame, per-clip or per-layer autozoom. Equipment allowance stays manual. Root motion stays retained, so a travelling clip widens the envelope.
429- "Omhullende animaties" is a one-shot, user-triggered button: height and center Y are set so every clip, every frame at project fps and all 60 views fit, +5% margin per side; the pivot is unchanged. Framing stays fixed afterwards: no per-frame, per-clip or per-layer autozoom. Equipment allowance stays manual. Root motion stays retained, so a travelling clip widens the envelope.
430
431## Decision 2026-11-07 (#14 robustness gate, implementation choice)
432- Robustness acceptance is an automated, deterministic mutation suite (`tests/robustness.rs`): corrupt/truncated/mutated glTF/GLB, FBX, OBJ bodies, .ppe presets, .ppd manifests and .ppda files must yield an error or a valid result, never a panic or a non-finite body.
433- glTF loading rejects non-finite positions/normals/weights, mismatched attribute lengths and out-of-range indices; panics inside the gltf parser are caught and reported as load errors (editor import overview included).
434- Not covered (no automated gate possible here): accessibility, real OS file pickers and non-Linux platforms; these stay manual acceptance items.