v0.1.3
lstar-sc 0.1.3 — the first release since 0.1.2, bundling the macOS packaging fix, the viewer@0.1 cross-language parity work, and the cross-surface parity-audit fixes.
macOS packaging
- Fix a reproducible arm64 SIGSEGV in
extend_for_viewer's OpenMP kernels caused by a dual-libomp cross-runtime: the bundledlibompis coalesced to@rpath/libomp.dylibso a hostlibomp(scikit-learn/numba/scipy) is reused instead of a second copy loading. A barepip install lstar-scon Apple Silicon no longer risks the crash.
viewer@0.1 cross-language parity
extend_for_viewernow produces a field-for-field identical store across C++/Python/R/JS. The cell reorder (viewer_cell_order: cluster-contiguous, then a Hilbert curve over the embedding), the CSR/CSC encoding normalization, the group ordering, and grouping detection are single-sourced on the shared C++ core + a canonical policy, and enforced by cross-surface conformance legs (including a corpus-driven check) and a policy linter. Seedocs/parity.md.
Cross-surface fidelity (parity audit)
- COO fields normalize to CSC on write (portable to every reader); dense fields carry their shape in the manifest; the C++ core preserves a field's
uncertainty; the.h5addirect backend infersstatefrom content like the native backend. - R preserves float32 value dtypes and a graph relation's
directed/weightedflags across alstar_read/lstar_writeround-trip. pseudobulkroutes its reduction through the sharedcol_sum_by_groupkernel (was a numpy duplicate).extend_for_viewergainsorder=/markers=on R andorder=on JS (parity with Python).- New CI guardrails: a binding-parity tripwire (a shared kernel must be bound on all surfaces) and a policy linter (viewer policy constants single-sourced).