Repository navigation
Adopt research-repo-tools v0.2.2 and retire local performance scripts #296
Description
Summary
Complete step #3 of the tooling cleanup before la-stack v0.5.1: adopt the published research-repo-tools==0.2.2 package, replace the remaining performance scripts with installed commands and declarative configuration, and retire the root scripts/ directory.
Depends on the published declarative interfaces from acgetchell/research-repo-tools#115 and the v0.2.2 release in acgetchell/research-repo-tools#119. v0.2.2 adds the missing new-measurement release floor from acgetchell/research-repo-tools#118. Package publication and successful downstream adoption are separate completion boundaries.
Related: #295 completed step #1 by retiring historical benchmark execution compatibility. #276 and #285 established the earlier shared-tooling adoption.
Approved migration decisions
The maintainer approved adopting v0.2.2 and freezing pre-declaration evidence instead of adding a historical eligibility exception. The concrete v0.2.1 gap was its inability to express the v0.5.0 floor for both new-measurement labels; #118 supplies that contract. The existing v0.5.0/v0.4.6 complete run lacks acquisition declarations and will be preserved byte-for-byte, without backfilling provenance or weakening the shared publication gate. This supersedes the original replay requirement. Delete the local checks only after the published replacement is validated.
Starting state
pyproject.tomlpinsresearch-repo-tools==0.2.0in a dependency-only environment.scripts/archive_performance.pyandscripts/performance_runs.pyare the only remaining production Python modules. They compose measurement, independent scientific eligibility, saved-sample verification, retention, and report/README publication over shared APIs.tooling/already owns benchmark selections, metric/peer mappings, dimensions, discovery, sampling, native Cargo/Just commands, reports, and plot declarations.justfilestill invokes the local scripts for local/release measurements, reports, plots, README publication, and release sample verification.scripts/tests/contains consumer integration tests for tooling beyond performance. Retiring the production modules does not make all those tests redundant.- Merged refactor: retire historical benchmark execution #295 requires both labels of new measurements to be v0.5.0 or newer. Historical artifacts remain untouched, and qualifying retained complete runs remain usable offline.
Proposed changes
Adopt the published package
- After verification of the upstream v0.2.2 publication, pin
research-repo-tools==0.2.2and updateuv.lockthrough the normal dependency workflow. Verify the installed version, registry source, and unyanked wheel/sdist hashes. - Use the actual released CLI and configuration contracts. Record how each retained local responsibility is expressed by those interfaces before deleting its implementation.
- Keep scientific names, selections, dimensions, peers, sampling, and native correctness gates in this repository. Generic orchestration, validation machinery, rendering, and publication transactions belong upstream.
Replace the remaining script entry points
- Wire the existing Just workflows to installed commands plus static consumer TOML/Just declarations: full and non-exact local measurements, release comparisons, offline reports, README publication, plot/CSV-only generation, and release saved-sample checks.
- Preserve the supported metric, mean/median, linear/log axis, and saved-sample choices. Document deliberate CLI migrations where the common interface replaces an old invocation.
- Declare the source-selection contract explicitly, including tracked changes versus untracked files; document and validate any intentional change from the current tracked-only behavior.
- Preserve the new-measurement release floor, independent required inventories, original baseline-phase nalgebra/faer references, source/harness freshness, saved-sample storage and raw-byte checks, and transactional publication with formatting.
- Delete both production Python modules once their workflows pass through the installed package. Avoid replacement Python wrappers, inline Python in recipes, generated configuration glue, or equivalent orchestration rebuilt in shell. Small native command recipes remain appropriate.
Retire scripts/ and update ownership
- Move useful consumer integration tests to a documented tooling test directory, such as
tooling/tests/. Remove redundant generic tests only after identifying their upstream coverage. - Retain checks for the actual la-stack recipes, configuration, scientific declarations, package identity, release wiring, and publication boundaries.
- Update pytest discovery, import/lint/type-check configuration, Just commands, CI references, and any path-sensitive scan coverage for the new layout.
- Move useful guidance from
scripts/README.mdto the appropriate tooling/developer guide; updateAGENTS.md,CONTRIBUTING.md, the benchmarking and release guides, code organization, and the adoption record. Remove the rootscripts/directory once its contents have been retired or relocated.
Benefits
Reduce local maintenance and duplicated policy plumbing while keeping correctness requirements explicit. Subsequent tooling fixes should be made once in research-repo-tools and adopted through the pinned release.
Acceptance and validation
- The exact published v0.2.2 package is locked and exercised through its installed CLI; no checkout imports or private-package APIs are needed.
- Every former production script entry point has a documented installed-command/configuration replacement, and the root
scripts/directory is removed. - The scientific Rust gates remain active. Consumer checks independently verify required cases, sampling/statistics/units, originating peer phases, and release eligibility.
- Focused integration checks exercise measurement/discovery, saved verification, retention, offline report/plot rendering, and README publication through real recipes. Use small fixtures for workflow mechanics; no historical benchmark reruns are required.
- Incorrect or incomplete evidence, misplaced/mismatched saved samples, stale source/harness state, incomplete scratch data, and formatting failures are rejected without partial publication or fallback to an unintended run.
- Historical reports, plots, CSV/JSON, archives, and immutable complete-run artifacts retain their bytes and links. New declared complete runs still render offline after scratch cleanup. The existing v0.5.0/v0.4.6 comparison remains a frozen readable record with its original hashes and links; its regeneration support is retired.
- Documentation and test/tool paths match the new ownership. Record what was deleted, what remains consumer-owned, and the relevant upstream coverage.
- Relevant focused checks and final
just cipass; native Linux/macOS/Windows CI passes on the adoption commit. Link that evidence in the adoption PR before closing this issue.
Implementation notes
Start after #115's released interfaces are available; do not duplicate its work while it is in progress. If a required correctness contract is still missing, report the concrete upstream gap before deleting the local check.
This issue covers downstream adoption and deletion, not merely a dependency update. Python remains available for the shared tools and focused consumer tests. Keep Rust library behavior, historical benchmark execution retirement, and the existing Python runtime policy outside this cleanup's scope.
Completion evidence
Implemented in #297. Final adoption commit 2e7eec0636cae3cff4c6633558fa84c8a9a3480c passed native Linux/macOS/Windows CI and current-head review. The adoption PR records published-package hashes, local validation, the replacement inventory, and historical-evidence preservation.
Activity
[-]Adopt research-repo-tools v0.2.1 and retire local performance scripts[/-][+]Adopt research-repo-tools v0.2.2 and retire local performance scripts[/+]