Make docs image generation deterministic and enforce committed docs/images in CI#46
Make docs image generation deterministic and enforce committed docs/images in CI#46
docs/images in CI#46Conversation
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/712e802b-110d-46e3-b582-73e61cab0a46 Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/712e802b-110d-46e3-b582-73e61cab0a46 Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/712e802b-110d-46e3-b582-73e61cab0a46 Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/712e802b-110d-46e3-b582-73e61cab0a46 Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/712e802b-110d-46e3-b582-73e61cab0a46 Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/712e802b-110d-46e3-b582-73e61cab0a46 Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/712e802b-110d-46e3-b582-73e61cab0a46 Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/712e802b-110d-46e3-b582-73e61cab0a46 Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/712e802b-110d-46e3-b582-73e61cab0a46 Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/712e802b-110d-46e3-b582-73e61cab0a46 Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/712e802b-110d-46e3-b582-73e61cab0a46 Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/712e802b-110d-46e3-b582-73e61cab0a46 Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
docs/images in CI
|
@copilot extract the generation script from the justfile |
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/1a4571a9-44cc-42cb-8844-2c04b2a32da8 Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/1a4571a9-44cc-42cb-8844-2c04b2a32da8 Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/1a4571a9-44cc-42cb-8844-2c04b2a32da8 Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/1a4571a9-44cc-42cb-8844-2c04b2a32da8 Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/1a4571a9-44cc-42cb-8844-2c04b2a32da8 Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/1a4571a9-44cc-42cb-8844-2c04b2a32da8 Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
Done in commit 848dd3a (with follow-up polish through a9eb3a0). The Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
|
@copilot PTAL at the failure in the new workflow |
|
🚀 Preview deployed to https://f169ee29.gridflock-yawk-at.pages.dev |
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/71176de3-ed1c-4286-b56b-c094561a912b Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
Fixed in 69f1e16. The new workflow was failing because |
|
@copilot CI still fails. I think you have to use a snapshot build of openscad. Also, you will probably have to run the canonicalization as part of this PR to get the check to pass. If you can't do that, please inform me and I will run it locally. |
Agent-Logs-Url: https://github.com/yawkat/GridFlock/sessions/cf79f1cd-6fd8-4ba1-a18f-f6b408514ac1 Co-authored-by: yawkat <2395297+yawkat@users.noreply.github.com>
Addressed in f355201: docs-images CI now installs a nightly OpenSCAD snapshot (via Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
Use LIBGL_ALWAYS_SOFTWARE=1 + GALLIUM_DRIVER=softpipe in both the justfile docs recipe and the CI workflow. This pins both local and CI rendering to Mesa's pure-CPU softpipe rasterizer, avoiding pixel differences caused by GPU vs. CPU rendering or different GL backends.
Instead of failing when docs/images differ, the CI workflow now commits the regenerated images back to the branch. This is necessary because OpenGL rasterization (even with the same OpenSCAD version) produces pixel-level differences across different Mesa versions and GPU drivers, making bit-identical local reproduction impractical. CI becomes the canonical source for committed image content. Local 'just docs' runs still serve as regression detection: after pulling CI-committed images, re-running locally will show a diff for any model change that visibly affects the renders.
just docscurrently produces PNGs whose binary encoding can vary across machines, creating noisy diffs. This PR makes generated docs images deterministic at the byte level and adds CI enforcement so PRs cannot pass with stale or uncommitteddocs/imagesoutput.Deterministic PNG canonicalization in
just docsgenerate_docs_images.py(invoked byjust docs).0,Render failure handling hardening
CI workflow to gate docs image drift
.github/workflows/docs-images.ymlfor PRs/workflow_dispatch.just clean-docs paths docs, then fails ifdocs/imagesdiffers from committed files.scadm) instead of Ubuntu’s stableopenscadpackage, so docs rendering uses syntax/features required by current sources.contents: read).