Close the ASL/perf parity family (+25 codes, 69→94)#4
Merged
Conversation
The largest fixture-only family. Same crafted-fixture method as DWI/fmap/ NIfTI: the generic engine, the aslcontext + m0scan associations, the NIfTI header context, and the array/max/count/sorted/intersects expression ops already implement all of these. Confirmed 1:1 vs @bids/validator 2.4.1 on a 17-subject synthetic tree (25 codes, zero rust-only/deno-only divergence) — including the m0scan association, which resolves via the generic arm. - Add crates/bids-core/tests/asl_checks.rs (17 tests / 25 codes): array length vs nifti/aslcontext, M0Type_* trio, *_GREATER + monotonic checks, the VolumeTiming mutual-exclusive cluster, background-suppression, and total-acquired-pairs. - Promote the 25 codes to RUST_CODES. ISSUE_COVERAGE.md: 69 -> 94 implemented, 109 -> 84 missing (status table sums to 202). - CLAUDE.md: note to run codespell before every commit (enforced by the new .github/workflows/codespell.yml from PR #1). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- run.py: count datasets actually compared; print a summary and FAIL (exit 1) when zero ran (a clean checkout with no fetched corpus would previously exit 0 vacuously). Partial default runs print a coverage NOTE. - ISSUE_COVERAGE.md: add the ASL/perf family (25 codes) to the crafted-fixture (Deno-confirmed-once, CI-asserted) evidence bucket. - asl_checks.rs: drop redundant drop(ctx); accurate lifetime comment. - audit_response.md updated; audit_temp.md removed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This was referenced Jun 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The largest parity family yet — 25 ASL/perf
rules.checkscodes, closed via the crafted-fixture method established in the DWI/fmap/NIfTI PR.Summary
Implemented-code coverage 69 → 94 (
tests/parity/ISSUE_COVERAGE.md). Every code was confirmed 1:1 vs@bids/validator2.4.1 on a synthetic tree (zero rust-only / deno-only divergence across all 25), then locked by a CI-gated Rust integration test — no Deno or external data needed at test time.All 25 were fixture-only: the generic
check_rulesengine, theaslcontext+m0scanassociations, the NIfTI header context, and thearray/max/count/sorted/intersectsexpression ops already implemented them. Notably them0scanassociation — which I worried Rust might not resolve — works at parity via the generic association arm.Codes closed
ASLCONTEXT_TSV_NOT_CONSISTENT,{POST_LABELING_DELAY,FLIP_ANGLE,LABELING_DURATION}_*_MATCHING_*,REPETITIONTIMEPREPARATION_NOT_MATCHING_ASLCONTEXT_TSV,REPETITIONTIME_PREPARATION_NOT_CONSISTENT,ECHO_TIME_NOT_CONSISTENTM0Type_SET_INCORRECTLY,_TO_ABSENT,_TO_ABSENT_IN_ASLCONTEXTPOST_LABELING_DELAY_GREATER,LABELING_DURATION_GREATER,BOLUS_CUT_OFF_DELAY_TIME_GREATER,BOLUS_CUT_OFF_DELAY_TIME_NOT_MONOTONICALLY_INCREASING,VOLUME_TIMING_NOT_MONOTONICALLY_INCREASINGVOLUME_TIMING_AND_REPETITION_TIME_MUTUALLY_EXCLUSIVE,REPETITION_TIME_AND_ACQUISITION_DURATION_MUTUALLY_EXCLUSIVE,VOLUME_TIMING_AND_DELAY_TIME_MUTUALLY_EXCLUSIVE,VOLUME_TIMING_MISSING_ACQUISITION_DURATION,DEPRECATED_ACQUISITION_DURATIONBACKGROUND_SUPPRESSION_PULSE_NUMBER_NOT_CONSISTENT,TOTAL_ACQUIRED_VOLUMES_NOT_CONSISTENTTests
crates/bids-core/tests/asl_checks.rs— 17 tests covering all 25 codes (selector-overlapping cases isolated). Uses the sharedtests/common/mod.rsbuilder.Validation
codespell,cargo fmt,clippy -D warnings,cargo test --workspaceall green. Default parity sweep green on all 14 datasets.🤖 Generated with Claude Code