Skip to content

v0.5.0

Choose a tag to compare

@acgetchell acgetchell released this 17 Oct 08:15
· 28 commits to main since this release
Immutable release. Only release title and notes can be modified.
5d8f5b4

⚠️ 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
  • Record algebraic floating-point rejection #281
  • Bump the github-actions group with 6 updates #280
  • Bump acgetchell/research-repo-tools/.github/workflows/dependabot-approve.yml #270
  • Bump the github-actions group across 1 directory with 5 updates #267

Added

  • Adopt shared CodeRabbit review commands c4fa23c

    • 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

    • 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

    • 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

    • 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

    • 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

    • 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

    • 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

    • 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

    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

    • 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

    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

    • 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

    • 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

    • 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

    • 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

Documentation

  • Expose all configured workflow badges 6933c15

    • 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

    • 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
    a275ddf

    • 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

    • 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

    • 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

    • 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

    • 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

    • 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

    • 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

    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

    • 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

    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

    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

    • 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

    • 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

    • 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
    51868ea

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

    • 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

    • 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.