You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The pipeline previously depended on MATLAB-only APIs for preprocessing, optimization, geometry, persistence and graphics. This adds a bounded serial Octave 2D/3D build → save/load → explore workflow while retaining the MATLAB backends.
Changes
Add namespaced adapters for Box–Cox normalization, feature selection, numerical/SIMPLS projection, KNN none/Sobol tuning, TRACE3 footprints, model archives and PNG export.
Preserve trained predictions and footprint summaries across Octave save/load/explore; support CSV output, quoted Unicode labels, evaluation-only algorithms and instance subsets.
Add portable regression suites and CI with pinned Octave and package versions.
Consolidate web documentation changes under v0.9.2, move misplaced entries into Version History, order releases newest-first and regenerate the HTML/search index.
Validation
Octave 11.3.0 with Statistics 2.0.0 and Datatypes 1.5.0: deterministic, learning, optimization, geometry and workflow-edge suites passed; complete 2D/3D build/save/load/explore with CSV and PNG passed. PNG output was visually inspected.
Octave 6.4.0: core-only deterministic suite passed.
MATLAB R2026a Update 5: shared deterministic, learning and optimization contracts passed. Both ClassApiTest cases passed across separate runs after the combined run reached its graphics-output time limit.
Documentation generation check, link check, release-history structure checks and git diff whitespace check passed.
New GitHub CI configuration awaits its hosted run; the full MATLAB regression suite was not run locally.
Support boundary
KNN is the validated Octave classifier. Bayesian tuning, parallel execution, legacy TRACE, FIG files and web palette export remain unsupported in Octave. 3D PNG requires Qt and a display or virtual display. Classifier archives are runtime-specific; equal seeds do not imply identical MATLAB/Octave optimizer, Sobol or geometry results. See docs/octave-compatibility.md for the tested environment and contracts.
❌ Patch coverage is 88.96552% with 16 lines in your changes missing coverage. Please review.
✅ Project coverage is 94.60%. Comparing base (aac7d7d) to head (681ac5d).
✅ All tests successful. No failed tests found.
Avoid misclassifying native models as portable archives
utils/+isacompat/loadModel.m:28
A native flattened model is treated as a portable archive solely because it has a top-level archiveVersion field. On MATLAB this immediately raises ISA:compat:archiveVersion (~isOctave() is true), so models with an otherwise ordinary custom field that previously loaded successfully now break. Detect the exact portable envelope written by saveModel (archiveVersion plus payload, with no other top-level variables) before applying archive validation; otherwise return the native model unchanged.
Test Octave evalclusters conversion with diagnostics enabled
core/SIFTED.m:179
The Octave-only evalclusters conversion is not exercised by any portable test: the sole full SIFTED workflow sets diagnostics=false, and no other portable runner calls SIFTED. Since diagnostics defaults to true, the advertised default Octave build path (including this object-to-struct conversion before archive save) can regress while the new CI remains green. Add a focused Octave run with diagnostics enabled and verify the converted fields survive save/load.
Avoid quadratic simplex scans in inShape containment checks
utils/+isacompat/AlphaShape.m:96
inShape tests every still-unclassified query against every active simplex. TRACE invokes containment for up to 101 alpha candidates per algorithm, and a 3-D Delaunay complex can contain quadratic-many tetrahedra, so realistic workflows can spend O(algorithms × alpha steps × queries × simplices) time here. Please use a triangulation point-location routine/spatial index (or otherwise reuse indexed simplex data) rather than rescanning all points for every simplex.
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
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.
The pipeline previously depended on MATLAB-only APIs for preprocessing, optimization, geometry, persistence and graphics. This adds a bounded serial Octave 2D/3D build → save/load → explore workflow while retaining the MATLAB backends.
Changes
Validation
Support boundary
KNN is the validated Octave classifier. Bayesian tuning, parallel execution, legacy TRACE, FIG files and web palette export remain unsupported in Octave. 3D PNG requires Qt and a display or virtual display. Classifier archives are runtime-specific; equal seeds do not imply identical MATLAB/Octave optimizer, Sobol or geometry results. See docs/octave-compatibility.md for the tested environment and contracts.