Skip to content

Jig previews: upload the renders and fail on jig warnings; record the structural known issues in the TODO - #137

Open
dorkmo wants to merge 5 commits into
mainfrom
claude/dreamy-mccarthy-lpn9af
Open

dorkmo wants to merge 5 commits into
mainfrom
claude/dreamy-mccarthy-lpn9af

Conversation

@dorkmo

@dorkmo dorkmo commented Sep 27, 2026 •

Copy link
Copy Markdown
Contributor

Summary

This PR has two independent parts:

  1. Fix the jig-preview workflow. It has failed on all three of its runs on main. It now uploads the renders instead of committing them, frames each view so the whole jig shows, and fails when a jig doesn't evaluate or render cleanly.
  2. Record the structural known issues in LifeTrac-v25/TODO.md, so the design work they need can be picked up later.

1. Jig-preview workflow

The Generate Jig Previews workflow has failed on all three of its runs on main, most recently when #134 merged. On push events, its "Commit and push renders" step ran git add renders/*.png renders/*.jpg. The root .gitignore ignores *.png and *.jpg, so git add failed. The renders were never committed, and the six images the jig README embeds have always been broken. The OpenSCAD review in #133 flagged this, along with the hidden render failures below (its CI table, generate-jig-previews.yml row).

Changes:

  • Artifact instead of commit.
    • The jig-renders artifact is uploaded on every run, not only on pull requests, and kept for 90 days.
    • The commit step is removed, and so is the README-timestamp step, which only existed for the commit.
    • The job now only needs read access.
  • Whole jigs in every view. Each render uses --viewall --autocenter, so the view fits the whole jig. Three of the six views used to run off the edges of the image: the pivot-mount jig's two views and the tube jig's front view. --camera still sets the view direction.
  • Fail on OpenSCAD warnings. OpenSCAD 2021.01 exits 0 on warnings, even with --hardwarnings for PNG output, and writes a blank or partial image.
    • A new step evaluates every jig before anything is rendered and fails on any warning or error. When a jig fails to parse, it prints OpenSCAD's message.
    • The render step fails on any warning OpenSCAD prints while building the geometry, such as mixing 2D and 3D objects, which the evaluation can't see. The three render steps are now one step with a helper, so every view gets this check.
    • The || echo "Warning…" after the pivot-jig renders hid real failures too. It's removed.
  • When it runs. It also runs when lifetrac_v25_params.scad changes, because every jig includes it, and on pull requests that change the workflow, as pushes already did.
  • README. The jig README now says where to get the renders instead of embedding images that were never committed. Downloading an artifact needs a GitHub login, and the link goes to the latest successful run on main.
  • Review. The 2026-09-25 review's follow-up status table records this PR.

Verification. I ran the workflow's steps locally with OpenSCAD 2021.01, the version CI installs.

  • Current jigs: the checks pass with no warnings, and all 6 views render with the whole jig in frame, plus their JPG copies. The upload paths match the 12 images and leave out renders/.gitkeep.
  • Unknown variable planted in a jig: the evaluation step fails and prints the warning.
  • Include pointed at a missing file: the evaluation step fails and prints the warnings.
  • Parse error planted in a jig: the evaluation step fails and prints the parser error with its line number.
  • 2D and 3D objects mixed in a jig: the evaluation passes, as expected, and the render step fails with the warning.

The old workflow passed in every one of these broken cases.

The alternative. If you'd rather see the images in the README on GitHub, the renders could be committed instead. That needs a .gitignore exception for renders/, like the existing one for assembly.png, and keeping a fixed commit step. The artifact approach avoids bot commits of binary files to main.

2. Structural known issues in the TODO

