v0.4.0
A correctness release. Several tools returned wrong values or did not work at all, so output changes for anything relying on 0.3.1 behaviour — hence a minor bump rather than a patch.
Full detail in CHANGELOG.md.
Output differs from 0.3.1
distribution_operationcomputesmeanandvarianceanalytically.meanpreviously evaluatedget_random_element()— returning a random draw from the distribution, a different wrong answer on every call — andvariancewas hardcoded tonull.distribution_operationhonours both normal-distribution parameters.muwas ignored andsigmadropped unless exactly one parameter was passed, so[0, 3]silently usedsigma=1and[5, 2]was centred on 0.matrix_operation([])is rejected. It previously reported a determinant of1.0, because Sage reads[]as the 0×0 matrix.geometry_operation("distance", ...)with fewer than two points is rejected. It previously returned{"result": null}.
Upgrading
The base image is now SageMath 10.9, where the sage account is uid/gid 1001 (it was 1000 in 10.5). Deployments pinning the old numeric UID must be updated — /home/sage is mode 0750, so a mismatched UID cannot reach the sage executable and the container exits immediately. docker-compose.yml no longer hardcodes a UID; the Helm chart uses 1001.
Fixed
solve_oderejected the spelling its own documentation advertised (#12). Bothdiff(y(x), x)anddiff(y, x)now work.- All three plot tools were non-functional — they passed a
BytesIOto Sage'ssave(), which requires a path. - Results over 64 KiB failed with
LimitOverrunError; the worker stream limit is now 8 MiB. geometry_operation("distance", ...)computedsqrt(-3)for a 3-4-5 triangle —^is XOR in Python, not exponentiation.boolean_algebra_operationrejected its documentedx*y + x*z + y*z.coding_theory_operationdocumented a Reed-Solomon constructor that does not exist in current Sage.graph_operationrejected every parameterised constructor such asCompleteGraph(4).- Symbolic bounds now work in
integrate_expression,limit_expression,series_expansionandsymbolic_sum. - Newlines in expressions no longer raise a syntax error.
Testing
Three new suites run every tool against a real Sage runtime: its own documented examples, a syntax matrix over the input spellings it must accept, and static checks over the generated code. One of those checks requires that every documented example is exercised by a test, which is what makes the #12 class of bug structurally impossible.
Integration tests also now actually execute — the Makefile targeted a different container name than CI created, and the failure was masked by a tee pipe, so every previous green integration result was meaningless.