Skip to content

fix(custom-msh): align assembly stack_along_y default with manifest - #106

Merged
aldoruizluna merged 1 commit into
mainfrom
fix/default-drift-custom-msh
Oct 2, 2026
Merged

aldoruizluna merged 1 commit into
mainfrom
fix/default-drift-custom-msh

Conversation

@aldoruizluna

@aldoruizluna aldoruizluna commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

What changed

param mode manifest default source literal (before) source literal (after) file:line
stack_along_y assembly 1 0 1 custom-msh/assembly.scad:37

custom-msh/docs/README.md listed the default as "No". It now says "Yes", which matches the manifest and the root README.md.

Direction and why

The source literal now follows the manifest default. Six things already used 1:

  • the manifest;
  • box.scad:34;
  • the root README;
  • the four presets default_box and assembly_*.

Studio always sends the manifest-resolved set, so assembly users already see 1.

The bare render also had a real inconsistency. assembly.scad gets box_base() and box_lid() through use <box.scad>, and those modules read box.scad's own stack_along_y (1). So a bare assembly render built a Y-stacked box around X-stacked racks and slides. The evidence: on main, the bare-default assembly/box_base volume (17820.82 mm³) was already identical to the stack_along_y: 1 presets, while the rack and slide placement in assembly.scad followed its own 0. Both now agree.

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 the default-drift note for this cartridge (the rule is from hyperobjects-spec#30), so turning that flag on cannot change this cartridge's geometry for callers that send {}.

Evidence

Environment: hyperobjects-spec at 510efba (the #30 branch; CI pins 3ff3736, which does not have the rule), OpenSCAD 2026.02.13 (Manifold), BOSL2 at its submodule pin, macOS.

# main (faaea08), --render --no-printability
y4d-spec check: cartridges=1 failures=0 notes=3 geometry=verified renders=23 presets=14 skipped=0
   (1 x default-drift stack_along_y; 2 x preset renders identical to defaults)

# this branch
$ y4d-spec check ./custom-msh
y4d-spec check: cartridges=1 failures=0 notes=0 ...
$ y4d-spec check ./custom-msh --render --require-openscad --parity --openscad-path libs --openscad-path . -v
  ok custom-msh (./custom-msh, 23 render(s) verified (14 preset), no comparable pair)
  (assembly, rack): 3 bodies · (assembly, slides): 30 bodies · every other part 1 body, all watertight  (= declared counts)
y4d-spec check: cartridges=1 failures=0 notes=6 geometry=verified renders=23 presets=14 skipped=0 parity=0/0 ok, warn=0, exempt=0, placement=0, failures=0

The 6 notes are all "preset renders geometry identical to the default-params render", for the assembly_rack_slides and assembly_box_nolid parts. There are more of them now because those presets restate stack_along_y: 1, which is now also the bare default. The other keys they set either carry no manifest default or are display-level only (assembly_level gates the preview, not an isolated part, per the comment at assembly.scad:220). This is expected and is not a failure.

The declared body counts (assembly/rack 3, assembly/slides 30) still hold at the defaults, so verification is unchanged. The PR touches one cartridge and two files.

A green macOS run is not proof (AGENTS.md rule 4). CI's Linux render lane decides, and it is pending at the time of writing.

CI status (updated)

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

🤖 Generated with Claude Code

assembly.scad fell back to stack_along_y = 0 while the manifest, every
assembly/box preset and box.scad itself use 1. Because assembly pulls the
box in with `use <box.scad>`, a bare render built a Y-stacked box around
X-stacked racks. The top-level literal now states the manifest default, so
a render that injects no parameters builds what Studio shows (GOC-1
default-drift). docs/README.md listed the default as "No"; it now says
"Yes" like the manifest and the root README.

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 71c5fe2 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