Skip to content

Prepare free SignPath code signing for Windows releases - #1

Merged
almuleev merged 1 commit into
mainfrom
codex/free-signing
Oct 14, 2026
Merged

almuleev merged 1 commit into
mainfrom
codex/free-signing

Conversation

@almuleev

Copy link
Copy Markdown
Owner

Скачанные EXE AMSignal пока не имеют доверенной подписи издателя. Добавлена
интеграция бесплатной программы SignPath Foundation для будущих выпусков GUI
и CLI. Фактическая подпись требует принятия проекта сервисом, подключения
учётной записи и ручного одобрения владельцем; существующие файлы не объявляются
подписанными и не перезаписываются.

  • Обе сборки получают проверенные Windows-метаданные AMSignal и одинаковую версию.
  • Ручной workflow собирает существующий tag из main на GitHub-hosted Windows,
    запускает регрессии и передаёт неизменяемый артефакт в SignPath. Actions
    закреплены по SHA; подпись требует ручного одобрения.
  • Упаковка подписанного выпуска проверяет доверие Windows, издателя, временную
    метку, версии и единый сертификат двух EXE. Контрольные суммы считаются после
    подписи; результатом является черновик GitHub Release, без замены старого.
  • Добавлены политика подписи с честным текущим статусом, XML-ограничения,
    инструкция подключения и готовый текст заявки. Никакая платная услуга
    не подключена. Численные алгоритмы и поведение приложения не менялись.

Проверено локально: штатные CLI/GUI-сборки, 25 проверок упаковки и метаданных,
PowerShell AST, XML, actionlint, запуск CLI FFT на N=4096. Полная успешная
подпись и получение файла из SignPath пока не проверены: бесплатное подключение
и реальный сертификат ещё не одобрены.

Владелец должен подтвердить контакт заявки и условия программы, подключить
GitHub App/учётную запись SignPath с MFA, задать SIGNPATH_* переменные и submitter
secret, затем одобрить первую подпись. Подробности — docs/CODE_SIGNING.md и
docs/SIGNPATH_APPLICATION.md. Гарантия немедленного исчезновения SmartScreen
не заявляется.

Подготовлена бесплатная подпись собственных выпусков AMSignal через SignPath
Foundation. Подключение сервиса и фактическая подпись остаются зависимыми от
одобрения проекта и ручного разрешения каждого запроса владельцем.

Добавлены Windows VERSIONINFO для GUI и CLI, единые имя продукта и текстовая
версия, проверенные числовые компоненты и исходные имена EXE. Обе PowerShell-
сборки и Windows Make включают эти ресурсы; Linux-сборка не требует windres.

Новый ручной workflow проверяет release tag из main, собирает и тестирует код
на GitHub-hosted Windows, загружает неизменяемый артефакт и передаёт его ID
в SignPath. Внешние Actions закреплены по SHA, права записи выдаются только
созданию черновика выпуска, ключ подписи не размещается в репозитории.

После подписи проверяются доверие Windows, издатель SignPath Foundation,
временная метка, версии и совпадение сертификата GUI/CLI. Упаковка принимает
проверенные EXE из отдельного каталога, считает SHA-256 по итоговым байтам,
сохраняет документы/политику и не перезаписывает существующие архивы и выпуски.

Добавлены ограничивающая XML-конфигурация, честная политика с текущим pending-
статусом, инструкция активации и готовая неотправленная заявка. Обновлены три
README, AGENTS.md и карта архитектуры. Численный код и GUI-поведение не менялись.

Проверка: обе штатные PowerShell-сборки, 25 проверок метаданных/упаковки/
контрольных сумм, разбор PowerShell AST и XML, actionlint, запуск CLI FFT N=4096.
Положительная криптографическая проверка SignPath требует одобрения и доступа
к сервису; самоподписанный сертификат для имитации результата не создавался.
@almuleev
almuleev marked this pull request as ready for review October 14, 2026 15:40
@almuleev
almuleev merged commit 0c565af into main Oct 14, 2026
4 checks passed
almuleev added a commit that referenced this pull request Oct 14, 2026
Зафиксирована отправка заявки AMSignal в бесплатную программу SignPath Foundation 14 октября 2026 года в 18:40 MSK после прямого разрешения владельца проекта.

Официальная форма подтвердила получение сообщением Form submitted. Контакт владельца — Aleksandr Muleev, al.muleev@gmail.com; условия программы и обработка контактных данных согласованы, рекламная рассылка выключена.

