repair(analysis): fail tests on unowned compatibility warnings - #1232
seonghobae wants to merge 19 commits into
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Single-writer dependency correction — 2026-09-21Fresh owner comparison found an ordering hazard that is not a warning-policy source defect but must be explicit before merge. This PR legitimately owns the repository/analysis-engine warning-visibility policy, but its six-file delta includes Therefore #1232 must not become an independent competing TemporalAnalyzer writer from the stale protected-base snapshot. The normal succession is:
Do not solve the overlap by copying #866/#1055 source here, force-pushing/rebasing, restoring blanket warning suppressions, or weakening either owner's tests. If #1232 becomes mergeable before #866 is protected, that is not sufficient merge authority because its temporal blob would still be based on the older owner generation. No source movement is made by this comment; it records the required owner order so the warning-policy work is preserved rather than discarded. |
Advances #1231 on the dedicated analysis-engine warning-policy owner lane.
Exact current identity
develop@314ddeae7b775a4957594b599358c8255617eb2e.repair/analysis-deprecation-warnings-1231.39ecb0eef845b2cadea2fd349ce29a37c59b4a73.Every source movement invalidates predecessor checks/reviews. Only the exact current head may satisfy the verification gate.
Problem
Protected
developconfigured pytest with repository-wideignore::DeprecationWarning. That made deprecated APIs invisible to the normal Python test gate. The same tree also installed runtime warning suppressions around Temporal Analysis, Transcription, and Separation.The first repair removed blanket
^audioreaddeprecation/future-warning filters. Two narrower librosa/Numba ignores still remained in Temporal Analysis and Separation, however. Keeping them before an exact-head warning inventory is circular: the test gate cannot report a warning that production code discards first. Pytest also failed closed onDeprecationWarningbut notFutureWarning, leaving end-user-facing future compatibility warnings as log-only output.The lock resolves
audioread==3.1.0; its upstream 3.1.0 history records Python 3.12/3.13 support and replacement of the deprecatedaifc/sunaustdlib dependencies. librosa 0.11.0 still documents audioread support itself as deprecated and scheduled for removal in 1.0. Python's warnings documentation distinguishesDeprecationWarningandFutureWarningby intended audience while allowing both to be turned into errors by the warnings filter.Upstream references:
RED → causal repair
c9a996912e73c2a5aa0046f8afec5518c892b2e6: reject the repository-wide pytest deprecation ignore.5093dce9425d94b5dc38b54273e635a42d0648aa: useerror::DeprecationWarning.7885f89c59d3e4b2296efc2fee0379bb09af33f7: reject blanket audioread deprecation filters in the three production audio-loader boundaries.ff57338040adfd42404c8066f2ac932aa3e94e82,594ea6de4ebb776e8cd7d41299339299a90d7f1a,434baa1bd3e27b8a49d8751334a27ffacb51f830: remove those suppressions without changing decode parameters or dependencies.0364d68200a9822f3df2d722164ab3f1a6d89c07: preserve the existing final newline inpyproject.toml.bfb59fc6d09e6e0032642777b1860f7044af6462.fec1d8e9c4f320dd38a803b81f1310eb1238e563: reject category +^audioreadignores with no exact message for bothDeprecationWarningandFutureWarning.e5197fb25bbb2c5f9ae412e24a14d69f3071753f,072ebf5714489d0f840d02a12e0344d37dfe35f4: remove the remaining blanket audioreadFutureWarningfilters from Temporal Analysis and Separation.44ca7530fa4f2d2f81a89bf71afe69421b79fd0b.10b5d28ced09c64f148e3b98b7d924357bc20cd4: require pytest to fail on unownedFutureWarningand reject a global future-warning ignore.21bbeedcf913d2bbf46ba6ac9a4d5797469ce565: adderror::FutureWarningwithout changing decode behavior, dependencies, or lockfiles.49845a7a897167be9f789c9ab13ba3eb0e7993ca.fa7adf40294f25325b60cb5abb7cd8f073cb070b: require the three production audio loaders not to discard runtime warnings before the test/CI gate can observe them.505d3e14b4559949b6c9cef97bb5b472ea298ae0: remove Temporal Analysis' remaining librosa/Numba runtime suppression and warning plumbing.3d94c2f5c5d57d91ded1bba211429e2af71b1537: remove Separation's remaining librosa/Numba runtime suppression and inherited warning-filter dependency on Temporal Analysis.39ecb0eef845b2cadea2fd349ce29a37c59b4a73: record the no-pre-evidence-suppression boundary and current exact warning gate.The current production diff leaves decode sample rates, mono conversion, duration/resource limits, dependencies, lockfiles, and MIR behavior unchanged. The three scoped audio loaders no longer call
warnings.filterwarnings("ignore", ...).Exact-head hosted RCA
The current head did reach a real
build-baselinerunner. macOS arm64 completed successfully, but macOS Intel failed before Python dependency sync or any BandScope build/test step. The failing step wasActivate and verify pinned npm runtime: Node22.22.3supplied npm10.9.8, Corepack attempted to acquire the repository-pinned npm10.9.9, and the registry HTTPS read ended inETIMEDOUT.This is not evidence that the warning-policy source is invalid, but it is also not a reason to rerun blindly. npm runtime provenance belongs to canonical Node/npm owner #896. That owner now carries the RED→repair path for bounded exact-runtime acquisition and remains Draft pending fresh exact-head verification. #1232 does not duplicate those workflow/dependency changes.
Until #896's repair is verified and reaches the applicable protected path, this PR cannot claim a terminal hosted build gate. Predecessor or sibling-owner success does not transfer.
Remaining warning audit boundary
This PR does not yet claim the full suite is warning-clean. Fresh exact-head hosted CI must reveal warnings previously hidden by the legacy filters. A concrete warning failure is a valid repair finding, not runner noise and not permission to restore a blanket suppression.
If exact-head execution exposes an upstream-only warning that cannot yet be repaired, a temporary exception requires the observed exact category/message/module, upstream cause, regression coverage, and concrete removal condition before any suppression is reintroduced.
Ownership / scope
This PR owns analysis-engine warning visibility only. It does not modify MIR scientific acceptance (#1228/#1225), Resource Admission #866, Project Persistence, UI, release/signing, dependencies, lockfiles, npm runtime acquisition, or protected gate thresholds. npm runtime acquisition repair stays on #896.
Merge gate
Keep Draft until one unchanged exact head has:
DeprecationWarning/FutureWarningfailures;Do not self-approve, synthesize statuses, weaken warning policy, create no-op retry commits, force-push, or destructively rebase.