Repository navigation
feat(xy-joint): graph twin of the script (graph format 1.1) - #170
Merged
Merged
Conversation
xy-joint.graph.json is a golden twin of main.py, declared as graph_file on the
xy_joint mode beside the script (owner decision D5: graph twins coexist with
scripts, parity-checked; main.py stays the rendered source and the oracle).
Same parameters (declared in `parameters`), same derivations (the idler_width
and d_end clamps as ternary pairs; the levels, the raised element's boss, the
post's top as max() and its inboard edge as min(), all as ternaries), same
operations in the same order. The script's `if mirrored:` seat ring is a
`select`; the right-hand joint is body.mirror("YZ") as `reflect` YZ chosen by
`select` on mirrored. D's back-slot screw runs along +Y: a Z cylinder laid
down by rotate x -90 and spun by rotate y -90 puts the B-rep seam where
makeCylinder puts it (x direction +Z).
y4d-spec check --render --require-openscad --parity ./xy-joint: 10 renders,
parity 5/5 agree to 0.000000 mm (defaults + left_350, right_350 (mirrored),
left_10mm_idler, right_10mm_idler (mirrored)), frames 50/50 ok, failures 0.
Frames and presets unchanged. Assembly A still validates with --collision
(235/235 placed, 292/292 mates, 23/23 poses, errors 0); its digest moves
because the GOC-1 tree of xy-joint gains a file.
Signed-off-by: Aldo Ruiz Luna <aldo.ruiz.luna@gmail.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
aldoruizluna
marked this pull request as ready for review
October 5, 2026 11:53
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Phase 8b, lane P8-TWINS-A (Digital Twins MES programme).
xy-joint/xy-joint.graph.jsonis a node-graph twin ofxy-joint/main.py, in graph format 1.1.graph_fileon thexy_jointmode, next to the script.main.pystays the rendered source and the oracle.docs/README.mdgains a "Graph twin" section (en) and a paragraph in the Resumen (es).parameters.idler_widthandd_endclamps are ternary pairs;max) and its inboard edge (min) are ternaries.if mirrored:seat ring is aselect.body.mirror("YZ"), expressed asreflectYZ chosen byselectonmirrored.cylinderlaid down withrotatex −90 and spun withrotatey −90 puts the B-rep seam wheremakeCylinderputs it (x direction +Z). An XZprofile_circle+extrudewould put it at +X, which measured up to 0.0019 mm off on some diameters.Evidence
Run locally on keystone main
eeb46798, with OpenSCAD 2026.02.13:The one note is pre-existing: the frame grammar uses ASM-1 v1.1.0
let.pytest .github/scripts: 59 passed.assembly_check.py+y4d-spec assembly check --collision: checked=2 failed=0. Assembly A has 235/235 placed, 292/292 mates, 23/23 poses and errors=0.Assembly A's digest moves. It goes from
cb80b6790dbc7047…(solid main345bc45) to85362cde6e9f62132f247de968efe6f75c385eb9ecfac3ea41ee2e8d37a6ac3c(this PR alone). The keystone fixture follows later, in one refresh the coordinator schedules.Landing
SPEC_PIN142db18already carries graph format 1.1. Draft: the coordinator merges.🤖 Generated with Claude Code