Files
huncode 775ae9b71a
Build and deploy / deploy (push) Successful in 15s
revise October 2025 teaching engineering articles
2026-07-31 18:30:31 +03:00

8.1 KiB
Raw Permalink Blame History

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 об эффективности обучения.