Документация связывает заявку с применённым PR #1 и успешными проверками Windows/Linux. Данные аудитории указаны без преувеличения: 50 релизов, 75 скачиваний артефактов, 0 звёзд и форков.

Обновлены статус заявки, политика подписи, AGENTS.md и карта архитектуры. Одобрение проекта и сертификат ещё ожидаются; существующие EXE не объявляются подписанными. Численный код и скрипты после успешных сборок не изменены. Проверка чистоты diff успешна.
almuleev added a commit that referenced this pull request Oct 14, 2026
Зафиксированы накопленные изменения после v0.17.0-rc.3. Версия 0.17.1 сохраняет прежнюю методику FFT/H1/coherence, исходные отсчёты и независимую от масштаба общую область анализа.

Фильтр, память и численный вход:
- Крупный фильтрованный Signal обрабатывается фоновым OverviewWorker вместо повторного полного расчёта внутри paint/zoom. Внутри графика показаны применение фильтра, подготовка и прогресс.
- share_resident_recording передаёт исходные время и каналы общему immutable RecordingSource без полной копии. В Dataset остаются только две seed-строки; численный вход использует полные оригиналы и recording_rows.
- file_backed отделён от resident_backed. FFT/FRF используют RAM при достаточном допуске независимо от renderer; при нехватке памяти сохраняется точный файловый/дисковый путь.
- MemoryBudget::transfer_resident и RAII учитывают уже выделенные массивы один раз. Auto не уменьшает доступный бюджет повторно при перемещении исходника; активный worker удерживает владельца до завершения.
- При демоции очищаются idle recipe/overview, завершённый Spectrum перестаёт удерживать полные оригиналы; отменённый активный запрос сохраняет корректное владение и проверку stamp.
- Точные biquad, prev_time и have_segment сохраняются в FSTATE01 (.filter) с identity файла/рецепта/каналов/Fs, checksum и проверкой размеров/времени. Общий LRU 2 GiB/256 элементов, до 2 MiB и 512 продолжений на рецепт; replay отдельно допускает рабочие состояния.
- Повреждённый или недоступный необязательный кэш вызывает точный прогрев префикса. Cancelled/SourceChanged не скрываются. Разрывы, NaN/Inf, порядок каналов и прежний Fs сохраняются.
- Отрисовка обзорных линий/экстремумов пакетная через GDI без изменения пиксельных диапазонов и правил разрывов.

Исправление test1:
- scan_time_bounds сохраняет точные границы, не округляя |t| < 1e-12 к нулю. Первый отсчёт -6.9388939039072284e-18 больше не выпадает из discovery.
- Устранены несовпадение ScanIndex/Dataset, отказ from_resident и InvalidRequest полного фильтрованного viewport («Не удалось прочитать обзор»).
- Новый ключ scan-amscidx1-parser2-exact-bounds перестраивает старые индексы. Проверены оба конца около нуля, весь микродиапазон и повторное открытие с индексом.

Интерфейс и управление:
- Уведомление «Вычисление спектра…» и сообщения ошибки выставляют TA_LEFT|TA_TOP после осей; SaveDC/RestoreDC предотвращают обрезание текста.
- Общий курсор точек/маркеров/линий: компактный прицел 17×17, чёрная сердцевина, белая обводка, центральный hotspot и освобождение Win32 handle.
- Shift-выделение Signal работает в режиме точек и при блокировке разметки; приоритет над обычными точками/таймлайном, сохранено поведение явно вооружённых инструментов.
- Красный таймлайн можно выделять, перемещать, удалять или скрывать через Escape/ПКМ/меню. Пауза отличается от сброса; после EOF воспроизведение возвращается к началу. Потеря capture/отмена восстанавливает позицию; транспорт не меняет численную область.
- Ctrl+Shift+S отображается полностью: ширина подписи измеряется текущим шрифтом вместо фиксированных 80 px; отступы команды/сочетания/стрелки согласованы.
- «Склеивать участки записи» перенесено в «Каналы» и принадлежит документу. Старый глобальный INI-ключ удаляется при сохранении; проекты сохраняют локальное значение.
- Диалог «Анализ → Участок анализа» использует общие тематические поля/кнопки, двухстрочную компоновку, измеренные подписи и корректный клиентский размер.

