chore: rolling development → main (DomI pin a9b240f + docstring dedup) - #213
Merged
Conversation
…ative paths now blocked)
…from session start
Wheel contents governed by [tool.setuptools] only; sdist governed by MANIFEST.in directives. Never ship .claude, .specify, specs, .planning, CLAUDE.md, AGENTS.md, .domi-pin, docs/ (development-only) artifacts to PyPI distributions (operator directive 2026-06-12).
…rift - workflow-conformance.yml: managed copy — lints changed workflows (v2.2 baseline) + managed-or-LOCAL.md creation gate - sync-labels.yml deleted: DomI pushes canonical labels downstream (create/update-only; repo-local labels survive) - LOCAL.md: registry of intentionally repo-local workflows Managed copies are never edited here — source: DomI templates/workflows/ (WORKFLOWS.md registry). https://claude.ai/code/session_01RqYaYzJ1MaWGAzscnyKAeP CHILmesh-specific: introspect-monthly managed copy (was broken — referenced absent skills/ tree); python-package.yml + publish-pypi.yml registered repo-local.
Source: DomI templates/workflows @ development (conformance lint fix).
Verbatim Haiku-dispatch block replaced with a 3-line binding summary + pointer to DomI .claude/policies/coding-dispatch.md (single source of truth). Rule unchanged (MUST/Exception/Scope all retained); rationale centralized upstream. https://claude.ai/code/session_01RqYaYzJ1MaWGAzscnyKAeP
…ludes .claude/ paths) Source: DomI templates/workflows @ development. https://claude.ai/code/session_01RqYaYzJ1MaWGAzscnyKAeP
…ing (#202) backend_info() already rejects an importable-but-empty namespace stub (#163 guard); add regression tests that pin this under the stub failure mode so it cannot silently regress. Emit a one-time UserWarning when a large mesh (>=2000 elems) is skeletonized on the pure-Python backend with no compiled C++/Rust extension present, making the source-install perf cliff non-silent. Document source/editable-install behavior in the README Backends section.
…es/_point_in_element (#211) Padding convention is [v0,v1,v2,v0] (4th slot duplicates first vertex), as enforced by _build_adjacencies and every other padding check (row[3]==row[0]). Three sites used the wrong sentinel: - mutations.py split_triangle / split_triangles tested elem[2] != elem[3], so a normalized padded triangle failed the check and wrongly raised 'Element N is not a triangle' after merge_elements made a mesh 4-column. - CHILmesh.py _point_in_element tested elem[3] == elem[2] (latent: benign only because _point_in_quad degenerates correctly when v3==v0). Regression tests in test_mutations.py exercise the padded-triangle path on a post-merge mixed-element mesh; the _point_in_element test monkeypatches _point_in_quad to assert correct branch routing. All fail pre-fix. https://claude.ai/code/session_011k7M9e1bxhKdSUNnEXoQTF
…#202) The #202 slow-path UserWarning hardcoded "Block_O ~5k elems can exceed 200s", but re-measurement on development shows Block_O full pure-Python init is ~0.24s (n_layers=9) and scaling is linear (~1s per 60k elems) — the cliff is gone, the claim was off by ~1000x. - Fix the warning text + raise the over-eager 2k elem threshold to 50k (where the pure-Python gap actually becomes material). - Vectorize _get_centroids (measured hot spot: python-loop np.mean over all elements -> single fancy-index mean; bit-identical, incl. padded triangles). - Add tests/test_skeletonize_perf.py: Block_O full-init regression guard (30s tripwire well under the historical cliff). - Refresh the stale conftest comment (claimed Block_O ~30s / O(n^2)). https://claude.ai/code/session_016bacixEkGkoYfsLd53H5DX
…chmark (docs/BENCHMARK.md)
Standalone additive fort13_io module (read_fort13/write_fort13 + Fort13/ NodalAttribute dataclasses). Lossless fort.14+fort.13 round-trip prereq flagged twice in #201 as highest-value standalone I/O gap for the MADMESHing#48 unification. Handles 1-based<->0-based node id conversion, multi-component (values_per_node>1) attributes, default+nondefault overlay via dense(). Does not touch locked stage modules or save/load dispatch. 5 round-trip tests + sample fixture; full IO/contract subset green. https://claude.ai/code/session_017yrRhnx17P3sACAxE7HwZy
Refresh .domi-pin to DomI main HEAD (manifest 9d57d1f) via sibling-clone update_pin.sh. Drift closed. https://claude.ai/code/session_01SBATG6GY83JQi7UQpbqYpK
insert_vertex/_get_edge_set carried the wrong padding sentinel (elem[2]!=elem[3]) plus a dead ternary (elem[:3] if … else elem[:3]), so a quad's 4th edge was dropped from cavity boundary detection, and new re-triangulation elements were built 3-column → np.vstack crashed on any 4-column (quad/mixed) mesh. - Use the canonical _is_triangle(elem_id) helper to pick the 3- vs 4-vertex ring (completes #211's fix, which patched :80/:488/_point_in_element but missed these sites). - Add _ring_to_edges() to enumerate a closed 3- or 4-edge ring; _get_edge_set now emits 4 edges for quads. - Pad new triangles to [v1,v2,new,v1] when the mesh is 4-column. - Regression test test_insert_vertex_quad_mesh (2x2 quad grid): insertion no longer crashes, re-triangulates, all signed areas non-negative. https://claude.ai/code/session_01SBATG6GY83JQi7UQpbqYpK
…st/release tarball)
Refresh .domi-pin to DomI main HEAD via sibling-clone update_pin.sh. Manifest sha256 updated (DomI MANIFEST changed between pins). Closes session-start drift gate.
…ring The isotropic/size-field Note block was pasted twice verbatim in the direct_smoother docstring. Remove the duplicate; content unchanged. Refs #168.
domattioli
marked this pull request as ready for review
June 16, 2026 01:05
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.
Rolling
development → mainPR (operator-merged). Supersedes #210 (merged 2026-06-15T16:25Z).Rotation 2026-06-15 hour-18 (CHILmesh, maintenance track)
69b073d → a9b240f(a3a22f7) — manifest sha256 updated (9d57d1f → 8e928b8; DomI MANIFEST changed between pins). Refreshed via sibling-cloneupdate_pin.sh. Closes session-start drift gate.c7a581c) — the isotropic/size-field Note block indirect_smootherwas pasted twice verbatim. Removed the duplicate; content unchanged, logic untouched (AST parse clean). Refs testbed(perf): wnat-admesh-3M lifecycle analysis — FEM sizing + GPU blocking factors #168.Coordination (no code)
⚠ Operator flag — introspect-v2 dev/main divergence
developmentcarries 28docs/introspections/*records thatmaindeleted via #212 (introspect-v2 migration to DomI central corpus.introspect/CHILmesh/). Merging this PR re-adds them. They are archived upstream (DomI.introspect/CHILmesh/= 32 records). This is the documented "v2 follow-up sweep" + an unresolved process contradiction (sessions still write to the deprecated dir because CHILmesh is pull-only and cannot write to DomI's.introspect/). Not auto-reconciled (CLAUDE.md warns against autonomous bulk reconciliation). Filed as a CHILmesh issue for operator/DomI-governance resolution — see the linked issue. Recommend resolving the sweep before/at merge so deprecated records are not re-added tomain.Gate: changes are docstring-only +
.domi-pindata (no runtime/test impact; fresh container lacks numpy → full pytest not run, consistent with prior #168 docstring-only precedent on #194).🤖 Draft for operator review before merge to
main.Generated by Claude Code