Lab037 — полный транспорт с ошибками канала и повторением команд

Состояние Git до реализации
- Ветка: main
- HEAD: 3e0ef5666eed6833818a731383220b2e15926889
- Рабочее дерево: чистое.
- fetch, pull и push не выполнялись.

Параметры модели
- Длительность: 120 с; кадров: 360; частота: 3 кадр/с.
- Видео: payload 512 байт, FEC 12+3, блоки выровнены по кадрам.
- Команды: 20/с; телеметрия: 10/с; аварийные события: 30, 60, 90 с.
- Канал: Bad fraction=2.00%, Bad mean=(10.0, 50.0, 200.0, 1000.0), rates=(300.0, 260.0, 230.0), repeats=100.
- Master seed: 227857; обычный повтор режима 3: 22.5 мс.
- Проверено CRC-пакетов: 9953; FEC-блоков: 714; профиль: 63 кадров.
- Копия команды сохраняет тот же stream_id, sequence_number и байты; задержка хранится только в метаданных планировщика.

Таблица 36 сочетаний
rate | Bad ms | mode | load kbit/s | util % | queue mean/max | command miss % | command gap ms | emergency <=50 ms % | video % | image P95 ms
300 | 10 | none | 261.326 | 87.11 | 8.47/21 | 2.379 | 212.453 | 97.33 | 94.03 | 297.120
300 | 10 | emergency_only | 261.351 | 87.12 | 8.47/21 | 2.377 | 212.453 | 99.67 | 94.03 | 297.120
300 | 10 | emergency_and_control | 271.591 | 90.53 | 8.88/21 | 0.308 | 156.933 | 100.00 | 94.39 | 309.253
300 | 50 | none | 261.326 | 87.11 | 8.47/21 | 2.080 | 463.840 | 97.67 | 94.05 | 295.173
300 | 50 | emergency_only | 261.351 | 87.12 | 8.47/21 | 2.078 | 463.840 | 98.67 | 94.05 | 295.173
300 | 50 | emergency_and_control | 271.591 | 90.53 | 8.88/21 | 1.300 | 437.494 | 98.67 | 94.09 | 307.493
300 | 200 | none | 261.326 | 87.11 | 8.47/21 | 1.961 | 1314.560 | 98.00 | 96.28 | 295.173
300 | 200 | emergency_only | 261.351 | 87.12 | 8.47/21 | 1.961 | 1314.560 | 98.00 | 96.28 | 295.173
300 | 200 | emergency_and_control | 271.591 | 90.53 | 8.88/21 | 1.740 | 1263.733 | 98.00 | 96.24 | 307.493
300 | 1000 | none | 261.326 | 87.11 | 8.47/21 | 1.833 | 8264.347 | 97.67 | 97.79 | 295.173
300 | 1000 | emergency_only | 261.351 | 87.12 | 8.47/21 | 1.833 | 8264.347 | 98.00 | 97.79 | 295.173
300 | 1000 | emergency_and_control | 271.591 | 90.53 | 8.88/21 | 1.790 | 8256.667 | 98.00 | 97.78 | 307.493
260 | 10 | none | 257.574 | 99.03 | 13.36/40 | 2.403 | 212.892 | 99.00 | 92.78 | 580.954
260 | 10 | emergency_only | 257.600 | 99.04 | 13.38/40 | 2.394 | 212.892 | 100.00 | 92.75 | 580.954
260 | 10 | emergency_and_control | 260.320 | 99.93 | 18.25/38 | 0.336 | 208.554 | 99.67 | 90.27 | 650.800
260 | 50 | none | 257.574 | 99.03 | 13.36/40 | 2.040 | 593.569 | 99.33 | 92.77 | 580.954
260 | 50 | emergency_only | 257.600 | 99.04 | 13.38/40 | 2.040 | 593.569 | 99.67 | 92.78 | 580.954
260 | 50 | emergency_and_control | 260.320 | 99.93 | 18.25/38 | 1.329 | 607.046 | 99.67 | 89.94 | 648.215
260 | 200 | none | 257.574 | 99.03 | 13.36/40 | 1.984 | 1208.769 | 98.33 | 94.69 | 580.954
260 | 200 | emergency_only | 257.600 | 99.04 | 13.38/40 | 1.985 | 1208.769 | 98.33 | 94.67 | 580.954
260 | 200 | emergency_and_control | 260.320 | 99.93 | 18.25/38 | 1.769 | 1183.508 | 98.33 | 91.74 | 648.215
260 | 1000 | none | 257.574 | 99.03 | 13.36/40 | 2.103 | 5591.600 | 98.33 | 95.99 | 580.954
260 | 1000 | emergency_only | 257.600 | 99.04 | 13.38/40 | 2.104 | 5591.600 | 98.33 | 95.99 | 580.954
260 | 1000 | emergency_and_control | 260.320 | 99.93 | 18.25/38 | 2.055 | 5596.554 | 98.33 | 93.01 | 648.215
230 | 10 | none | 230.628 | 99.99 | 19.74/38 | 2.433 | 220.070 | 97.00 | 82.08 | 675.328
230 | 10 | emergency_only | 230.708 | 99.99 | 19.82/39 | 2.407 | 205.913 | 98.67 | 81.72 | 680.394
230 | 10 | emergency_and_control | 230.255 | 100.00 | 20.35/39 | 0.437 | 180.522 | 99.67 | 78.06 | 694.493
230 | 50 | none | 230.628 | 99.99 | 19.74/38 | 2.025 | 504.000 | 97.00 | 82.33 | 675.328
230 | 50 | emergency_only | 230.708 | 99.99 | 19.82/39 | 2.049 | 513.252 | 98.67 | 82.32 | 680.394
230 | 50 | emergency_and_control | 230.255 | 100.00 | 20.35/39 | 1.320 | 509.704 | 98.00 | 78.25 | 694.493
230 | 200 | none | 230.628 | 99.99 | 19.74/38 | 2.029 | 1650.226 | 98.67 | 83.82 | 675.328
230 | 200 | emergency_only | 230.708 | 99.99 | 19.82/39 | 2.030 | 1651.200 | 99.00 | 83.85 | 680.394
230 | 200 | emergency_and_control | 230.255 | 100.00 | 20.35/39 | 1.803 | 1656.000 | 99.00 | 79.53 | 694.365
230 | 1000 | none | 230.628 | 99.99 | 19.74/38 | 2.074 | 4894.226 | 98.33 | 85.19 | 675.328
230 | 1000 | emergency_only | 230.708 | 99.99 | 19.82/39 | 2.074 | 4894.226 | 98.33 | 85.21 | 680.394
230 | 1000 | emergency_and_control | 230.255 | 100.00 | 20.35/39 | 2.024 | 4875.896 | 98.33 | 80.87 | 694.493

