Skip to content

fix(locking-mechanism-hyperobject): align over_center wall_thickness default with manifest - #105

Merged
aldoruizluna merged 1 commit into
mainfrom
fix/default-drift-locking-mechanism-hyperobject
Oct 2, 2026
Merged

aldoruizluna merged 1 commit into
mainfrom
fix/default-drift-locking-mechanism-hyperobject

Conversation

@aldoruizluna

@aldoruizluna aldoruizluna commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

What changed

The two over_center twins now use the manifest default for wall_thickness.

param mode manifest default source literal (before) source literal (after) file:line
wall_thickness over_center 2 2.5 2 over_center.py:22 (PARAM fallback)
wall_thickness over_center 2 2.5 2 over_center.scad:8 (top-level literal)

Direction and why

The source now follows the manifest default.

  • wall_thickness is one shared parameter: visible_in_modes is snap_latch, over_center, compliant_lock and the default is 2. Studio always sends the manifest-resolved set, so over_center users already see 2 mm.
  • The other modes' sources (snap_latch.*, compliant_lock.*) already fall back to 2.
  • 2.5 dates from the first implementation commit. No comment or doc argues that over_center needs a thicker wall by design, so I did not treat it as an intentional per-mode default.
  • Both kernels change together. The SCAD derived top-level values (pin_d, joint_w, link_w, slot_w) are expressions of wall_thickness, so they follow the new literal consistently.

How this maps to GOC-1

GOC-1 (Digital Twins MES, Phase 2) variables.json is only complete once yantra4d injects every declared parameter (RENDER_INJECT_FULL_PARAMS). This PR removes both default-drift notes for this cartridge (rule from hyperobjects-spec#30). After it, turning the flag on cannot change over_center geometry for callers that send {}.

Evidence

Run with hyperobjects-spec at 510efba (the #30 branch; CI pins 3ff3736, which lacks the rule), CadQuery 2.8.0, OpenSCAD 2026.02.13 (Manifold), BOSL2 at its submodule pin, macOS:

$ y4d-spec check ./locking-mechanism-hyperobject
y4d-spec check: cartridges=1 failures=0 notes=0 ...            # before: notes=2 (default-drift wall_thickness, py + scad)

$ y4d-spec check ./locking-mechanism-hyperobject --render --require-openscad --parity --openscad-path libs --openscad-path . -v
  ok locking-mechanism-hyperobject (52 render(s) verified (18 preset), 25 parity pair(s) agree (3 faceting warn, 4 exempt))
y4d-spec check: cartridges=1 failures=0 notes=13 geometry=verified renders=52 presets=18 skipped=0 parity=18/25 ok, warn=3, exempt=4, placement=0, failures=0

The 13 notes are printability overhang measurements, faceting warns and the standing parity exemptions. None is a default-drift note.

The new over_center bare-default measurements (-v):

  • lever_assembly: cadquery 3009.46 mm³ (2 bodies) vs openscad 2997.39 mm³ (1 body). Parity stays exempt.
  • hook_catch: 1182.22 mm³ on both kernels, parity identical.

Note for review: the standing lever_assembly parity exemption reason quotes "3553 vs 3514 mm³". Those volumes were measured at the old 2.5 mm literal. The divergence it describes (2 bodies on CadQuery vs 1 on OpenSCAD) is unchanged, so I did not edit the reason text in this PR.

macOS green is not proof (AGENTS.md rule 4). The CI Linux render lane is the verdict, and it is pending at the time of writing. verification is unchanged. One cartridge, two files.

CI status (updated)

Linux CI on this head: manifest conformance (all cartridges): pass; render (cartridges changed in this PR) (locking-mechanism-hyperobject): pass; render scope (which cartridges changed): pass.

🤖 Generated with Claude Code

…default with manifest

Both over_center twins (over_center.py PARAM fallback, over_center.scad
top-level literal) used 2.5 mm while the shared manifest parameter, and
every other mode's source, declare 2. The literals now state the manifest
default, so a render that injects no parameters builds what Studio shows
(GOC-1 default-drift). Both kernels change together; body counts and the
standing lever_assembly parity exemption are unaffected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Aldo Ruiz Luna <aldo.ruiz.luna@gmail.com>
@aldoruizluna
aldoruizluna marked this pull request as ready for review October 2, 2026 22:26
@aldoruizluna
aldoruizluna merged commit 2228586 into main Oct 2, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant