Skip to content

fix(skills): correct measured-false claims across eight skills and two rules - #414

Merged
TMHSDigital merged 1 commit into
mainfrom
fix/skill-facts-batch2
Oct 5, 2026
Merged

TMHSDigital merged 1 commit into
mainfrom
fix/skill-facts-batch2

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

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 default to_mesh() on both 4.5.11 and 5.2.1. So this PR does not add that warning.

Changes

Where Was Now (evidence)
always-free-bmesh rule, bmesh-load-edit-free.py, mesh-editing skill "GC cannot free the C memory… eventually crashes"; edit-mode free() "double-frees and crashes" Storage is freed when the wrapper dies, and tracebacks, globals, closures and modal self delay that. The finally: free() gives deterministic release, and later use raises ReferenceError (measured). Edit-mode: an ownership rule. Practice unchanged
mesh-editing float64 foreach_set "writes garbage" Converts correctly, but 38 vs 21 ms on 361k verts (5.2.1); 34 vs 24 ms (4.5.11)
mesh-editing omitting do_unlink → "refuse to delete" Already the default; remove() without the kwarg succeeded
depsgraph each missing clear leaks and accumulates; "in some 5.x builds… crashes" A second to_mesh() returns the same mesh (one temp mesh per evaluated object). The unsourced crash claim is removed
headless script gets argv "after --" Full argv (measured), sliced by the parser
headless — Documents --factory-startup and --python-exit-code (a traceback otherwise exits 0)
headless export_scene.obj fails for a "file dialog" Removed in 4.0: calling it raises AttributeError on both versions
headless render.render "one of the few" ops in --background Not special: mesh.primitive_cube_add also runs headless
addon-scaffolding / bl-info-migration keep bl_info "for 4.5 fallback"; "4.0 or earlier" Manifest alone covers 4.2+; bl_info only for ≤4.1 / legacy install
ai-mesh-cleanup, decimate_to_budget.py calc_loop_triangles() "required, not implicit" Lazy on both: fresh cube 12, after bmesh rewrite 48, to_mesh() of subsurf 192, all without the call. The docs note quoted was about BMesh, not Mesh
operators REGISTER adds undo history; BLOCKING "pauses UI updates" REGISTER = Info + redo panel; UNDO is undo; INTERNAL hides from search; BLOCKING blocks the cursor (operator flag enum docs)
ui-panels _PT_ "enforced"/"required" Registers; prints Warning: 'mypanel' does not contain '_PT_'… (both versions)
procedural-materials two BSDFs to Surface "undefined" The second link replaces the first: 1 link remains, from the newest node (both versions)
extension template README Install from Disk, "select the directory" extension build --source-dir . --output-dir dist (flags confirmed via --command extension build --help on 5.2.1), then install the zip; or a local repository for live edits

Evidence

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_options semantics (operator flag enum docs) and the bl_info version boundary (Extensions Platform shipped in 4.2).

Generated and validators:

  • claude/blender-rules.md and claude/skills/blender-rules/SKILL.md are regenerated by build_claude_rules.py; --check is clean.
  • check_frontmatter, check_skill_refs, check_counts and check_import_export_rules pass.

🤖 Generated with Claude Code

…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>
@github-actions github-actions Bot added skills rules snippets templates documentation Improvements or additions to documentation labels Oct 4, 2026
@TMHSDigital

Copy link
Copy Markdown
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;

@TMHSDigital
TMHSDigital merged commit 040e994 into main Oct 5, 2026
13 checks passed
@TMHSDigital
TMHSDigital deleted the fix/skill-facts-batch2 branch October 5, 2026 00:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation rules skills snippets templates

Projects

None yet

1 participant