Fix all failing CI on main: concurrency smoke, MEX parity, example_dock shading, wiki links#175
Conversation
…tch, wiki links Three independent workflows were red on main; all are addressed here. Tests / Concurrency Smoke (ubuntu-latest, macos-14): install() only compiled MEX inside the needs_build() gate, which probes the committed binary_search_mex. lockfile_mex is the one MEX deliberately NOT committed, so on a clean checkout the gate returned false and build_concurrency_mex() never ran, leaving TestConcurrencyIntegration without lockfile_mex. Add a best-effort ensure-block to install.m: honours FASTSENSE_SKIP_BUILD, no-ops when lockfile_mex already resolves, and is wrapped in try/catch so a missing C compiler degrades to FileLock's pure-MATLAB sidecar. Tests / Octave parity (test_mex_parity) and TestMexParity: the minmax tail-anchor (commit 31d04b7) makes minmax_core emit 2*nb+1 points, but the parity reference oracles still expected exactly 2*nb. Update both the flat test and the class-suite oracle to mirror minmax_core_mex.c / minmax_downsample.m (the latent class-suite copy would have failed on macOS/Windows MATLAB). Example Smoke / example_dock: the same tail-anchor makes the two shaded-region boundaries downsample to different lengths when one boundary is a constant baseline (addFill), so patch() received mismatched XData/YData ("Vectors must be the same length"). Keep each boundary's own downsampled X (xd/xd2) and trim the shared cache to a common length in FastSense.render and updateShadings. Wiki Link Check: 5 Wiki-Browser pages used bare extensionless links ([Event Viewer](Event-Viewer)); lychee resolves relative links as file paths and cannot find them. Append .md to every bare target. The in-app WikiBrowser strips a trailing .md, so navigation is unaffected, and the GitHub-hosted wiki renders the links correctly. Verified in MATLAB R2025b: test_mex_parity PASS, TestMexParity 9/9, example_dock renders all 5 tabs, install() runs clean, and mh_style/mh_lint/mh_metric --ci are clean on the changed files. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
…rage) Add two regression tests to TestAddShaded exercising all three code paths the shading fix changed: - testShadedPatchEqualLengthCacheBranch: n>20000 hits render()'s cache branch, then a zoom exercises updateShadings(). - testShadedPatchEqualLengthMidBranch: 5000<n<=20000 hits render()'s mid-size branch. A monotonic upper curve + constant fill baseline deterministically makes the two boundaries downsample to different lengths (minmax tail-anchor), so each test would have thrown "Vectors must be the same length." on the pre-fix code and now asserts equal-length patch XData/YData. Covers the 15 lines flagged by codecov/patch. Lives in TestAddShaded (A-D shard) to stay clear of the flaky TestTagPerfRegression perf gate in the Q-Z shard. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Patch coverage addressed in b4f953f. Added two regression tests to ℹ️ The |
What
All three workflows that were red on
mainare fixed. Diagnosed by a fan-out of agents (one per failing workflow, each adversarially verified), then every fix was re-verified locally in MATLAB R2025b.install()only builds MEX inside theneeds_build()gate, which probes the committedbinary_search_mex.lockfile_mexis the one MEX not committed, so a clean checkout never compiled it andTestConcurrencyIntegrationfailed.install.m: best-effort ensure-block that compileslockfile_mexindependent of the gate (honoursFASTSENSE_SKIP_BUILD, no-ops when present,try/catch→ pure-MATLAB sidecar fallback).TestMexParity31d04b7f) mademinmax_coreemit2*nb+1points; the parity reference oracles still expected2*nb.tests/test_mex_parity.m+tests/suite/TestMexParity.m) to mirror the shipped MEX/fallback. The class-suite copy was a latent failure on macOS/Windows MATLAB.example_dockaddFill), sopatch()got mismatchedXData/YData("Vectors must be the same length").libs/FastSense/FastSense.m: each boundary keeps its own downsampled X (xd/xd2); shared cache trimmed to a common length inrenderandupdateShadings.[Event Viewer](Event-Viewer); lychee resolves relative links as file paths and 404s (16 errors)..mdto every bare target. In-appWikiBrowserstrips trailing.md, so navigation is unaffected.Note: the Tests/parity and Example-Smoke failures are two consumers of the same regression (
31d04b7f's tail-anchor).Verification (MATLAB R2025b, this branch)
test_mex_parity→ PASS (incl.minmax_core_mex parity, the exact assertion that was red)TestMexParity→ 9/9 pass (incl.testMinmaxCoreParity)example_dock→ renders all 5 tabs / ~21M pts, incl. the formerly-failing "Power Systems" tileinstall()→ runs clean; guard confirmed reachable on a clean checkoutmh_style/mh_lint/mh_metric --ci→ clean on all changed files;checkcodeadds no new issues.mdfiles;#refresh-pathsanchor left intact🤖 Generated with Claude Code