la-stack 0.5.0

Fast, stack-allocated linear algebra for fixed dimensions
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.5.0] - 2026-10-17

### ⚠️ Breaking Changes

- changelog-unreleased now requires TAG DATE and leaves
  release metadata preparation separate. Replace the removed standalone
  archive-changelog, postprocess-changelog and tag-release entry points with
  research-repo-tools changelog commands. Tags must use v-prefixed SemVer;
  tagging requires today's UTC release date matching CITATION.cff.
- contributor recipes use audit, shell-fix, toml-fix,
  and test-unit. Redundant aliases and help-workflows are removed; use
  bare just to discover the canonical commands.
- la-stack now requires Rust 1.99.0 instead of Rust 1.98.1.

### Merged Pull Requests

- Publish reviewed GitHub releases to crates.io [#282]https://github.com/acgetchell/la-stack/pull/282
- Record algebraic floating-point rejection [#281]https://github.com/acgetchell/la-stack/pull/281
- Bump the github-actions group with 6 updates [#280]https://github.com/acgetchell/la-stack/pull/280
- Bump acgetchell/research-repo-tools/.github/workflows/dependabot-approve.yml [#270]https://github.com/acgetchell/la-stack/pull/270
- Bump the github-actions group across 1 directory with 5 updates [#267]https://github.com/acgetchell/la-stack/pull/267

### Added

- Adopt shared CodeRabbit review commands [`c4fa23c`]https://github.com/acgetchell/la-stack/commit/c4fa23c424849a0c3ad2bf2c42e3c3e842ddaacc

  - Add opt-in branch and uncommitted review recipes using the pinned
    research-repo-tools CLI and repository instructions.
  - Verify the default origin/main base against the live remote, preserve
    local-base overrides, and propagate review output and failures.
  - Document external CLI prerequisites, review scopes, and explicit agent
    invocation outside routine validation gates.
  - Advance the uv pin to 0.12.21 and refresh locked glam and python-dotenv
    dependencies.
- Add stable unsigned vector angles [`09020aa`]https://github.com/acgetchell/la-stack/commit/09020aa18a2b233831a8975b343095d2de1670eb

  - Add allocation-free borrowed-slice and fixed-vector angle APIs with typed
    shape, zero-vector, and non-finite operand errors.
  - Preserve extreme scales and tiny separations with power-of-two scaling,
    compensated exterior products, and full-angle atan2 evaluation.
  - Add independent numerical regressions and properties, allocation checks,
    stable benchmark comparisons, and retained measurement provenance.
  - Document rounded semantics and the quadratic-time, constant-space tradeoff.
  - Permit Git mutations in agent guidance when explicitly approved by the user.
  - Validate with full just ci: 955 Rust tests, 502 Python tests, default/exact
    doctests, lint checks, benchmark compilation, and examples.

### Changed

- [**breaking**] Adopt pinned shared changelog commands [`ce72843`]https://github.com/acgetchell/la-stack/commit/ce72843d3c7e5c2ed6d97955ed6ce3707acb784f

  - Delegate generation, normalization, minor archiving, release notes and
    local tag preparation to the published research-repo-tools 0.1.7 CLI.
  - Preserve retained release history and dependency-note links while moving
    completed series to docs/archives/changelog.
  - Keep the historical git-cliff policy as a documented consumer exception
    and validate published changelog links alongside the shared checks.
- Stabilize disposable consumer fixtures [`2372f81`]https://github.com/acgetchell/la-stack/commit/2372f81639838b4f3a767ff021c3ca766aaba63e

  - Pin the synthetic Cargo identity independently of the checkout's release
    version while retaining the real consumer configuration and policy.
  - Disable inherited commit and tag signing only inside disposable repositories
    so fixture operations do not require user signing keys.
- Adopt common template and draft reviews [`1572957`]https://github.com/acgetchell/la-stack/commit/1572957a4ada1f8fba900ac18f9378e9e0366ba0

  - Use the shared 0.1.7 changelog format with a bounded exception for historical deps-dev release-note bodies.
  - Preserve literal Rust code during generation and retain complete release history, dates and links.
  - Enable automatic CodeRabbit draft reviews and align zizmor-action with the existing scanner pin.
- Complete shared maintenance adoption [`8551e70`]https://github.com/acgetchell/la-stack/commit/8551e7046c725eca7e415031f09ad61c1859460a

  - Route setup, managed execution, dependency updates, release metadata,
    and documentation and fixture checks through pinned research-repo-tools.
  - Declare managed Cargo and security tools centrally and reuse shared setup
    in hosted CI while preserving uncached release benchmark jobs.
  - Remove duplicate maintenance helpers and their dedicated tests, retaining
    scientific scripts, benchmark evidence, and consumer policy adapters.
  - Add shared OSV and Gitleaks recipes, upgrade PyJWT with crypto support,
    and narrowly allow a historical compatibility identifier false positive.
  - Document the current shared setup contract and deliberate update policies.
- Adopt shared benchmark primitives [`1c9c66d`]https://github.com/acgetchell/la-stack/commit/1c9c66d75e9c8e46c520372ca35db5435b225600

  - Delegate Criterion parsing and comparisons, digest verification, archive
    extraction, and README section replacement to research-repo-tools.
  - Publish complete report, evidence, plot, and retained-summary output groups
    through shared transactions while preserving historical schemas and hashes.
  - Report invalid timings and publication failures with context, preserving
    existing artifacts when an operation fails.
  - Remove duplicate tooling and Semgrep rules, refresh subprocess policy,
    and update the Ruff and Semgrep pins.
  - Accept the benchmark-only paste maintenance advisory until January 1, 2027,
    while retaining checks for all other advisories.
- Cover numerical edge cases and preserve benchmark evidence [`1858b5e`]https://github.com/acgetchell/la-stack/commit/1858b5ed11d5c6c1c3c0a3779bc3ada0559016bd

  - Cover exact zero subtraction, tight square bounds, smallest interval
    determinants, and certified proof loss after underflow or range exhaustion.
  - Check independently derived scalar benchmark endpoint bits before timing.
  - Isolate each benchmark reproduction run's raw Criterion data and logs,
    resolve relative input paths, and document the export workflow.
  - Refresh development-tool pins and synchronize Cargo and Python locks.
- Cover retained report promotion paths [`73dd02f`]https://github.com/acgetchell/la-stack/commit/73dd02f64773f9727236d7a0b095db3fe6e0f186

  Verify that absent and empty retained-output mappings leave reports
  unchanged, and reject retained summaries that alias the current report
  with the complete path-collision diagnostic before mutation.
- Expose borrowed vector angles through an extension trait [`9b18f05`]https://github.com/acgetchell/la-stack/commit/9b18f05c8ac317edef4df13d94b7e7a1858c3061

  - Replace the unreleased angle_between function with VectorAngle::angle on
    coordinate slices, retaining Vector::angle and root/prelude exports.
  - Require validated Vector inputs at the internal finite-angle boundary.
  - Expand independent rational-reference and typed error-path coverage.
  - Replace the angle benchmark study with fresh measurements and provenance
    for the extension API, and update API documentation and examples.
  - Refresh locked Rust/Python dependencies and the cargo-nextest tool pin.
- Adopt shared performance and changelog workflows [`279dbdf`]https://github.com/acgetchell/la-stack/commit/279dbdfd073bdbf677dbbc37fa56b47a023b1f25

  Pin published research-repo-tools 0.1.8 and replace the copied changelog template with the supported dependency-body policy. Delegate common-harness
  measurement, complete run retention, worktrees and transactional publication while retaining la-stack scientific selection and legacy evidence readers.
- Replace Python adapters with shared tooling [`6decbf8`]https://github.com/acgetchell/la-stack/commit/6decbf8e30c5e151738ea148caa8d10797a3a285

  - Move benchmark commands, measurement inputs, provenance settings, and
    report paths into tooling configuration.
  - Use shared process, Criterion, and Just inspection APIs and remove
    duplicate local adapters and generic tests.
  - Preserve scientific report contracts, historical evidence replay, and
    configurable retained-history selection.
  - Refresh the uv pin and locked tooling dependencies with just update.
- Compare archive symlink targets by filesystem identity [`0d3532d`]https://github.com/acgetchell/la-stack/commit/0d3532d16bc308fd32cc64619bfd0455b448e743

  - Preserve the observed link target across rejected report publication.
  - Cover absolute and relative symlinks without assuming Windows readlink
    returns the same path representation used when creating the link.
- Standardize complete performance reports [`1f33f14`]https://github.com/acgetchell/la-stack/commit/1f33f14631d95d525a36563f2d1813481a241b9a

  - Use shared rendering and configured publication for complete-run reports.
  - Preserve dimension plots, historical report bytes, and immutable evidence.
  - Align report guidance with retained provenance and make the Cargo shell
    fixture use LF on Windows.
- Adopt shared performance tooling and Python 3.15 [`e64ff30`]https://github.com/acgetchell/la-stack/commit/e64ff30fdacfef0a3f5ebee8ffe598c928cb72a5

  - Replace six Python helpers and local packaging with research-repo-tools
    0.1.9 and declarative tooling configuration.
  - Retain only scientific policy and release adapters, with typed catalog
    parsing and source/harness publication checks.
  - Share benchmark discovery, baseline verification, reporting, plotting,
    and release publication while preserving historical artifacts.
  - Retire local console entry points and partial raw-Criterion plotting
    in favor of documented just recipes and complete-run evidence.
  - Target Python 3.15 while isolating Semgrep on locked Python 3.14 for
    local scans, fixtures, and SARIF.
  - Refresh development dependencies and document the migration.

### Dependencies

- Bump development tools and refresh dependency locks [`8a06208`]https://github.com/acgetchell/la-stack/commit/8a06208337a1e5f9d0ad638c45be478ae17e8200

  - Advance Cargo CLI pins and align the uv pin with version 0.12.19.
  - Upgrade actionlint-py, Ruff, Semgrep, and Ty development requirements.
  - Refresh Cargo and Python locked dependencies while retaining the research-repo-tools 0.1.7 pin.
- Bump the github-actions group across 1 directory with 5 updates [#267]https://github.com/acgetchell/la-stack/pull/267
  [`6e5a1f0`]https://github.com/acgetchell/la-stack/commit/6e5a1f02297a683f837081464f9c6be881bdcb8d

  Bumps the github-actions group with 5 updates in the / directory:

  | Package | From | To |
  | --- | --- | --- |
  | [actions-rust-lang/setup-rust-toolchain]https://github.com/actions-rust-lang/setup-rust-toolchain | `1.17.0` | `2.0.0` |
  | [github/codeql-action/upload-sarif]https://github.com/github/codeql-action | `4.37.9` | `4.38.2` |
  | [codecov/codecov-action]https://github.com/codecov/codecov-action | `7.0.0` | `7.1.1` |
  | [github/codeql-action/init]https://github.com/github/codeql-action | `4.37.9` | `4.38.2` |
  | [github/codeql-action/analyze]https://github.com/github/codeql-action | `4.37.9` | `4.38.2` |

  Updates `actions-rust-lang/setup-rust-toolchain` from 1.17.0 to 2.0.0

  - [Release notes]https://github.com/actions-rust-lang/setup-rust-toolchain/releases
  - [Changelog]https://github.com/actions-rust-lang/setup-rust-toolchain/blob/main/CHANGELOG.md
  - [Commits]https://github.com/actions-rust-lang/setup-rust-toolchain/compare/166cdcfd11aee3cb47222f9ddb555ce30ddb9659...ecabd13d1c56bd1345c230e542e9144811ad706f

  Updates `github/codeql-action/upload-sarif` from 4.37.9 to 4.38.2
  - [Release notes]https://github.com/github/codeql-action/releases
  - [Changelog]https://github.com/github/codeql-action/blob/main/CHANGELOG.md
  - [Commits]https://github.com/github/codeql-action/compare/cdf488f595d80d6e07e03d4674febd5ab45fa938...2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2

  Updates `codecov/codecov-action` from 7.0.0 to 7.1.1
  - [Release notes]https://github.com/codecov/codecov-action/releases
  - [Changelog]https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md
  - [Commits]https://github.com/codecov/codecov-action/compare/fb8b3582c8e4def4969c97caa2f19720cb33a72f...303a32d7a59b442fa8d48b6a1cc6825c09c847a5

  Updates `github/codeql-action/init` from 4.37.9 to 4.38.2
  - [Release notes]https://github.com/github/codeql-action/releases
  - [Changelog]https://github.com/github/codeql-action/blob/main/CHANGELOG.md
  - [Commits]https://github.com/github/codeql-action/compare/cdf488f595d80d6e07e03d4674febd5ab45fa938...2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2

  Updates `github/codeql-action/analyze` from 4.37.9 to 4.38.2
  - [Release notes]https://github.com/github/codeql-action/releases
  - [Changelog]https://github.com/github/codeql-action/blob/main/CHANGELOG.md
  - [Commits]https://github.com/github/codeql-action/compare/cdf488f595d80d6e07e03d4674febd5ab45fa938...2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2
- Bump acgetchell/research-repo-tools/.github/workflows/dependabot-approve.yml [#270]https://github.com/acgetchell/la-stack/pull/270
  [`1615b1b`]https://github.com/acgetchell/la-stack/commit/1615b1bcad80a209ced1116e81ffd545e26d85b3

  Bumps the github-actions group with 1 update:
  [acgetchell/research-repo-tools/.github/workflows/dependabot-approve.yml]https://github.com/acgetchell/research-repo-tools.

  Updates `acgetchell/research-repo-tools/.github/workflows/dependabot-approve.yml` from cbb2ea6dee8866b3f0547bca935aef48fdd71707 to
  b972cbfd717319abaa68d9b1373711ad6f163294

  - [Release notes]https://github.com/acgetchell/research-repo-tools/releases
  - [Changelog]https://github.com/acgetchell/research-repo-tools/blob/main/CHANGELOG.md
  - [Commits]https://github.com/acgetchell/research-repo-tools/compare/cbb2ea6dee8866b3f0547bca935aef48fdd71707...b972cbfd717319abaa68d9b1373711ad6f163294
- Bump the github-actions group with 6 updates [#280]https://github.com/acgetchell/la-stack/pull/280
  [`d1f85bb`]https://github.com/acgetchell/la-stack/commit/d1f85bb606735d5213a2fa5bd2692e5685a9adc4

  Bumps the github-actions group with 6 updates:

  | Package | From | To |
  | --- | --- | --- |
  | [github/codeql-action/upload-sarif]https://github.com/github/codeql-action | `4.38.2` | `4.38.3` |
  | [actions/upload-artifact]https://github.com/actions/upload-artifact | `7.0.1` | `7.0.2` |
  | [actions/download-artifact]https://github.com/actions/download-artifact | `8.0.1` | `8.0.2` |
  | [github/codeql-action/init]https://github.com/github/codeql-action | `4.38.2` | `4.38.3` |
  | [github/codeql-action/analyze]https://github.com/github/codeql-action | `4.38.2` | `4.38.3` |
  | [astral-sh/setup-uv]https://github.com/astral-sh/setup-uv | `10.0.1` | `10.2.0` |

  Updates `github/codeql-action/upload-sarif` from 4.38.2 to 4.38.3

  - [Release notes]https://github.com/github/codeql-action/releases
  - [Changelog]https://github.com/github/codeql-action/blob/main/CHANGELOG.md
  - [Commits]https://github.com/github/codeql-action/compare/2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2...24c54180a607b1449ed407dd24f251e4e9147c8d

  Updates `actions/upload-artifact` from 7.0.1 to 7.0.2
  - [Release notes]https://github.com/actions/upload-artifact/releases
  - [Commits]https://github.com/actions/upload-artifact/compare/043fb46d1a93c77aae656e7c1c64a875d1fc6a0a...cf430e030ddbb5b0abf93d22962f4752f3646cd9

  Updates `actions/download-artifact` from 8.0.1 to 8.0.2
  - [Release notes]https://github.com/actions/download-artifact/releases
  - [Commits]https://github.com/actions/download-artifact/compare/3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c...9000827ccba6bdab643e8b6fd33ac0654aef8333

  Updates `github/codeql-action/init` from 4.38.2 to 4.38.3
  - [Release notes]https://github.com/github/codeql-action/releases
  - [Changelog]https://github.com/github/codeql-action/blob/main/CHANGELOG.md
  - [Commits]https://github.com/github/codeql-action/compare/2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2...24c54180a607b1449ed407dd24f251e4e9147c8d

  Updates `github/codeql-action/analyze` from 4.38.2 to 4.38.3
  - [Release notes]https://github.com/github/codeql-action/releases
  - [Changelog]https://github.com/github/codeql-action/blob/main/CHANGELOG.md
  - [Commits]https://github.com/github/codeql-action/compare/2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2...24c54180a607b1449ed407dd24f251e4e9147c8d

  Updates `astral-sh/setup-uv` from 10.0.1 to 10.2.0
  - [Release notes]https://github.com/astral-sh/setup-uv/releases
  - [Commits]https://github.com/astral-sh/setup-uv/compare/20cfd1bf945f4377ade1205e4dbc17946fc9a30d...c18668ad3cf93ea998bef934396af7bb5c839dc7

### Documentation

- Expose all configured workflow badges [`6933c15`]https://github.com/acgetchell/la-stack/commit/6933c15bb2abb1a53b994b6624128ff0b559e1cb

  - Show CodeQL, zizmor, repository-rule analysis, coverage execution,
    benchmark, release-benchmark, and Dependabot approval status in the README.
  - Keep package metadata and workflow status in separate badge groups.
- Align release roadmap and benchmark descriptions [`fb25684`]https://github.com/acgetchell/la-stack/commit/fb25684ff06612977f1bb2ad86241bb5bfe4ee01

  - Plan the stable-Rust v0.5.0 release sequence and conditional algebraic
    floating-point adoption, with compatible follow-up work in v0.5.1.
  - Defer expanded const generics until the required Generic Const Arguments
    capabilities are stable.
  - Clarify that research-repo-tools is a contributor development dependency.
  - Describe dense benchmark controls as row-permuted while preserving
    measured inputs and retained performance evidence.
- Record algebraic floating-point rejection [#281]https://github.com/acgetchell/la-stack/pull/281
  [`a275ddf`]https://github.com/acgetchell/la-stack/commit/a275ddffcd1669eaadc64756ed2bfae60ad879ec

  - Retain strict arithmetic after the norm reduction prototype hid required overflow errors despite local timing gains.
  - Preserve the numerical counterexample, measurements, provenance, and reproducible experimental evidence.
  - Map floating-point, certified, interval, and exact arithmetic contracts to validation evidence and record closure of the remaining prototype work.
  - Update documentation navigation, release planning, and the reviewed README link inventory.

### Fixed

- Preserve consumer command and release contracts [`cb8c471`]https://github.com/acgetchell/la-stack/commit/cb8c471511bf4f7f5f50cdfe3d7a0296e3357f14

  - Forward preview options to the shared CLI and keep generated archives under
    the dedicated changelog formatter and final link check.
  - Accept valid included dependency groups while advancing only direct dev
    pins, leaving the shared tooling dependency under its own upgrade policy.
  - Keep declared release dates valid after a later merge and include canonical
    changelog archives in the release staging guidance.
- Preserve zizmor failures and discard invalid SARIF [`477acf1`]https://github.com/acgetchell/la-stack/commit/477acf1882cbf49782c81f7a4ca732c171d5f9df

  - Preserve the scanner exit status while checking its report before upload.
  - Remove empty or malformed SARIF output so failed scans cannot publish
    an unusable report; retain valid reports containing findings.
- [**breaking**] Adopt shared approvals and generated command help
  [`fec147b`]https://github.com/acgetchell/la-stack/commit/fec147b5d9a385a609ff51720d790378e95fc786

  - Replace owner-issued CodeRabbit requests with the pinned MCMC
    Dependabot approval workflow and document the repository settings.
  - Fail workflow security checks on findings before exporting SARIF.
  - Generate sorted Just help and keep usage, contributor guidance, and
    active documentation navigation with their respective owners.
  - Replace duplicate process and zizmor implementations with the
    published research-repo-tools APIs.
- Honor inline Semgrep suppressions in uploaded SARIF [`c314554`]https://github.com/acgetchell/la-stack/commit/c314554327bf1521473f2535af4f001f0c27fb24

  - Remove in-source-suppressed results before GitHub code scanning
    ingests the report so reviewed inline exceptions stay effective.
  - Preserve unsuppressed findings, their metadata, and the scanner's
    original exit status for the blocking security gate.
- Preserve fixture line endings on Windows [`f748db0`]https://github.com/acgetchell/la-stack/commit/f748db0dbc1683184d5e16ee5bd3c00ad07f87e3

  - Declare LF and CRLF benchmark snapshot inputs explicitly instead of
    inheriting the host's text-write behavior.
  - Check exact worktree bytes and staged contents against the selected
    line ending while preserving tracked-file and index guarantees.
- Require a working Semgrep wheel on Windows [`0e74cc3`]https://github.com/acgetchell/la-stack/commit/0e74cc3d267a3fc48a3c3893911deccc3afddd7c

  - Restore Semgrep 1.178.0, whose Windows wheel includes semgrep-core.exe.
  - Disable Semgrep source builds so missing platform wheels fail during
    installation instead of leaving an unusable scanner in the environment.
- Restore Python checks with ty 0.0.85 [`0b97b4b`]https://github.com/acgetchell/la-stack/commit/0b97b4be8df4f87ab230be4f836b897e5499e9e8

  Use Generator annotations for context managers and explicitly distinguish
  absent optional values in performance tooling. Preserve empty baseline
  names and retained-output mappings without suppressing diagnostics.
- Preserve subnormal vector angles on Windows [`7ee4bde`]https://github.com/acgetchell/la-stack/commit/7ee4bdee0855aa7381ba6ace17f847feb37fa3ce

  - Use the direct exterior/dot ratio for sufficiently small positive angles,
    with a documented arctangent approximation bound, avoiding platform atan2
    underflow observed by the Windows CI regression tests.
  - Test the small-angle transition and normal/subnormal boundary across
    dimensions 2 through 6, 8, and 64 without relaxing existing tiny-angle tests.
  - Verify that exact-conversion error formatting propagates writer failures.
  - Retain the defensive non-finite-result guard without artificial coverage
    tests, exclusions, or coverage-threshold changes.
  - Refresh all 80 benchmark records and retain the original measurements by
    commit for a documented before/after comparison.
  - Validate with just check, just coverage-ci (876 tests), and isolated just ci
    (963 Rust tests, 502 Python tests, doctests, lints, benchmarks, and examples).
- Preserve explicit same-version local comparisons [`25cd362`]https://github.com/acgetchell/la-stack/commit/25cd362ea19e47e711d3e96c4997f64dc894bc8c

  Keep the consumer-only local comparison exception while release promotion still requires distinct labels and sources remain independently identified. Cover
  explicit selection and current-phase gate failure before either timing phase.
- Retain report test collection and release guidance [`deaecbc`]https://github.com/acgetchell/la-stack/commit/deaecbc81ba0acb575f73b4b93a0bdcdb3aba44b

  Restore the peer-context test prefix and describe complete-run README inputs, staged retention files, and the supported changelog dependency-body policy.
- Harden shared performance publication and Windows fixtures [`0ef7b78`]https://github.com/acgetchell/la-stack/commit/0ef7b782b9f8fa4f65efc8a4e51797beab93b301

  - Exclude unsupported norm cases from historical baseline inventories.
  - Preserve prior reports on archive conflicts and reject ambiguous identities.
  - Protect complete-run inputs during README publication and honor configured
    archive locations and equivalent input paths.
  - Keep immutable generated reports outside Markdown formatting and render
    curated provenance with valid list structure.
  - Compare command fixture directories by filesystem identity across Windows
    and POSIX shells, and align the managed rumdl pin to 0.2.79.
- Preserve benchmark publication identity and diagnostics [`86a2cf8`]https://github.com/acgetchell/la-stack/commit/86a2cf82fec9f29a398cb6431f7f0d4aec23882e

  - Keep README asset provenance tied to validated retained runs across
    scratch cleanup while preserving input freshness checks.
  - Reject non-canonical storage paths for release-report benchmarks.
  - Handle Git execution failures through the plotting CLI diagnostic.
  - Derive the minimum supported release diagnostic from the parsed policy.

### Maintenance

- [**breaking**] Require Rust 1.99.0 [`78c289a`]https://github.com/acgetchell/la-stack/commit/78c289a913360422a6665219f6d5a3fcbebde0a2

  - Align the library, comparison workspace, contributor toolchain, and Clippy
    baseline with Rust 1.99.0 and LLVM 23.
  - Resolve new lint diagnostics without changing strict floating-point,
    exact-arithmetic, interval, or certified-error contracts.
  - Record paired compiler measurements, code-generation findings, and retained
    evidence as the strict-f64 baseline for future optimization work.
  - Update uv, Semgrep, dprint, and locked Rust/Python dependencies.
- Publish reviewed GitHub releases to crates.io [#282]https://github.com/acgetchell/la-stack/pull/282
  [`51868ea`]https://github.com/acgetchell/la-stack/commit/51868ea4725c1a4790bba4c59341d2113b18b2bb

#### ci: publish reviewed GitHub releases to crates.io

- Gate root-crate publication on immutable release identity, exact-commit
  native checks, release notes, benchmark evidence, and deployment approval.
- Use short-lived OIDC credentials, serialize uploads, and verify registry
  visibility without blindly retrying a potentially successful upload.
- Leave benchmark-equipped release drafts for maintainer review and document
  the publishing setup, release sequence, and recovery procedure.
- Keep publishing action updates under manual review so their pins stay
  aligned with the selected-actions policy.

### Performance

- Reduce interval and certified reduction overhead [`dd909a7`]https://github.com/acgetchell/la-stack/commit/dd909a7ee9e8c7471211c88a2139c98895486305

  - Reuse singleton interval arithmetic, select only needed sum endpoints,
    and size determinant workspaces to the compile-time dimension.
  - Use exact FMA residuals above the proved underflow threshold while
    preserving integer product comparison for smaller products.
  - Compact scalar certificates and reduce magnitude-accumulation overhead
    while preserving ordered estimates, finite endpoints, and signed zero.
  - Certify single normal unit products with zero error, including MAX.
  - Retain reproducible upstream and downstream performance evidence,
    adoption patches, rejected candidates, and measured tradeoffs.
- Accelerate triangular rational solves [`5921577`]https://github.com/acgetchell/la-stack/commit/5921577b94410c24a7565d530755c284cb2f6f89

  - Recognize upper and lower triangular systems through row permutations
    and solve by exact substitution with one reduction per component.
  - Preserve the general Bareiss path, canonical rational inputs, and typed
    singularity diagnostics without changing the public API.
  - Add permanent structured benchmarks and retain Rust 1.99 measurements:
    11.15x faster prepared solves and 4.26x faster full adapters at D=8
    on the reproduced triangular family.
  - Refresh the staged cc, syn, uv, Ruff, and Ty dependency/tooling pins.
  - Validation: just ci passes, including 1,002 Rust tests, 371 Python
    tests, doctests, examples, and benchmark compilation.

## Archives

Older releases are archived by minor series:

- [0.4.x]docs/archives/changelog/0.4.md
- [0.3.x]docs/archives/changelog/0.3.md
- [0.2.x]docs/archives/changelog/0.2.md
- [0.1.x]docs/archives/changelog/0.1.md

[0.5.0]: https://github.com/acgetchell/la-stack/compare/v0.4.6...v0.5.0