Spaces:
Sleeping
Sleeping
Commit History
-
fix: generate non-regular shapes (pyramids, dipyramids, cones, etc.)
Three compounding reasons these failed to the guided dead-end, now fixed: 1. The model labeled them regular_solid; the strict equal-edge/on-sphere gate correctly rejected them (a pyramid isn't regular) and, with no primitive to fall back to, the pipeline gave up. Added a SALVAGE path: a regular_solid that fails the strict gate but has no primitive AND is sound as freeform is re-repaired (no sphere snap) and accepted as freeform. A truly lopsided regular solid is unaffected — it falls back to its primitive instead. 2. Strengthened the codegen system prompt: only the 5 Platonic / uniform solids are regular_solid; pyramids/cones/dipyramids/frustums/etc. are freeform. 3. The model emitted contract-invalid params (e.g. transform axis "xy"), so the assembled contract failed validate_shape and the frontend rejected it. Added assembler param/constraint sanitation: coerce/drop bad transform axes, clamp valid bands, fix dropdown/toggle defaults, snake_case shape_id,…b0364db -
Option A · Phase A3: assembler + build-spec fixtures (bridge proof)
assembler.build runs a build spec through kernel+repair and emits the EXACT frozen frontend contract — validated here by the existing validate_shape AND the metric gate, proving the codegen pipeline produces frontend-compatible, geometrically-correct output fully offline. Undeclared component_ids are auto-reconciled and zero-geometry components dropped (with step refs pruned), so a regenerate param re-runs the cached generator with a new vane count and still yields a valid contract — no model call. 3 fixtures, 12 tests; suite 101.d699311