104 lines
13 KiB
Markdown
104 lines
13 KiB
Markdown
# P112 — June 2027: «Большой разбор производительности»
|
||
|
||
## Статус, temporal boundary и file scope
|
||
|
||
Редакторская дата: **2026-07-31**. Июнь 2027 ещё не наступил. Три revision — только **plan/scenario на 2027-06** с source cutoff **2026-07-31**. В них не существуют и не заявляются benchmark, telemetry, profile, bottleneck, rollout, winner, product/production effect, service data или raw telemetry.
|
||
|
||
Модуль принимает лишь named fixed in-memory literals. Единственный положительный status — `synthetic-plan-hand-off`, всегда с `productionEffect: not-attempted`; прочие cases проходят fail-closed. Код не читает files, network, environment, clock, secrets, telemetry, browsers, services, systems или data и не делает наблюдений. Реальный сбор, profile, service inspection или интерпретация могут появиться только в отдельном явно authorised scope.
|
||
|
||
Изменены только разрешённые P112-файлы:
|
||
|
||
- `web/scripts/upgrade-2027-06.mjs`
|
||
- `editorial/reviews/2027-06-draft.md`
|
||
- `web/public/assets/editorial/2027/performance-capstone-2027-critical-path-contract.svg`
|
||
- `web/public/assets/editorial/2027/performance-capstone-2027-evidence-boundary-matrix.svg`
|
||
- `web/public/assets/editorial/2027/performance-capstone-2027-handoff-loop.svg`
|
||
|
||
Git не использовался. Registry, README, queue, `articles.json`, app и P102–P111 не менялись.
|
||
|
||
## Закреплённые первичные источники и URL verification
|
||
|
||
1. [W3C Performance Timeline Level 2](https://www.w3.org/TR/2019/WD-performance-timeline-2-20190329/) — W3C Working Draft, **dated snapshot 2019-03-29**. Это immutable датированная замена прежнему mutable URL. Используется для vocabulary `PerformanceEntry`/`PerformanceObserver`; не подтверждает существование entry, rendering path или effect в неизвестном приложении.
|
||
2. [W3C Navigation Timing Level 2](https://www.w3.org/TR/2026/WD-navigation-timing-2-20260225/) — W3C Working Draft, **2026-02-25**. Используется для границ navigation timing entry; не создаёт future measurement или baseline.
|
||
3. [W3C Resource Timing](https://www.w3.org/TR/2026/CRD-resource-timing-20260420/) — W3C Candidate Recommendation Draft, **2026-04-20**. Используется для vocabulary resource entries и `Timing-Allow-Origin`; не делает условия сопоставимыми и не устанавливает bottleneck.
|
||
4. [W3C Long Tasks API](https://www.w3.org/TR/2026/WD-longtasks-1-20260319/) — W3C Working Draft, **2026-03-19**. Используется для определения класса long task; не доказывает profile, причину задержки или наличие long task в продукте.
|
||
|
||
Все четыре exact W3C URL проверены 2026-07-31 запросом `curl -I -L`: HTTP **200**. Их датированные publication/last-modified значения — 2019-03-29, 2026-02-25, 2026-04-20 и 2026-03-19; каждое не позже source cutoff. Предыдущая mutable-публикация удалена из script и review: историческим доказательством остаётся только закреплённый W3C snapshot. Спецификация задаёт термин и visibility boundary, но никогда не выступает evidence измеренного результата.
|
||
|
||
## Additional independent correction after rejection
|
||
|
||
Независимая приёмка справедливо отклонила предыдущую глубину **5 913 / 6 306 / 6 203** знака: общий минимум выполнялся, но это не соответствовало очереди «Большой разбор производительности». Исправление расширило статьи до строгого локального диапазона **9 000–12 000** знаков и закрепило тот же диапазон в `revision()` и `verifyRevisionsAgainstFixture()`.
|
||
|
||
- **Practice** теперь отдельно разбирает navigation/resource/main-thread/action boundary, единицу работы, owner каждого элемента контракта, ложный proxy-контрпример и редакционный stop для склеенной постановки.
|
||
- **Mechanism** добавляет condition ledger, смысл baseline без прошлого числа, confounders, TAO/visibility/privacy boundary, различие между числом и causal claim, а также будущие outcomes фальсификации без выдачи их за result.
|
||
- **Field** добавляет evidence record против отчёта, разделение прав на сбор и решение, no-data hand-off, независимость review от decision и минимальный контракт следующего scope.
|
||
|
||
Новые body lengths без sources: practice — **11 758**, mechanism — **11 981**, field — **11 747** знаков. Все новые разделы описывают контракт будущей работы, а не будущий benchmark, telemetry, profile или производственный эффект.
|
||
|
||
## Review pass 1 — содержание, источники и temporal honesty
|
||
|
||
- Первые два абзаца каждой статьи по-прежнему называют исходную проблему и цену: спорные правки, ложный winner и преждевременный rollout соответственно.
|
||
- Три текста сохраняют разные главные вопросы: practice — что является единицей критического пути; mechanism — что сделает сравнение опровержимым; field — как передать вопрос без отчёта.
|
||
- Ссылки отделены от фактов: датированные W3C snapshots объясняют API и ограничения, но не подтверждают route, service, response, entry, timing или пользовательское состояние.
|
||
- В каждом revision есть HTML table, исходная русская SVG-схема с meaningful alt/caption, safe runnable example, ordered actions, limits и concrete next scope boundary.
|
||
|
||
## Review pass 2 — literal safety и fail-closed
|
||
|
||
- `critical-path-contract-2027-06-v1` — единственный accept: `synthetic-plan-hand-off` / `productionEffect: not-attempted`.
|
||
- `missing-june-date-or-cutoff-v1` — `stop-missing-june-date-or-cutoff`; date и cutoff не выводятся по умолчанию.
|
||
- `unnamed-path-contract-v1` — `stop-unnamed-path-contract`; question обязана иметь id и revision.
|
||
- `conditions-claimed-without-record-v1` — `stop-conditions-claimed-without-record`; browser/device/cache/route нельзя assumed.
|
||
- `observation-injected-into-plan-v1` — `stop-observation-injected-into-plan`; benchmark, telemetry и profile остаются unobserved.
|
||
- `result-substitution-v1` — `stop-result-substitution`; winner, bottleneck, rollout и production conclusion запрещены.
|
||
- JSON clone + recursive deep freeze закрывают mutation nested contract/conditions/evidence. Unknown input закрывается `stop-unknown-fixed-literal`. Runnable examples выполняют только fixed literal/evaluator и не имеют I/O.
|
||
|
||
## Review pass 3 — visual, mobile, SVG safety и uniqueness
|
||
|
||
- Все SVG имеют русский `title`/`desc`; article figures имеют русские alt/caption. Не найдены external URL, `script`, `foreignObject`, `javascript:`, `data:image` или inline event handlers.
|
||
- Sharp создал три изображения **375×225**. Ручной осмотр: contract сохраняет четыре границы и итоговый hand-off; matrix — четыре строки/колонки и stop rule; loop — вход, проверки, stop-ветку и владельца. Обрезаний или перекрытий нет.
|
||
- Strict scan исключал section `Проверяемые источники`, но включал `<p>` и `<pre>`, поэтому runnable code участвовал. Сканированы 3 P112 revision попарно и против **30** published revision P102–P111 (2026-08…2027-05). `exactParagraphs160: 0`, `common12WordFragments: 0`, `failures: []`.
|
||
|
||
## Реально выполненные проверки после correction
|
||
|
||
Из `web/` выполнены:
|
||
|
||
```sh
|
||
node --check scripts/upgrade-2027-06.mjs
|
||
node scripts/upgrade-2027-06.mjs --verify-fixture
|
||
npm run audit:draft -- scripts/upgrade-2027-06.mjs
|
||
xmllint --noout public/assets/editorial/2027/performance-capstone-2027-critical-path-contract.svg public/assets/editorial/2027/performance-capstone-2027-evidence-boundary-matrix.svg public/assets/editorial/2027/performance-capstone-2027-handoff-loop.svg
|
||
rg -n -i '<(script|foreignObject)\b|javascript:|data:image|(?:^|[[:space:]])on[a-z]+=' public/assets/editorial/2027/performance-capstone-2027-critical-path-contract.svg public/assets/editorial/2027/performance-capstone-2027-evidence-boundary-matrix.svg public/assets/editorial/2027/performance-capstone-2027-handoff-loop.svg
|
||
node --input-type=module -e "import sharp from 'sharp'; /* render all three SVG at width 375 */"
|
||
node --input-type=module -e "/* import P102-P111 and P112; exclude sources; scan p/pre and 12-word grams */"
|
||
curl -I -L https://www.w3.org/TR/2019/WD-performance-timeline-2-20190329/
|
||
curl -I -L https://www.w3.org/TR/2026/WD-navigation-timing-2-20260225/
|
||
curl -I -L https://www.w3.org/TR/2026/CRD-resource-timing-20260420/
|
||
curl -I -L https://www.w3.org/TR/2026/WD-longtasks-1-20260319/
|
||
```
|
||
|
||
Фактические результаты: syntax — pass; fixture — **9/9** (6 literal statuses + 3 articles); internal 9–12k guard — pass; audit — pass для three exact slug с **11 758 / 11 981 / 11 747** body chars; XML — pass; SVG safety scan — empty/pass; Sharp — **3 × 375×225**; manual mobile review — pass; duplicate scan — `scannedP112: 3`, `againstP102toP111: 30`, `failures: []`; W3C URL verification — **4 × HTTP 200**.
|
||
|
||
## Disposition
|
||
|
||
P112 остаётся завершённым плановым выпуском: итогом может быть лишь `synthetic-plan-hand-off`. Любая будущая работа с реальными target, data, telemetry, profile, benchmark, interpretation, rollout или effect требует собственного authorised scope и не может быть задним числом добавлена в этот выпуск.
|
||
|
||
## Независимая приёмка — 2026-07-31
|
||
|
||
### Проход 1 — глубина, источники и границы знания
|
||
|
||
- Предыдущая краткая версия была отклонена и расширена до 11 758, 11 981 и 11 747 знаков. Новые разделы раскрывают ownership, false proxy, condition ledger, confounders, visibility/TAO, privacy, provenance и separation review/decision, не добавляя вымышленного performance-result.
|
||
- Все источники W3C проверены: immutable snapshot Performance Timeline от 2019-03-29 и три датированных W3C публикации 2026 года существуют до cutoff 2026-07-31. Они применены как vocabulary и спецификация visibility, не как evidence о продукте.
|
||
- Practice, mechanism и field сохраняют разные вопросы и цену: договор критического пути, опровержимость claim и передача вопроса без отчёта.
|
||
|
||
### Проход 2 — контракт и редакционный автоматический аудит
|
||
|
||
- `node --check`, fixture `9/9`, export/deep-freeze check и `npm run audit:draft -- scripts/upgrade-2027-06.mjs` прошли. Единственная accepted ветвь — `synthetic-plan-hand-off`; все пять контрпримеров останавливаются fail-closed, accepted effect — `not-attempted`.
|
||
- Три body проходят не только глобальный диапазон 5–15k, но и локальную защиту capstone `9–12k`.
|
||
- `xmllint` прошёл без output; SVG safety scan не нашёл executable или active external content.
|
||
|
||
### Проход 3 — визуал, overlap и выпуск
|
||
|
||
- Три SVG заново отрендерены и просмотрены на ширине 375 px: контур критического пути, матрица сравнимости и hand-off loop остаются читаемыми без обрезания.
|
||
- Strict cross-package scan P102–P112 исключает source section, но включает code. Для 33 статей результат: `collisions: []`.
|
||
- В реестр добавлены только три июньские revisions; пользовательские app/data files не включены.
|