Обычные команды
- Минимальная наблюдавшаяся доля недоставленных состояний: 0.003079 (emergency_and_control).
- Наибольший промежуток без свежей команды: 8264.347 мс.
- Поздние/повторные копии подавляются строго монотонным sequence_number и не откатывают состояние.

Аварийные команды
- Доля своевременных доставок по всем строкам: 98.546%.
- Максимальный P95 первой доставки: 22.157 мс.

Нагрузка, видео и очередь
- Диапазон полной предложенной нагрузки: 230.255…271.591 кбит/с.
- Максимальная очередь: 40 пакетов / 22420 байт; ожидающих не начатых кадров: 1.
- Доля опубликованных кадров: 78.064…97.789%.
- Полезный доставленный видеопоток: 121.375…152.208 кбит/с.
- Повторение команд увеличивает предложенную нагрузку и учитывается в общей очереди; свежесть видео ограничивается политикой одного свежего не начатого кадра.

Телеметрия
- Доля доставленных уникальных сообщений: 97.260…98.172%.
- Средний возраст последнего сообщения на отметке 120 с: 100.000…149.000 мс.
- Максимальный промежуток без обновления: 8309.334 мс; максимум интервалов >500 мс за опыт: 1.810.

Функциональные проверки
- PASS 01_no_error_matches_lab036: Lab036 latest-only/non-preemptive invariants retained
- PASS 02_common_crc_rejects_corruption: common packet rejected
- PASS 03_outer_crc_rejects_corruption: outer video packet rejected
- PASS 04_fec_restores_allowed_losses: three erased source symbols restored
- PASS 05_receiver_requires_newer_sequence: old/equal sequence suppressed
- PASS 06_copies_share_command_identity: three copies encode identically
- PASS 07_late_old_copy_no_rollback: newer state retained
- PASS 08_only_unstarted_copy_cancelled: transmitted and removed sets are disjoint
- PASS 09_emergency_never_removed: no emergency removal
- PASS 10_current_packet_nonpreemptive: serialization intervals do not overlap
- PASS 11_repeats_in_queue_and_load: repeat copies present in service/removal accounting
- PASS 12_latest_video_queue_bounded: at most one unstarted frame
- PASS 13_incomplete_frame_not_published: all-lost schedule yields no decodable block
- PASS 14_priority_between_video_packets: high priority traffic served between video packets
- PASS 15_fixed_seed_reproducibility: identical seed gives identical intervals

Созданные файлы
- protocol/control_repetition.py
- tests/lab037_lossy_full_link.py
- data/processed/lab037/lab037_summary.csv
- data/processed/lab037/lab037_command_metrics.csv
- data/processed/lab037/lab037_video_metrics.csv
- data/processed/lab037/lab037_emergency_metrics.csv
- data/processed/lab037/lab037_report.txt
- data/processed/lab037/lab037_command_gap.png
- data/processed/lab037/lab037_emergency_timeliness.png
- data/processed/lab037/lab037_command_age.png
- data/processed/lab037/lab037_image_age.png
- data/processed/lab037/lab037_published_video.png
- data/processed/lab037/lab037_load_queue.png
- data/processed/lab037/lab037_protection_comparison.png

Итоговый git status
?? data/processed/lab037/
?? protocol/control_repetition.py
?? tests/lab037_lossy_full_link.py

Двоичные пакеты, JPEG, подробные пакетные журналы и дампы не сохранялись.
Режим защиты автоматически не выбирается: все три режима представлены отдельно.
