test(integration): protected bands round close-out (ticket 46) #45
No reviewers
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
ykp/gensig!45
Loading…
Reference in a new issue
No description provided.
Delete branch "protected-bands-integration"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Round 9 W4 — closes out the protected-bands round (43–45 shipped as PRs #42/#43/#44). No new features; one defect repair exposed by the battery.
Integration battery —
tests/test_protected_bands_integration.py(new, 10 tests)Full chain: AGWN → post chain (CFR → BandFilter → ProtectedNotch → Windowing) → SigV3.1 write → read-back:
Fe/FrequenceHF/BandeFI) and sample count unchanged by the stageDefect repair (exposed by the battery)
The pipeline never re-checked the records — an L18-overlapping project would generate (the UI gate would normally refuse, but the chain itself had no defense). Now the dispatch refuses like the band-isolation pattern:
validation.protected_band_findingsis public and the ProtectedNotch dispatch raisesValueErrorwith the first finding messages.Headless explorer —
manual_tests/cola_protected_bands.py(new)--sweep-ripple): ripple × tap cap × measured depth — informative: ripple 0.1 dB @ 128 taps reaches −60 dB (larger allowed ripple buys equiripple depth at the same tap count)--helpworks with no display (module import is matplotlib-free)Spec consistency pass —
doc/spec.md§3.4's span rules split precisely (label = band overlap; stage skip = cut-span intersection); §5.3.3 warning wording aligned to the implementation (UserWarning + the remez-refusal fallback); §8.4 file dialogs gain the protected-bands JSON; new §8.5 Protected bands files (the format §4.2.5 referenced but that didn't exist); §9 notes gain the battery/explorer pointers.
Gate
pytest: 1288 passed / 64 skipped (headless tier), coverage 93.52 %ruff+mypy: clean (77 files)Round 9 (protected bands) closes here; the backlog README carries the wave summary + archive (local).