Skip to content

fix(bike-mount): align interface source default with manifest - #101

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

aldoruizluna merged 1 commit into
mainfrom
fix/default-drift-bike-mount

Conversation

@aldoruizluna

@aldoruizluna aldoruizluna commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

What changed

bike-mount/main.py:61 — the PARAM fallback for interface now equals the manifest default.

param mode(s) manifest default source literal (before) source literal (after)
interface gopro_mount, quarter20_mount, strap_mount "light" "gopro" "light"

The trailing comment now lists the select's real options (light | phone_tab).

Direction and why

Source literal → manifest default. Studio always sends the manifest-resolved parameter set, so the manifest default is what users see. "gopro" is not an option of this select at all, and the strap_mount dispatch (main.py:311) already coerced any other value to "light", so the default geometry does not change. Only the literal now says so.

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). A cartridge whose source fallback differs from its manifest default would change geometry for API callers that send {} when that flag flips. This PR removes the default-drift note for this cartridge (hyperobjects-spec#30).

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, macOS:

$ y4d-spec check ./bike-mount
y4d-spec check: cartridges=1 failures=0 notes=0 ...            # before: notes=1 (default-drift interface)

$ y4d-spec check ./bike-mount --render --require-openscad --parity --openscad-path libs --openscad-path .
  ok bike-mount (./bike-mount, 6 render(s) verified (3 preset), no comparable pair)
y4d-spec check: cartridges=1 failures=0 notes=0 geometry=verified renders=6 presets=3 skipped=0 parity=0/0 ok, warn=0, exempt=0, placement=0, failures=0

macOS green is not proof (AGENTS.md rule 4). CI's Linux render lane is the verdict, and it had not run when this was written.

No verification change. One cartridge, one file.

CI status (updated)

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

🤖 Generated with Claude Code

The PARAM fallback for `interface` was "gopro", which is not even an option
of the select (light | phone_tab); the manifest default is "light". The
strap_mount dispatch already coerced anything else to "light", so geometry
is unchanged, but the source literal now states the manifest default so a
render that injects every declared parameter cannot drift from one that
injects none (GOC-1 default-drift).

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 b9f94ac 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