Repository navigation
v0.5.0
⚠️ 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 opt-in branch and uncommitted review recipes using the pinned
-
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.
- Add allocation-free borrowed-slice and fixed-vector angle APIs with typed
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.
- Delegate generation, normalization, minor archiving, release notes and
-
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.
- Pin the synthetic Cargo identity independently of the checkout's release
-
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.
- Route setup, managed execution, dependency updates, release metadata,
-
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.
- Delegate Criterion parsing and comparisons, digest verification, archive
-
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 exact zero subtraction, tight square bounds, smallest interval
-
Cover retained report promotion paths
73dd02fVerify 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.
- Replace the unreleased angle_between function with VectorAngle::angle on
-
Adopt shared performance and changelog workflows
279dbdfPin 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.
- Move benchmark commands, measurement inputs, provenance settings, and
-
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.
- Replace six Python helpers and local packaging with research-repo-tools
Dependencies
-
Bump development tools and refresh dependency locks
8a06208- 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
6e5a1f0Bumps the github-actions group with 5 updates in the / directory:
Package From To actions-rust-lang/setup-rust-toolchain 1.17.02.0.0github/codeql-action/upload-sarif 4.37.94.38.2codecov/codecov-action 7.0.07.1.1github/codeql-action/init 4.37.94.38.2github/codeql-action/analyze 4.37.94.38.2Updates
actions-rust-lang/setup-rust-toolchainfrom 1.17.0 to 2.0.0Updates
github/codeql-action/upload-sariffrom 4.37.9 to 4.38.2Updates
codecov/codecov-actionfrom 7.0.0 to 7.1.1Updates
github/codeql-action/initfrom 4.37.9 to 4.38.2Updates
github/codeql-action/analyzefrom 4.37.9 to 4.38.2 -
Bump acgetchell/research-repo-tools/.github/workflows/dependabot-approve.yml #270
1615b1bBumps the github-actions group with 1 update:
acgetchell/research-repo-tools/.github/workflows/dependabot-approve.yml.Updates
acgetchell/research-repo-tools/.github/workflows/dependabot-approve.ymlfrom cbb2ea6dee8866b3f0547bca935aef48fdd71707 to
b972cbfd717319abaa68d9b1373711ad6f163294 -
Bump the github-actions group with 6 updates #280
d1f85bbBumps the github-actions group with 6 updates:
Package From To github/codeql-action/upload-sarif 4.38.24.38.3actions/upload-artifact 7.0.17.0.2actions/download-artifact 8.0.18.0.2github/codeql-action/init 4.38.24.38.3github/codeql-action/analyze 4.38.24.38.3astral-sh/setup-uv 10.0.110.2.0Updates
github/codeql-action/upload-sariffrom 4.38.2 to 4.38.3Updates
actions/upload-artifactfrom 7.0.1 to 7.0.2Updates
actions/download-artifactfrom 8.0.1 to 8.0.2Updates
github/codeql-action/initfrom 4.38.2 to 4.38.3Updates
github/codeql-action/analyzefrom 4.38.2 to 4.38.3Updates
astral-sh/setup-uvfrom 10.0.1 to 10.2.0
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.
- Show CodeQL, zizmor, repository-rule analysis, coverage execution,
-
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.
- Plan the stable-Rust v0.5.0 release sequence and conditional algebraic
-
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.
- Forward preview options to the shared CLI and keep generated archives under
-
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.
- Replace owner-issued CodeRabbit requests with the pinned MCMC
-
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.
- Remove in-source-suppressed results before GitHub code scanning
-
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.
- Declare LF and CRLF benchmark snapshot inputs explicitly instead of
-
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
0b97b4bUse 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).
- Use the direct exterior/dot ratio for sufficiently small positive angles,
-
Preserve explicit same-version local comparisons
25cd362Keep 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
deaecbcRestore 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.
- Keep README asset provenance tied to validated retained runs across
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.
- Align the library, comparison workspace, contributor toolchain, and Clippy
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.
- Reuse singleton interval arithmetic, select only needed sum endpoints,
-
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.
- Recognize upper and lower triangular systems through row permutations