Wave 2026-07-10 v2 — аудит слабо-покрытых модулей (routing/gf16/modem/router)
Отчёт: docs/WAVE_REPORT_2026-07-10-v2.md на ветке feat/wave-report-2026-07-10-v2. Draft PR прилагается.
Эта волна НЕ повторяет PR #59 (та чинила build + N1-N13). Она уходит в код-уровень модулей, которые прошлые волны почти не трогали, и находит то, что они пропустили. Все находки — с file:line и воспроизведением.
Честная преамбула
Heatmap (только НОВОЕ)
| # |
Слабое место |
Severity |
Файл:строка |
Fix |
| 1 |
is_feasible = «строго лучше установленной», а не RFC 8966 feasibility distance (нет seqno/retraction/expiry) → маршрут текущего successor'а с худшей/inf метрикой отвергается, застывает навсегда. Воспроизведено. |
P1 |
routing.rs:158-185 |
E1.3 |
| 2 |
Ветка None в is_feasible ставит inf-маршрут (finiteness только в Some). Воспроизведено. |
P2 |
routing.rs:160,163 |
E1.3 |
| 3 |
TTL проверяется ДО декремента (RFC 1812 §5.3.1 требует пост-декремент); переживает split-horizon из PR #59. |
P2 |
router.rs:411-423 |
E2.4 |
| 4 |
Восстановление несущей только 1-го порядка (нет Doppler-rate / tracker) → остаточный хвост фазы растёт на длинном кадре при мобильности. |
P2 |
modem.rs:293-317 |
E2.5 |
| 5 |
Комплексная бабочка FFT округляет однократно (fused) — не бит-точна к 4-множительной RTL-форме, как утверждает её комментарий. Скалярные ops корректны. |
P2 |
gf16.rs:287-300 |
E4.2 |
| 6 |
bit_reverse сдвиг на 32 при n=1 → panic/UB. |
P2-low |
gf16.rs:304-313 |
E4.2 |
Что дальше (наибольший рычаг)
Влить PR #60 ПЕРВЫМ: на несобирающемся дереве нельзя честно влить/измерить ничего; drift-guard закрывает корень (запрет писать gen/rust старым t27c). Затем — владелец спринту идентичности (E1.1/E1.2, PR #63/#65): неаутентифицированное рукопожатие (N3) — единственная P0-дыра безопасности. Fix feasibility (E1.3) едет в тот же спринт.
Полный текст (наука→прескрипшн, 4 спринта с критериями приёмки, 3 линии кооперации, граница) — в отчёте.
Anchor: phi^2 + phi^-2 = 3
Wave 2026-07-10 v2 — аудит слабо-покрытых модулей (routing/gf16/modem/router)
Отчёт:
docs/WAVE_REPORT_2026-07-10-v2.mdна веткеfeat/wave-report-2026-07-10-v2. Draft PR прилагается.Эта волна НЕ повторяет PR #59 (та чинила build + N1-N13). Она уходит в код-уровень модулей, которые прошлые волны почти не трогали, и находит то, что они пропустили. Все находки — с file:line и воспроизведением.
Честная преамбула
mainНЕ собирается из чистого клона (воспроизведено:build.rs:29, E0308/E0599, 4 ошибки). Починка — в draft PR build(pipeline): pinned-t27c gen/rust + physical drift-guard (запрет писать в репо неправильно) #60, не влита. Отчёт нигде не подразумевает зелёный main..t27, 101#[test](командами). PS-crypto hw на ARM Cortex-A9; PL Zynq-7020 не прошита; кремний — только AX7203; все PHY-sim.Heatmap (только НОВОЕ)
is_feasible= «строго лучше установленной», а не RFC 8966 feasibility distance (нет seqno/retraction/expiry) → маршрут текущего successor'а с худшей/inf метрикой отвергается, застывает навсегда. Воспроизведено.routing.rs:158-185Noneвis_feasibleставит inf-маршрут (finiteness только вSome). Воспроизведено.routing.rs:160,163router.rs:411-423modem.rs:293-317gf16.rs:287-300bit_reverseсдвиг на 32 при n=1 → panic/UB.gf16.rs:304-313Что дальше (наибольший рычаг)
Влить PR #60 ПЕРВЫМ: на несобирающемся дереве нельзя честно влить/измерить ничего; drift-guard закрывает корень (запрет писать
gen/rustстарым t27c). Затем — владелец спринту идентичности (E1.1/E1.2, PR #63/#65): неаутентифицированное рукопожатие (N3) — единственная P0-дыра безопасности. Fix feasibility (E1.3) едет в тот же спринт.Полный текст (наука→прескрипшн, 4 спринта с критериями приёмки, 3 линии кооперации, граница) — в отчёте.
Anchor: phi^2 + phi^-2 = 3