Очистка кода:
- Удалены невызываемые SpectrumWorker::submit_source/Prepare, всегда истинная проверка поддержки overview, недостижимое предупреждение о склейке, export_helpers/draw_text и четыре поля переводов.
- start_async_load_task принимает только путь; source_preview остаётся для seed-публикации. Реальные диапазонные reader API, CLI, callbacks и ресурсное владение сохранены.
- Удалён устаревший совет использовать Light Mode при отказе resident-бюджета.

Бесплатная подпись Windows:
- Добавлены одинаковые VERSIONINFO GUI/CLI, AM_version.rc и безопасная генерация ресурсов PowerShell/Make.
- Workflow SignPath строит проверенный тег из main на GitHub-hosted Windows, использует закреплённые SHA Actions, ограниченный доступ и два собственных EXE.
- Требуются ручное одобрение SignPath, Valid Authenticode, издатель Foundation, timestamp, одинаковый сертификат и версии. ZIP/SHA-256 считаются после подписи; старые releases не перезаписываются, новый создаётся draft.
- PR #1 с инфраструктурой применён, заявка отправлена 14.10.2026 с разрешения владельца. Одобрение фонда/сертификат ещё ожидаются; существующие EXE не объявляются подписанными.

Документация и архив:
- Обновлены AGENTS.md, ARCHITECTURE.md, CHANGELOG и двуязычное описание версии.
- Выполнена внешняя инвентаризация материалов. 22 старых отчёта, пять материалов 20 GB и описание rc.2 перенесены в архив; SHA-256 сохранён. Внешние материалы не входят в Git-коммит.
- Текущий приоритет остаётся до 10 GB; задачи/генерация/новые испытания 20 GB не возобновлялись. Стенды и исходные записи сохранены.
- Руководство MD/DOCX и смешанный исторический LARGE_RECORDINGS_PLAN ещё требуют документальной актуализации; старые сравнительные таблицы не описывают нынешний EXE.

Проверки и измеренные границы:
- Последний полный набор: 1262 проверки ядра и 1026 GUI, ошибок нет. Проверены FFT/FRF, рецепты/состояния фильтра, ресурсы, отмена, демоция и взаимодействия.
- Реальный test1: 49 938 563 байта, N=337132, C=8; полосовой Баттерворт 0–16/5–16/16–200 Гц в RAM и 100–1000 Гц через дисковый replay. Полный обзор и три перехода без ошибок; для RAM 5–16/16–200 все значения точно совпали с filter_signal.
- Реальный test2: 1 024 104 009 байт, N=6832000, C=8. Холодный обзор 47,932 → 4,106 с; первая навигация после перезапуска 19,799 → 0,415 с. Это время готовности, а не только реакция UI.
- Полный обработанный FFT и FRF семи откликов совпали с resident контролем; Manual 64 MiB/commit cap 128 MiB: 29 source-opening проверок и полный disk FFT, Peak WS 24,531 MiB.
- Инфраструктура подписи: 25 проверок метаданных/отказа unsigned/путей/ZIP/SHA-256; Windows/Linux CI PR #1 успешен. Настоящая подпись ещё не проверена из-за отсутствия доступа.
- Полные штатные CLI/GUI сборки выполнены; после нового тега метаданные и приложения собираются для v0.17.1.
- Сравнение 0.16.1: 132 численных процесса, 17 933 600 значений побитово равны для тогдашнего снимка. Последующее исправление фильтра не перемерено парно с 0.16.1/0.16.7/FAMOS. Не заявляется универсальное ускорение, новый тест 10 GB или физический ПК 8 GiB.
almuleev added a commit that referenced this pull request Oct 14, 2026
Объединена история main с уже применённым PR #1 и коммитом подтверждённой заявки SignPath. Полный состав изменений версии описан в предшествующем коммите ebb50ca и docs/releases/v0.17.1.md.

Разрешены только конфликты карты документации AGENTS.md и ARCHITECTURE.md: сохранены все накопленные описания версии, фильтра, интерфейса, test1 и архива. Итоговое дерево полностью совпадает с проверенным ebb50ca (1012954); программный код при объединении не изменился.

Коммит сохраняет историю ранее опубликованной инфраструктуры подписи и отправленной заявки. Сертификат и подписанные EXE ещё не получены. Внешние отчёты и стенды не включены в Git.
@almuleev
almuleev deleted the codex/free-signing branch October 14, 2026 19:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant