Repository navigation
fix(skills): correct measured-false claims across eight skills and two rules - #414
Merged
Merged
Conversation
…o rules Each statement below was checked by a headless probe on 4.5.11 LTS and 5.2.1 LTS or against the API docs, and rewritten to match: - always-free-bmesh (rule, snippet, mesh-editing skill): BMesh storage is freed when its wrapper is collected; the reason for try/finally free() is deterministic release and fail-fast ReferenceError, not memory the GC can never reclaim. Edit-mode free() is an ownership rule, not a double-free crash. - mesh-editing: float64 into foreach_set converts correctly (~1e-7) but is slower; objects.remove() already defaults to do_unlink=True. - depsgraph: an evaluated object owns one temp mesh (a second to_mesh() returns the same one); the unsourced crash claim is gone. - headless: sys.argv is the full command line; document --factory-startup and --python-exit-code; export_scene.obj was removed in 4.0, not blocked by a file dialog; render.render is not special in --background. - addon-scaffolding / bl-info-migration: a manifest alone covers 4.2+, so bl_info matters only for 4.1 and earlier (not "4.0 or earlier"). - ai-mesh-cleanup / decimate_to_budget: Mesh.loop_triangles is lazy; calc_loop_triangles() is optional. - operators: REGISTER is Info + redo panel, not undo; INTERNAL hides from search; BLOCKING blocks the cursor. - ui-panels: a missing _PT_ only warns. procedural-materials: a second link to Surface replaces the first. extension template README: Install from Disk takes a zip; build it with `extension build` first. Closes #358 Closes #391 Signed-off-by: TMHSDigital <154358121+TMHSDigital@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner
Author
|
CI evidence before merge: all checks pass ( 13 pass ). Blender Smoke on PR head: Blender 5.2.2 LTS / Blender 4.5.14 LTS. Summaries (happy path; falsifiers) per leg: 141 passed, 3 skipped, 0 failed;136 passed, 6 skipped, 0 failed;143 passed, 1 skipped, 0 failed;142 passed, 0 skipped, 0 failed; |
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.
Closes #358. Closes #391.
These are corrections to confident statements in agent-facing content. Every runtime claim was re-measured, not copied from the issue.
Correction to #358 itself
#358 proposed adding a
to_mesh(preserve_all_data_layers=True)warning, claiming the default drops vertex groups. Measured false: a subsurfed object with a vertex group keeps its groups in a defaultto_mesh()on both 4.5.11 and 5.2.1. So this PR does not add that warning.Changes
always-free-bmeshrule,bmesh-load-edit-free.py, mesh-editing skillfree()"double-frees and crashes"selfdelay that. Thefinally: free()gives deterministic release, and later use raisesReferenceError(measured). Edit-mode: an ownership rule. Practice unchangedforeach_set"writes garbage"do_unlink→ "refuse to delete"remove()without the kwarg succeededto_mesh()returns the same mesh (one temp mesh per evaluated object). The unsourced crash claim is removed--"--factory-startupand--python-exit-code(a traceback otherwise exits 0)export_scene.objfails for a "file dialog"AttributeErroron both versionsrender.render"one of the few" ops in--backgroundmesh.primitive_cube_addalso runs headlessbl_info"for 4.5 fallback"; "4.0 or earlier"bl_infoonly for ≤4.1 / legacy installdecimate_to_budget.pycalc_loop_triangles()"required, not implicit"to_mesh()of subsurf 192, all without the call. The docs note quoted was aboutBMesh, notMesh_PT_"enforced"/"required"Warning: 'mypanel' does not contain '_PT_'…(both versions)Surface"undefined"extension build --source-dir . --output-dir dist(flags confirmed via--command extension build --helpon 5.2.1), then install the zip; or a local repository for live editsEvidence
Proven by live run (
--factory-startup; binaries report 5.2.1 LTS and 4.5.11 LTS from.scratch/): every row above marked measured or with numbers. Results were identical on both versions except the timing figures, which are given per version.Inspection only: the
bl_optionssemantics (operator flag enum docs) and thebl_infoversion boundary (Extensions Platform shipped in 4.2).Generated and validators:
claude/blender-rules.mdandclaude/skills/blender-rules/SKILL.mdare regenerated bybuild_claude_rules.py;--checkis clean.check_frontmatter,check_skill_refs,check_countsandcheck_import_export_rulespass.🤖 Generated with Claude Code