Skip to content

Commit ecb46d7

Browse files
committed
Добавлены шаблоны для трекинга этапов IQ-фильтров, включая контракты, реализацию FIR/IIR и тестовую матрицу
1 parent b716d85 commit ecb46d7

9 files changed

Lines changed: 286 additions & 0 deletions

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
blank_issues_enabled: true
2+
contact_links:
3+
- name: IQ Filters Tracking Doc
4+
url: https://github.com/Infarh/MathCore.DSP/blob/dev/docs/IQFiltersTracking.md
5+
about: Общий план этапов и критериев приемки
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
---
2+
name: "IQ Filters / Epic tracking"
3+
about: "Эпик-трекер всей программы работ по IQ-фильтрам"
4+
title: "[IQ-Filters][Epic] Комплексные и целочисленные IQ-фильтры"
5+
labels: ["tracking", "iq-filters", "epic"]
6+
assignees: []
7+
---
8+
9+
## Эпик
10+
Единая программа внедрения IQ-фильтров для complex, HackRF int8 и USRP B210 int16 LE.
11+
12+
## Источник плана
13+
- docs/IQFiltersTracking.md
14+
15+
## Этапы
16+
- [ ] Stage-0: Контракты и базовые адаптеры
17+
- [ ] Stage-1: Complex FIR
18+
- [ ] Stage-2: Complex IIR + SOS
19+
- [ ] Stage-3: HackRF int8 FIR/IIR parity
20+
- [ ] Stage-4: USRP B210 int16 LE FIR/IIR
21+
- [ ] Stage-5: Коэффициенты и билдеры IQ-линейки
22+
- [ ] Stage-6: Полная тестовая матрица и регрессия
23+
24+
## Acceptance (Epic)
25+
- [ ] Доступны рабочие фильтры для complex/int8/int16
26+
- [ ] Единый подход к расчёту коэффициентов сохранён
27+
- [ ] CI содержит стабильную регрессию по IQ-линейке
28+
- [ ] Есть пользовательская документация и примеры
29+
30+
## Технические риски
31+
- Расхождение между complex/int ветками
32+
- Устойчивость IIR высоких порядков
33+
- Форматные ошибки int16 LE
34+
35+
## Митигации
36+
- Golden vectors + cross-check pipeline
37+
- SOS как обязательный путь для high-order
38+
- Отдельные тесты endian/format
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
---
2+
name: "IQ Filters / Этап 0 - Контракты и адаптеры"
3+
about: "Базовые контракты, форматы и адаптеры для IQ-фильтров"
4+
title: "[IQ-Filters][Stage-0] Контракты и базовые адаптеры"
5+
labels: ["enhancement", "iq-filters", "stage-0"]
6+
assignees: []
7+
---
8+
9+
## Цель
10+
Подготовить базу для единого API фильтрации complex/int8/int16 IQ-потоков.
11+
12+
## Объём работ
13+
- [ ] Ввести контракты IQ-фильтров (single sample, block, stream)
14+
- [ ] Зафиксировать форматы HackRF (int8 I/Q interleaved) и USRP B210 (int16 LE I/Q interleaved)
15+
- [ ] Реализовать базовые адаптеры/конвертеры interleaved <-> sample/span
16+
- [ ] Описать политику округления/клиппинга для целочисленных веток
17+
18+
## Критерии приёмки
19+
- [ ] Есть единый контракт API без ломки существующего публичного API
20+
- [ ] Есть тесты на корректность преобразования форматов
21+
- [ ] Есть тесты на граничные условия буферов (odd-length, частичное чтение)
22+
- [ ] Документация обновлена
23+
24+
## Готовность к использованию
25+
После этапа можно строить единый pipeline входа/выхода для дальнейших этапов.
26+
27+
## Зависимости
28+
- Трекер: docs/IQFiltersTracking.md
29+
30+
## Checklist DoD
31+
- [ ] Код
32+
- [ ] Unit tests
33+
- [ ] Документация
34+
- [ ] Нет регрессий
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
---
2+
name: "IQ Filters / Этап 1 - Complex FIR"
3+
about: "Реализация комплексного FIR для IQ-потока"
4+
title: "[IQ-Filters][Stage-1] Complex FIR"
5+
labels: ["enhancement", "iq-filters", "stage-1"]
6+
assignees: []
7+
---
8+
9+
## Цель
10+
Реализовать рабочий комплексный FIR для IQ с immediate value.
11+
12+
## Объём работ
13+
- [ ] Реализовать `ComplexFIR` (состояние, Reset, Process)
14+
- [ ] Добавить block API (`ReadOnlySpan<Complex> -> Span<Complex>`)
15+
- [ ] Добавить/проверить `FrequencyResponse`
16+
- [ ] Добавить потоковый API при необходимости
17+
18+
## Критерии приёмки
19+
- [ ] Результаты совпадают с референсом (double по I/Q отдельно) в пределах eps
20+
- [ ] Нет лишних аллокаций в hot-path Span API
21+
- [ ] Тесты на состояние/сброс/границы входа проходят стабильно
22+
23+
## Готовность к использованию
24+
После этапа можно сразу фильтровать complex IQ FIR в прод-пайплайне.
25+
26+
## Зависимости
27+
- Stage-0
28+
- Трекер: docs/IQFiltersTracking.md
29+
30+
## Checklist DoD
31+
- [ ] Код
32+
- [ ] Unit tests
33+
- [ ] Документация с примером
34+
- [ ] Нет регрессий
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
name: "IQ Filters / Этап 2 - Complex IIR + SOS"
3+
about: "Реализация комплексного IIR с поддержкой SOS"
4+
title: "[IQ-Filters][Stage-2] Complex IIR + SOS"
5+
labels: ["enhancement", "iq-filters", "stage-2"]
6+
assignees: []
7+
---
8+
9+
## Цель
10+
Реализовать complex IIR для IQ-потока, включая устойчивый путь через SOS.
11+
12+
## Объём работ
13+
- [ ] Реализовать `ComplexIIR` (direct form)
14+
- [ ] Реализовать SOS-путь для высоких порядков
15+
- [ ] Повторить методику валидации секций
16+
- [ ] Обеспечить parity с существующим `IIR`
17+
18+
## Критерии приёмки
19+
- [ ] Стабильность на длинных прогонах подтверждена тестами
20+
- [ ] Сходимость с референсом (double I/Q) в пределах заданного допуска
21+
- [ ] Тесты на частотный отклик и корректность состояния проходят
22+
23+
## Готовность к использованию
24+
После этапа доступны production-ready complex IIR фильтры.
25+
26+
## Зависимости
27+
- Stage-0
28+
- Stage-1 (желательно)
29+
- Трекер: docs/IQFiltersTracking.md
30+
31+
## Checklist DoD
32+
- [ ] Код
33+
- [ ] Unit tests + long-run tests
34+
- [ ] Документация
35+
- [ ] Нет регрессий
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
---
2+
name: "IQ Filters / Этап 3 - HackRF int8 FIR/IIR"
3+
about: "Доведение int8 ветки (HackRF One) до полного паритета"
4+
title: "[IQ-Filters][Stage-3] HackRF int8 FIR/IIR parity"
5+
labels: ["enhancement", "iq-filters", "stage-3", "hackrf"]
6+
assignees: []
7+
---
8+
9+
## Цель
10+
Довести целочисленную int8 ветку HackRF до полного паритета FIR/IIR + stream API.
11+
12+
## Объём работ
13+
- [ ] Довести FIR до паритета с уже реализованным IIR
14+
- [ ] Унифицировать поведение ошибок и векторов состояния
15+
- [ ] Проверить in-place/out-of-place, sync/async stream
16+
- [ ] Зафиксировать квантование, округление и saturating clamp
17+
18+
## Критерии приёмки
19+
- [ ] Полный набор unit-тестов для int8 покрывает FIR/IIR
20+
- [ ] Совпадение с reференсом (complex/double + квантование)
21+
- [ ] Тесты на формат interleaved и odd-length проходят
22+
23+
## Готовность к использованию
24+
После этапа HackRF RX/TX можно использовать целиком в raw-представлении.
25+
26+
## Зависимости
27+
- Stage-0
28+
- Трекер: docs/IQFiltersTracking.md
29+
30+
## Checklist DoD
31+
- [ ] Код
32+
- [ ] Unit tests
33+
- [ ] Документация
34+
- [ ] Нет регрессий
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
name: "IQ Filters / Этап 4 - USRP B210 int16 LE"
3+
about: "Реализация FIR/IIR для interleaved int16 LE IQ потока"
4+
title: "[IQ-Filters][Stage-4] USRP B210 int16 LE FIR/IIR"
5+
labels: ["enhancement", "iq-filters", "stage-4", "usrp-b210"]
6+
assignees: []
7+
---
8+
9+
## Цель
10+
Реализовать полноценную int16 LE ветку для USRP B210 (FIR/IIR + stream API).
11+
12+
## Объём работ
13+
- [ ] Добавить обработку interleaved int16 LE без лишних копирований
14+
- [ ] Реализовать FIR/IIR block API (in-place/out-of-place)
15+
- [ ] Добавить stream sync/async методы
16+
- [ ] Проверить endian/sign/range поведение
17+
18+
## Критерии приёмки
19+
- [ ] Паритет API с веткой HackRF int8
20+
- [ ] Совпадение с референсом на эталонных наборах
21+
- [ ] Тесты на endian и граничные значения проходят
22+
23+
## Готовность к использованию
24+
После этапа можно подключать USRP B210 pipeline без адаптеров вне библиотеки.
25+
26+
## Зависимости
27+
- Stage-0
28+
- Stage-2/3 (желательно)
29+
- Трекер: docs/IQFiltersTracking.md
30+
31+
## Checklist DoD
32+
- [ ] Код
33+
- [ ] Unit tests
34+
- [ ] Документация
35+
- [ ] Нет регрессий
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
---
2+
name: "IQ Filters / Этап 5 - Коэффициенты и билдеры"
3+
about: "Паритет методики расчёта коэффициентов и DSL-билдеров для IQ-линейки"
4+
title: "[IQ-Filters][Stage-5] Коэффициенты и билдеры IQ-линейки"
5+
labels: ["enhancement", "iq-filters", "stage-5"]
6+
assignees: []
7+
---
8+
9+
## Цель
10+
Повторить и переиспользовать существующую методику расчёта коэффициентов для всей IQ-линейки.
11+
12+
## Объём работ
13+
- [ ] Переиспользовать расчёт коэффициентов без дублирования формул
14+
- [ ] Добавить фабрики/адаптеры создания complex/int8/int16 фильтров
15+
- [ ] Обеспечить согласованность коэффициентов между ветками
16+
- [ ] Актуализировать DSL/Builders и документацию
17+
18+
## Критерии приёмки
19+
- [ ] Коэффициенты совпадают с базовой веткой для всех семейств
20+
- [ ] Есть regression-тесты по коэффициентам
21+
- [ ] Пользователь может создавать IQ-фильтры из единого DSL
22+
23+
## Готовность к использованию
24+
После этапа проектирование и создание фильтров полностью унифицировано.
25+
26+
## Зависимости
27+
- Stages 1-4
28+
- Трекер: docs/IQFiltersTracking.md
29+
30+
## Checklist DoD
31+
- [ ] Код
32+
- [ ] Unit tests
33+
- [ ] Документация
34+
- [ ] Нет регрессий
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
name: "IQ Filters / Этап 6 - Тестовая матрица и регрессия"
3+
about: "Финализация тестовой системы для complex/int8/int16 IQ фильтров"
4+
title: "[IQ-Filters][Stage-6] Полная тестовая матрица и регрессия"
5+
labels: ["enhancement", "iq-filters", "stage-6", "tests"]
6+
assignees: []
7+
---
8+
9+
## Цель
10+
Построить полную, стабильную и расширяемую тестовую матрицу для IQ-линейки.
11+
12+
## Объём работ
13+
- [ ] Unit tests для Process/Reset/State
14+
- [ ] Golden vectors для ключевых сценариев
15+
- [ ] Property-based/инвариантные тесты
16+
- [ ] Long-run/stability тесты
17+
- [ ] Format tests (interleaved, endianness, odd-length, partial read)
18+
- [ ] Cross-check complex vs double(I/Q), int vs quantized reference
19+
20+
## Критерии приёмки
21+
- [ ] Покрытие критичных веток на целевом уровне
22+
- [ ] Отсутствуют flaky тесты
23+
- [ ] Есть профили fast/extended
24+
- [ ] Все этапы 0-5 защищены регрессией
25+
26+
## Готовность к использованию
27+
После этапа IQ-линейка готова к безопасной эволюции и рефакторингу.
28+
29+
## Зависимости
30+
- Stages 0-5
31+
- Трекер: docs/IQFiltersTracking.md
32+
33+
## Checklist DoD
34+
- [ ] Код тестов
35+
- [ ] CI профиль fast/extended
36+
- [ ] Документация по тестовым профилям
37+
- [ ] Нет регрессий

0 commit comments

Comments
 (0)