The rebuilt structural analysis (#136) fails 8 checks, which it lists in STRUCT_KNOWN_ISSUES. A new ## Structural known issues section in LifeTrac-v25/TODO.md records them as ST-0 to ST-11, and section J of the pre-field-deployment checklist points to it:

  • ST-0: choose the bucket cylinders. They set every bucket-case load. The model's 3" cylinders and the BOM's 2" × 1" ones disagree, and a run of the model with the 2" ones still fails the arm, the arm tip, the U-lug and all three lug-bolt checks.
  • ST-1 to ST-8: the 8 failing checks, each with its numbers, cause and the review's suggested fix (B4, P14, M8). It also notes that the model cuts every U-lug to 76.2 mm, so the bucket lugs have no holes for the bolts that ST-6 and ST-8 check.
  • ST-9: the 92 kg rated operating capacity. It explains why the capacity is low (the load's reach ahead of the front axle), what would raise it, and what's known about the mass estimates.
  • ST-10 and ST-11: two part-drawing issues found while merging v25 OpenSCAD review, plus fixes for broken part exports and silent CI jobs #133 and Rebuild the structural and stability analysis for the current v25 design #136:
    • Revision letters flip between CI runners, because a fitted hole centre sits on a rounding tie.
    • The part drawings don't carry the "Not yet ready for fabrication" warning.

Verification. Independent checks compared every figure, dimension, link and citation against main's analysis log, the model and the review, and a second pass re-checked every correction. A later review re-ran the model to confirm the figures added after that, including the 285 kg tipping load with the front axle 100 mm forward. The section renders with GitHub-flavoured Markdown, and all 14 links point at files on main.

Branch history

main was merged into this branch so the review's follow-up table, which #136 added, could record this PR. The analysis bot then rewrote the log's header on this branch, and the last commit puts the log back to main's copy. So the PR's diff against main is exactly these five files: the workflow, the jig README, renders/.gitkeep, TODO.md and the review.

After merging

The jig README change sits under openscad/, so the merge re-runs the part-drawings workflow on main. Its bot may commit refreshed drawings with P5's revision letter going up. That's the revision-flip issue recorded as ST-10, not a change from this PR.

🤖 Generated with Claude Code

https://claude.ai/code/session_01A4ZY2kr3UU7D2vK8aHjmkS

… on jig warnings

The push-event "Commit and push renders" step failed on every run on
main: it ran `git add renders/*.png renders/*.jpg`, which the root
.gitignore ignores (*.png, *.jpg), so the renders were never committed
and the jig README's images were broken.

- Upload the renders as the jig-renders artifact on every run (it was
  PR-only), and drop the commit step and the README timestamp step that
  existed only for the commit. The job now needs read access only.
- Evaluate each jig before rendering and fail on any OpenSCAD warning
  or error. OpenSCAD 2021.01 exits 0 when a PNG render hits a warning,
  even with --hardwarnings, and writes a blank or partial image; the
  `|| echo "Warning..."` on the pivot jigs also hid real failures.
- Run on pull requests that change the workflow, as pushes already do.
- The README now says where to get the renders instead of embedding
  images that were never committed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A4ZY2kr3UU7D2vK8aHjmkS
The rebuilt structural analysis (#136) fails 8 checks, which it lists in
STRUCT_KNOWN_ISSUES. Record them in LifeTrac-v25/TODO.md as ST-0 to
ST-11 so the design work can be picked up later:

- ST-0: choose the bucket cylinders, which set every bucket-case load.
  The model's 3" cylinders and the BOM's 2" x 1" ones disagree, and a
  run of the model with the 2" ones still fails 6 of the 7 bucket-case
  checks.
- ST-1 to ST-8: the 8 failing checks, with their numbers, causes and the
  review's suggested fixes (B4, P14, M8). Notes that the model's lugs
  are cut to 76.2 mm, so the bucket lugs have no holes for the bolts
  that ST-6 and ST-8 check.
- ST-9: the 92 kg rated operating capacity, why it is low (the load's
  reach ahead of the front axle), the options, and the mass estimates.
- ST-10, ST-11: two part-drawing issues found while merging: revision
  letters that flip between CI runners (a fitted hole centre on a
  rounding tie), and drawings that don't carry the fabrication warning.

Section J of the pre-field-deployment checklist points to the new
section. Every figure was checked against main's analysis log, the model
and the review.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A4ZY2kr3UU7D2vK8aHjmkS
@dorkmo dorkmo changed the title Jig previews: upload the renders instead of committing them, and fail on jig warnings Jig previews: upload the renders and fail on jig warnings; record the structural known issues in the TODO Sep 27, 2026
claude and others added 3 commits September 27, 2026 15:24
Brings in #136 (the rebuilt structural analysis) and main's bot updates,
so the known-issues TODO's links resolve on this branch and the review's
follow-up status table can record this PR. No conflicts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A4ZY2kr3UU7D2vK8aHjmkS
…n params changes

Fixes from an independent review of this PR:

- Frame each view with --viewall --autocenter. Three of the six renders
  (the pivot-mount jig's two views and the tube jig's front view) ran
  off the edges of the image. --camera still sets the view direction.
- Fail on any WARNING or ERROR line OpenSCAD prints while rendering.
  Warnings raised while building the geometry, such as mixing 2D and 3D
  objects, never reach the echo-export check, and OpenSCAD 2021.01 still
  exits 0 and writes a blank or partial image. The three render steps
  become one step with a helper, so each view gets the same check.
- Also run when lifetrac_v25_params.scad changes: every jig includes it,
  so a renamed or changed parameter could break the jigs unseen.
- Print OpenSCAD's message when a jig fails to parse; with an echo
  export it goes only into the echo file.
- Jig README: downloading an artifact needs a GitHub login, link to the
  latest successful run on main, and only maintainers can run the
  workflow by hand.
- Review: record this PR in the follow-up status table, and update the
  stale bullet about the jig include (#134 fixed it).

Checked locally with OpenSCAD 2021.01: the clean jigs pass and all six
views show the whole jig; a planted 2D/3D mix fails the render step; a
parse error fails the check step and prints the parser error; an unknown
variable fails the check step.

Also restores STRUCTURAL_ANALYSIS_LOG.md to main's copy: the analysis
bot rewrote its header when main was merged into this branch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A4ZY2kr3UU7D2vK8aHjmkS
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.

2 participants