8.1 KiB
P92 — октябрь 2025: объяснение сложной инженерной темы
Область draft-пакета
Пакет заменяет только три overlay-статьи: editorial-2025-10-practice-teaching-engineering, editorial-2025-10-mechanism-teaching-engineering, editorial-2025-10-field-teaching-engineering. Единственный исполняемый артефакт — web/scripts/upgrade-2025-10.mjs. Все attempts, feedback, trace и results — fixed synthetic in-memory literals; модуль не читает files, network, Git, CI, clock, telemetry, production или user data и не выполняет side effect. Registry, README, очередь, articles.json, app-страницы, docs/, Git и чужие draft-пакеты не менялись.
Исследование и историческая граница
Граница — 31 октября 2025. Оба источника доступны обычным HTTPS без авторизации и TLS bypass. ECMA-262 16th edition — неизменяемый опубликованный PDF июня 2025, §27.2.4.1/PerformPromiseAll. MDN Promise.all закреплён commit 3fad0447b4901e28fe88769976787d8d8b87d66d от 19.08.2025. Они подтверждают семантику aggregate outcome, порядок результатов, first rejection и allSettled; не подтверждают cancellation конкретной внешней работы. Вывод «cancel требует отдельного contract» в статье — явно обозначенная инженерная граница, не обещание источника.
Проход 1 — факты, техника и источники
runFixedPromiseExerciseсоздаёт только две in-memory promises: первая сразу rejected, вторая завершается вручную после обработанного aggregate reject. Trace проверяет порядокaggregate-rejected, затемremaining-input-fulfilled; он не моделирует сеть, timer или ресурс.checkFixedTeachingAttemptпринимает только frozen fixed literals.recipe-only-v1останавливается наmissing-modelиmissing-counterexample,wrong-cancellation-v1— наwrong-boundary; positive path выдаёт толькоsynthetic-ready-for-human-review.- В текст не перенесено утверждение, что Promise.all отменяет работу. ECMA-262 и MDN использованы только в заявленных границах; allSettled описан как получение всех исходов, а не cancel mechanism.
Вердикт: пройдено.
Проход 2 — редактура, голос, объём, цена и cross-article
Все статьи начинаются с наблюдаемой проблемы и цены ошибки в первых двух абзацах. Тон М8 — короткий, наставнический, без claims об эффективности: симптом → причина → проверка → действие. Термины раскрыты при первом появлении. Practice отвечает за маршрут объяснения, mechanism — за разделение трёх уровней состояния, field — за форму конкретной обратной связи.
| Статья | Главный вопрос | Самостоятельный артефакт | Цена ошибки |
|---|---|---|---|
| practice | Как выстроить объяснение? | путь model → exercise → check | рецепт копируют вне условий |
| mechanism | Что именно делает aggregate? | матрица допустимых выводов | ложная очистка и неверное владение |
| field | Как вернуть конкретный пробел? | fixed feedback card | неверный hand-off следующему инженеру |
Cross-article repetition check после финальной редакции: 0 одинаковых абзацев длиной от 160 знаков и 0 общих последовательностей из 12 слов; общий большой вводный блок отсутствует.
Вердикт: пройдено. Независимый audit зафиксировал основной текст: practice — 5 725, mechanism — 6 071, field — 5 457 знаков.
Проход 3 — SVG, fixture и выпуск
node --check web/scripts/upgrade-2025-10.mjs— PASS.node web/scripts/upgrade-2025-10.mjs --verify-fixture— PASS, 10/10 assertions.npm run audit:draft -- scripts/upgrade-2025-10.mjs— PASS: 5 725 / 6 071 / 5 457; диапазон 5–15 тыс., table, figure, alt/caption, code, ordered sequence, два источника, проблема и цена.xmllint --nooutдля трёх SVG — PASS; safety scan чист: нетscript,foreignObject,javascript:,data:imageи inline event handlers.- Sharp renders на 375 px просмотрены: model path сохраняет пять карточек, matrix читает три уровня, feedback loop показывает возврат gap и hand-off без обрезания.
Overlay намеренно не подключён. README, registry, очередь и Git не менялись; интеграционный audit/build остаётся задачей независимого редактора.
Независимый выпускной проход — 31.07.2026
Источники перепроверены на закреплённых версиях. ECMA-262 16th edition PDF показывает Promise.all, NewPromiseCapability, iterator и PerformPromiseAll; MDN commit 3fad0447 подтверждает first rejection, iterable order и границу allSettled. Ни один текст не выводит отмену внешней операции из этих фактов.
Все три статьи прочитаны целиком. Практика объясняет модель и упражнение, mechanism отделяет input, aggregate и внешнюю операцию, field возвращает recipe к проверяемому feedback. Попарная проверка основного текста: 0 одинаковых абзацев от 160 знаков и 0 общих 12-словных фрагментов. Три SVG повторно отрендерены Sharp на 375 px и остались читаемыми.
При буквальном исполнении practice example обнаружен неполный комментарий к console.log(report): объект также содержал productionEffect. Snippet изменён на вывод трёх конкретно показываемых полей; результат теперь точно соответствует комментарию. Повторный fixture проходит.
node --check scripts/upgrade-2025-10.mjs
PASS
node scripts/upgrade-2025-10.mjs --verify-fixture
PASS fixture: 10/10 assertions
npm run audit:draft -- scripts/upgrade-2025-10.mjs
PASS: 5725 / 6071 / 5457 body chars
npm run audit:articles -- <3 October slugs>
PASS: each article has 1 table, 1 code example and 1 figure
После приёмки overlay подключён в editorial-revisions.mjs после September 2025. Все examples остаются fixed in-memory teaching models; они не создают production result, отмену внешней работы или claim об эффективности обучения.