Skip to content

repair(analysis): fail tests on unowned compatibility warnings - #1232

Draft
seonghobae wants to merge 19 commits into
developfrom
repair/analysis-deprecation-warnings-1231
Draft

seonghobae wants to merge 19 commits into
developfrom
repair/analysis-deprecation-warnings-1231

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 17, 2026

Copy link
Copy Markdown
Collaborator

Advances #1231 on the dedicated analysis-engine warning-policy owner lane.

Exact current identity

  • Protected base: develop@314ddeae7b775a4957594b599358c8255617eb2e.
  • Branch: repair/analysis-deprecation-warnings-1231.
  • Exact head: 39ecb0eef845b2cadea2fd349ce29a37c59b4a73.
  • Protected-base compare: ahead 19 / behind 0; semantic delta remains six analysis-engine/traceability files only.

Every source movement invalidates predecessor checks/reviews. Only the exact current head may satisfy the verification gate.

Problem

Protected develop configured pytest with repository-wide ignore::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 ^audioread deprecation/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 on DeprecationWarning but not FutureWarning, 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 deprecated aifc/sunau stdlib dependencies. librosa 0.11.0 still documents audioread support itself as deprecated and scheduled for removal in 1.0. Python's warnings documentation distinguishes DeprecationWarning and FutureWarning by intended audience while allowing both to be turned into errors by the warnings filter.

Upstream references:

RED → causal repair

  1. RED c9a996912e73c2a5aa0046f8afec5518c892b2e6: reject the repository-wide pytest deprecation ignore.
  2. GREEN 5093dce9425d94b5dc38b54273e635a42d0648aa: use error::DeprecationWarning.
  3. RED 7885f89c59d3e4b2296efc2fee0379bb09af33f7: reject blanket audioread deprecation filters in the three production audio-loader boundaries.
  4. GREEN ff57338040adfd42404c8066f2ac932aa3e94e82, 594ea6de4ebb776e8cd7d41299339299a90d7f1a, 434baa1bd3e27b8a49d8751334a27ffacb51f830: remove those suppressions without changing decode parameters or dependencies.
  5. Quality repair 0364d68200a9822f3df2d722164ab3f1a6d89c07: preserve the existing final newline in pyproject.toml.
  6. TRACEABILITY bfb59fc6d09e6e0032642777b1860f7044af6462.
  7. RED fec1d8e9c4f320dd38a803b81f1310eb1238e563: reject category + ^audioread ignores with no exact message for both DeprecationWarning and FutureWarning.
  8. GREEN e5197fb25bbb2c5f9ae412e24a14d69f3071753f, 072ebf5714489d0f840d02a12e0344d37dfe35f4: remove the remaining blanket audioread FutureWarning filters from Temporal Analysis and Separation.
  9. TRACEABILITY 44ca7530fa4f2d2f81a89bf71afe69421b79fd0b.
  10. RED 10b5d28ced09c64f148e3b98b7d924357bc20cd4: require pytest to fail on unowned FutureWarning and reject a global future-warning ignore.
  11. GREEN 21bbeedcf913d2bbf46ba6ac9a4d5797469ce565: add error::FutureWarning without changing decode behavior, dependencies, or lockfiles.
  12. TRACEABILITY 49845a7a897167be9f789c9ab13ba3eb0e7993ca.
  13. RED fa7adf40294f25325b60cb5abb7cd8f073cb070b: require the three production audio loaders not to discard runtime warnings before the test/CI gate can observe them.
  14. GREEN 505d3e14b4559949b6c9cef97bb5b472ea298ae0: remove Temporal Analysis' remaining librosa/Numba runtime suppression and warning plumbing.
  15. GREEN 3d94c2f5c5d57d91ded1bba211429e2af71b1537: remove Separation's remaining librosa/Numba runtime suppression and inherited warning-filter dependency on Temporal Analysis.
  16. TRACEABILITY 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-baseline runner. macOS arm64 completed successfully, but macOS Intel failed before Python dependency sync or any BandScope build/test step. The failing step was Activate and verify pinned npm runtime: Node 22.22.3 supplied npm 10.9.8, Corepack attempted to acquire the repository-pinned npm 10.9.9, and the registry HTTPS read ended in ETIMEDOUT.

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:

  • full analysis-engine tests with zero unowned DeprecationWarning / FutureWarning failures;
  • normal coverage/docstring/lint/type checks;
  • applicable repository/central CI, build, security, SAST and SBOM gates terminal-success;
  • zero valid unresolved findings; and
  • qualifying independent non-author current-head approval.

Do not self-approve, synthesize statuses, weaken warning policy, create no-op retry commits, force-push, or destructively rebase.

@coderabbitai

coderabbitai Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae seonghobae changed the title repair(analysis): fail tests on unowned deprecations repair(analysis): fail tests on unowned compatibility warnings Sep 17, 2026
@seonghobae seonghobae added bug Something isn't working priority: high High-priority or P1 work labels Sep 19, 2026 — with ChatGPT Codex Connector

Copy link
Copy Markdown
Collaborator Author

Single-writer dependency correction — 2026-09-21

Fresh 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 services/analysis-engine/src/bandscope_analysis/temporal/analyzer.py. That file is also part of active Resource Admission owner #866 and canonical temporal privacy/integrity owner #1055. #1055 in turn now preserves the valid #1211/#1237 temporal diagnostic findings and deliberately keeps source paths/decoder text out of logs.

Therefore #1232 must not become an independent competing TemporalAnalyzer writer from the stale protected-base snapshot. The normal succession is:

  1. fix(audio): establish canonical local-audio resource policy #866 reaches protected develop with authentic CodeQL/coverage/review settlement;
  2. repair(analysis): fail tests on unowned compatibility warnings #1232 ordinary/non-force reconciles onto that protected ancestry, preserving the warning-policy semantic delta without reverting Resource Admission behavior;
  3. fix(privacy): redact temporal analysis logs #1055 then ordinary/non-force reconciles onto the resulting ancestry and preserves repair(analysis): fail tests on unowned compatibility warnings #1232's no-pre-evidence-suppression policy while adopting its own privacy/tempo + valid preserve TemporalAnalyzer log-injection finding for canonical privacy owner #1211/preserve(security): bounded diagnostic findings for canonical #1055 #1237 diagnostic evidence;
  4. each moved head reacquires exact-head tests/coverage/security/review.

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working priority: high High-priority or P1 work

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant