Skip to content

chore: rolling development → main (DomI pin a9b240f + docstring dedup) - #213

Merged
domattioli merged 33 commits into
mainfrom
development
Jun 16, 2026
Merged

chore: rolling development → main (DomI pin a9b240f + docstring dedup)#213
domattioli merged 33 commits into
mainfrom
development

Conversation

@domattioli

Copy link
Copy Markdown
Owner

Rolling development → main PR (operator-merged). Supersedes #210 (merged 2026-06-15T16:25Z).

Rotation 2026-06-15 hour-18 (CHILmesh, maintenance track)

Coordination (no code)

⚠ Operator flag — introspect-v2 dev/main divergence

development carries 28 docs/introspections/* records that main deleted 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 to main.

Gate: changes are docstring-only + .domi-pin data (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

Claude (dom macbook) and others added 29 commits June 12, 2026 00:45
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
…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
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
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
domattioli marked this pull request as ready for review June 16, 2026 01:05
@domattioli
domattioli merged commit 9da77f0 into main Jun 16, 2026
4 checks passed
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.

1 participant