Skip to content

fix(scout): restore discrepancy detection and confirmed repairs - #197

Merged
djgormley merged 1 commit into
CHIMEFRB:mainfrom
djgormley:djg/fix-scout-healing
Sep 29, 2026
Merged

djgormley merged 1 commit into
CHIMEFRB:mainfrom
djgormley:djg/fix-scout-healing

Conversation

@djgormley

@djgormley djgormley commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

datatrail scout could crash when no scopes were given, miss Minoc discrepancies, and send site checksums to a misspelled endpoint. Site checksum responses also use absolute filenames, but the repair endpoint expects names relative to the dataset. Passing them straight through could report a successful repair without creating any replicas.

Scout now works from the returned scopes and each scope's own site set, adds the Minoc count from its own query when it picks discrepancies, and shows every storage site that's reported. Checksums come from the correct endpoint, and remote filenames are normalized to the names the backend expects, with strict checks on the root and dataset boundaries.

Each repair still needs its own confirmation. An invalid report, a failed query, or a malformed checksum payload blocks the affected repair and gives a nonzero exit status. Independent confirmed repairs can still go ahead after a failure.

I added 45 regression cases. They cover Minoc recovery, omitted scopes, different site sets, CHIME/baseband-buffer comparisons, realistic absolute checksum paths, cancellation, and HTTP/transport/payload failures. The whole non-CADC suite passes on Python 3.10 and 3.14 (343 tests on each), and all pre-commit hooks pass. The nine tests that need CADC credentials weren't run, and no live archive repairs were done.

Fixes #85.
Fixes #86.
Fixes #104.

@djgormley
djgormley merged commit 54dfbf4 into CHIMEFRB:main Sep 29, 2026
9 checks passed
@djgormley
djgormley deleted the djg/fix-scout-healing branch September 29, 2026 02:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant