[2026-10-16] eagle: work/projects/cpm-status-2026-10-15.md

This commit is contained in:
Alexey Martemyanov committed 2026-10-16 00:37:40 +06:00
1 parent 84a57304f8
commit 152ed7474f
1 file changed
+14
+14
View File
@@ -542,3 +542,17 @@ Baseline №4: настоящие HTTP navigation callbacks/native dashboard у
После вопроса пользователя проверены исходные настройки: Debug app использует Automatic signing, DEVELOPMENT_TEAM=HKE973VLUW; валидные identities/profile доступны. **Unsigned был моим обходом, а не требованием среды.** Первую provisioning-ошибку вызвали мои CLI overrides `CODE_SIGN_STYLE=Manual`, пустой `DEVELOPMENT_TEAM`/profile и ad-hoc identity. Повтор без этих overrides — `build-signed-default.log`, **TEST BUILD SUCCEEDED**, Apple Development: Alexey Martemyanov. Дальнейшие результаты считаются по подписанному приложению; unsigned command убрана из README. Ранние bootstrap-гипотезы о невозможности штатной подписи неверны.
Добавленные test-only изоляции cache/vault не являются CPM fixes; необходимость их сохранения пересматривается после signed проверки. Временная extraction instrumentation теперь подтверждена строкой `CPM APP INSTRUMENTED`; baseline с native response, но без page mark всё ещё красный, control bridge не подтверждён. Добавлена фиксация DOM marks/native methods. Прямой async импорт WebKit Any-result заменяется callback continuation с String-only границей после runtime abort «freed pointer was not the last allocation» в диагностическом прогоне. Результаты не объявляются зелёными до проверки page receipt и реальных failures/recovery.
### Signed baseline и one-navigation — первые подтверждённые результаты
`signed-baseline-and-navigation.xcresult` / `.log`: **2 tests, 0 failures**, baseline 1.864 с и single-navigation/recovery 5.360 с. На здоровых страницах есть реальные DOM marks `initresp` (≈13–17 мс) и forwarded native dashboard; при ровно одной потерянной навигации mark отсутствует, есть штатный timeout, следующая навигация отвечает и даёт `recovery_document=later_navigation`. Это signed DuckDuckGo.app, TeamIdentifier=HKE973VLUW, hardened runtime.
Прежний unsigned vault-обход удалён из `SecureVaultFactory.swift` и `AppMain.swift`: эти два файла снова без diff. Последующая signed build без обхода успешна (`build-signed-core.log`). Recorder в harness теперь использует реальный macOS runtime feature-flag adapter (видимость internal для app-hosted теста), добавлен отдельный test переключения proxy flag с проверкой здоровых навигаций и omission readiness на новом view при off. Всего 19 методов. Запущены все 10 core diagnostic scope/recovery методов. Slow wake/freeze задают busy wait до первой загрузки контекста и ждут исходную готовность, чтобы проверка следующего wake не зависела от чтения изменённого JS из уже закэшированного ресурса.
### Core suite завершён: 10/10, signed, штатный Vault
`signed-core.xcresult` / `signed-core.log`: **10 tests, 0 failures**, все выполнены, без skip. Последовательные методы: M4 11.571 с; dashboard transport 5.195; runtime proxy flag 1.719; healthy baseline 1.149; one navigation/recovery 5.292; all windows + new tab + recovery 23.995; one tab + healthy controls 11.127; several tabs + controls 19.648; slow HTTP 8.872; slow native settings/recovery 8.961. Десять JSON attachments экспортированы в `signed-core-evidence/`.
Проверенные поля: controlled loss → `init_stage=none`; native settings delay → `received`, recovery=`failed_navigation`, `4s_to_10s`; потеря dashboard подтверждения при наличии page initResp → `response_sent`; scoped loss → actual init_failed/stuck и recovery=`later_navigation`; M4 recovery идёт after_extension_reload. При proxy off новый view не имеет readiness-параметра, CPM отвечает; при on готовность снова измеряется. Vault-обход удалён, подпись штатная.
Known-failures suite начат с включённым expensive flag. Первый background-SIGKILL автоматически восстановился в том же контексте: actual page initResp + native ответ, timeline содержит died_crash/dealloc/new view. Следующий explicit reload потерял первую навигацию (`init_stage=none`, ready уже under_1s) — известная startup race A, а не доказательство неустранимого worker death. Recovery-контроль уточнён: после explicit reload дождаться production `loadEmbeddedExtensionBackgroundContent`, как уже сделано в embedded-only negative control. Исходный красный прогон сохраняется. Embedded-only cycle, first embedded install и first main-enable уже прошли; выполняется реальный WebKit load timeout.