Перейти к основному содержимому
Разделы документации
← Каталог правил

EXEC / Изоляция и executor

Вход в MainActor без доказанного контекста

concurrency.unproven-mainactor-entry@1.0.0
Требует восстановленияExperimental1 условие

V-EXEC-02 · Сигнал для review

Вход в MainActor без доказанного контекста

Внешняя точка входа может вызывать UI-код без проверенного контракта MainActor. Это повод проверить границу, а не автоматически объявить гонку.

Пример проблемы и направление исправления

Учебные сокращённые фрагменты Swift или схемы протокола. Вспомогательные API условны. Это не тестовые oracle и не обещание, что текущий subset выдаст диагностику именно на этот код.

Проблемный сценарий

// Контракт внешнего callback не описан.
foreignAPI.callback = { renderUI() }

Возможное исправление

// Адаптер явно доставляет событие на MainActor.
foreignAPI.callback = { event in
Task { @MainActor in renderUI(event) }
}

Что изменить и что сохранить

Описать и подтвердить контракт вызывающей стороны либо добавить явную границу. Само отсутствие сведений не должно порождать finding без наблюдаемого риска.

Что нужно доказать

Показывать первый потерянный isolation proof на пути

Требуемые факты по контракту: compiler-derived isolation/callback facts по exact Swift language mode

Безопасные случаи и границы

Это вопрос для проверки, а не утверждение о background thread

Если необходимые факты не получены, результат — unknown, а не «ошибки нет». Для review-сигнала также нужен наблюдаемый риск; нехватки данных недостаточно.

Что подтверждено сейчас

В срезе 022 требуется восстановление и квалификация source producer. Целевое доказательство и пример описывают желаемое поведение; они не являются свидетельством действующей диагностики.

Контракты и происхождение

Страница объединяет утверждённый реестр и редакционные объяснения из Git-среза 4558458d. Raw engineering contracts не входят в public artifact; точные пути остаются во внутреннем manifest.

  • Целевой каталог: docs/product/final-rule-catalog.md
  • Реестр RuleID: docs/evidence/matrices/022-complete-rule-portfolio.md
  • Матрица условий: openspec/specs/022-complete-rule-portfolio/coverage-matrix.md
  • Срез приёмки: openspec/specs/022-complete-rule-portfolio/reports/source-authority-recovery.md
  • Приёмка: t008-t009-source-batch: openspec/specs/022-complete-rule-portfolio/reports/t008-t009-source-batch.md
  • Приёмка: t012-t015-source-batch: openspec/specs/022-complete-rule-portfolio/reports/t012-t015-source-batch.md
  • Приёмка: t011-delivery: openspec/specs/022-complete-rule-portfolio/reports/t011-delivery.md
  • Приёмка: t014-delivery: openspec/specs/022-complete-rule-portfolio/reports/t014-delivery.md

Изменение статуса требует обновления подтверждённого среза и проверки каталога. Количество страниц не является количеством полностью квалифицированных правил.

← Вернуться к результатам поиска