rewrite 2026-09 and 2027 articles for reader-facing quality
Build and deploy / deploy (push) Successful in 18s

This commit is contained in:
2026-07-31 22:26:56 +03:00
parent 3bfc3f21c4
commit 440c8721dc
69 changed files with 4424 additions and 3533 deletions
+26 -41
View File
@@ -1,54 +1,39 @@
# P117 — ноябрь 2027: «Пересмотр старых советов»
# Редакторское ревью: ноябрь 2027
## Scope и временная граница
Пакет переписан как три самостоятельных материала о надёжности: совместимая миграция схемы, retry/idempotency и incident runbook. Исторические slug и имена assets сохранены, технические title/desc/alt/caption обновлены.
P117 — future-only редакционный сценарий: `editorDate: 2026-07-31`, `planDate: 2027-11`, `sourceCutoff: 2026-07-31`. Он не утверждает существование исторической статьи, snapshot, старого совета, документационного изменения, свежего repro, тестового прогона, коррекции, публикации, owner-а или production-результата. Любые такие предметы представлены только именованными полями будущих вопросов. Единственный положительный evaluator output — `synthetic-plan-hand-off`; во всех ветках `productionEffect: not-attempted`.
## Три содержательных прохода
Изменены ровно пять разрешённых файлов:
### `editorial-2027-11-practice-mistakes-revisions`
- `web/scripts/upgrade-2027-11.mjs`
- `editorial/reviews/2027-11-draft.md`
- `web/public/assets/editorial/2027/mistakes-revisions-2027-advice-timeline.svg`
- `web/public/assets/editorial/2027/mistakes-revisions-2027-condition-correction-matrix.svg`
- `web/public/assets/editorial/2027/mistakes-revisions-2027-evidence-handoff-loop.svg`
1. Факты и пример: до — вопрос о пересмотре совета без базы; после — `classifyMigrationStep` с unsafe/expand/switch/contract и совместимостью reader/writer. Причина: миграция должна иметь проверяемую матрицу, а не обещание безопасного перехода.
2. Структура и голос: до — временная линия без реальной DDL-логики; после — symptom блокировки, expand/dual write/switch/contract, таблица и порядок rollback. Причина: reader должен увидеть, где остановиться до удаления колонки.
3. Визуал и доступность: до — timeline будущей коррекции; после — техническая timeline четырёх фаз с контрольной точкой проверки данных. Причина: схема связывает время и совместимость без мета-сюжета.
Git не использовался. Registry, README, очередь, `articles.json`, app и чужие пакеты не менялись.
### `editorial-2027-11-mechanism-mistakes-revisions`
## Источники и их границы
1. Факты и пример: до — condition/correction evaluator; после — `calculateRetryDelay` с exponential cap и фиксированным jitter, включая invalid input. Причина: пример должен показывать реальный механизм backoff.
2. Структура и голос: до — абстрактная передача вопроса; после — право на retry, таблица статусов 429/503/timeout, idempotency key, deadline и порядок настройки. Причина: backoff нельзя обсуждать без семантики операции.
3. Визуал и доступность: до — матрица неизвестных полей; после — матрица сигнала, решения, задержки и риска с отдельной строкой POST timeout. Причина: визуал предотвращает чтение retry как универсального исправления.
1. [W3C PROV-DM: The PROV Data Model](https://www.w3.org/TR/2013/REC-prov-dm-20130430/) — W3C Recommendation, 30 April 2013, датированная неизменяемая публикация. HTTP `200` проверен перед написанием. Применение: терминологически отделить сущность, деятельность и происхождение записи от пересказа о якобы известном совете. Граница: не доказывает, что существовала статья, автор, совет, условие, противоречие или коррекция P117.
2. [NIST SP 800-128: Guide for Security-Focused Configuration Management of Information Systems](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-128.pdf) — NIST SP 800-128, August 2011, dated PDF; HTTP `200` проверен 2026-07-31. Применение: язык фиксированной конфигурационной основы и контролируемого изменения, ограничивающий будущий вопрос о версии/условии. Граница: не устанавливает фактическую конфигурацию, ревизию, тест, решение, владельца или результат.
3. [RFC 3339: Date and Time on the Internet: Timestamps](https://www.rfc-editor.org/rfc/rfc3339.html) — IETF RFC 3339, July 2002, immutable RFC. Применение: дисциплина точных фиксированных дат editor date, plan date и source cutoff. Граница: не подтверждает время события, публикацию, наблюдение либо hand-off.
### `editorial-2027-11-field-mistakes-revisions`
Все источники опубликованы не позднее cutoff и используются как vocabulary/boundary, не как результат пересмотра. В HTML каждой revision у ссылки указаны exact URL, версия/дата, применение и граница.
1. Факты и пример: до — hand-off вопроса о correction; после — `classifyIncidentSignal` с приоритетом 5xx/error rate над latency и отдельной проверкой. Причина: runbook требует наблюдаемого входа и порога.
2. Структура и голос: до — текст о будущей истории исправления; после — symptom, scope, hypothesis, одно обратимое действие, recovery criteria и ordered incident route. Причина: оператор должен получить следующий безопасный шаг.
3. Визуал и доступность: до — evidence hand-off loop; после — петля `Симптом → Гипотеза → Действие → Проверка` и остановка без verification. Причина: рисунок показывает закрытие цикла по метрике.
## Проход 1 — факты, структура и безопасность модели
## Источники и границы применения
- Три независимые M10 статьи начинаются с конкретной цены: обрезанный совет и лишний повторный поиск предпосылок; ложное опровержение из смены версии; фиктивная коррекция и ложная очередь.
- Practice отвечает, как сохранить claim вместе с assumption envelope; mechanism — как разделить version, condition, contradiction и repro boundary; field — как передать вопрос о возможной коррекции без verdict-а, owner-а или статуса завершения.
- Каждая статья содержит собственную таблицу, SVG с русскими `alt`/caption, исполнимый Node-пример с отдельным named fixed in-memory literal и нумерованный маршрут. Основной body без sources: **9 619 / 9 491 / 9 023** знака.
- `assessAdviceRevisionPlan` принимает только exact known fixed literals, ничего не читает и не пишет. Отсутствующая дата, unnamed claim, unnamed condition, mutable/unpinned evidence, injected repro result, declared correction/outcome закрываются explicit stop statuses. Fixture проверяет 9 веток, включая три допустимых плановых literals.
- [PostgreSQL 16 Documentation, Modifying Tables](https://www.postgresql.org/docs/16/ddl-alter.html), версия 16: DDL и ограничения операций; не заменяет проверку конкретного кластера.
- [RFC 9110](https://www.rfc-editor.org/rfc/rfc9110.html), июнь 2022 года: HTTP semantics и идемпотентность методов; не задаёт retry policy.
- [RFC 6585](https://www.rfc-editor.org/rfc/rfc6585.html), апрель 2012 года: 429 Too Many Requests; не выбирает задержку.
- [NIST SP 800-61r2](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-61r2.pdf), revision 2, май 2012 года: структура incident handling; не знает локальные пороги и права.
## Проход 2 — редактура, голос и независимость
- Голос 2025–2027: короткая прагматичная техническая речь, явная стоимость решения, comparison matrix и воспроизводимый способ остановиться. Нет универсального роста, вымышленного опыта и обещания результата.
- Future-only граница повторена смыслово, но не как общий ввод: practice работает с envelope утверждения; mechanism — с различающим вопросом и falsifiability; field — с передачей без назначения работы.
- Строгий scan исключил `Проверяемые источники`, но включил `<p>` и `<pre><code>`; он проверил exact normalised fragments длиной от 160 символов и 12-word n-grams. Сканированы **45** предыдущих статей P102–P116 и три P117-пары: **138** сравнений, `collisions: []`.
## Проход 3 — визуал, запуск и выпусковой preflight
## Проверки
- `node --check scripts/upgrade-2027-11.mjs` — PASS.
- `node scripts/upgrade-2027-11.mjs --verify-fixture` — **PASS fixture: 9/9 assertions**.
- `npm run audit:draft -- scripts/upgrade-2027-11.mjs` из `web/` — PASS для exact three slugs: **9 619 / 9 491 / 9 023** body chars. npm вывел существующие warnings о неизвестных user config `store-dir`, `cache-dir`, `public-hoist-pattern`; audit завершился успешно, warnings не относятся к P117.
- `xmllint --noout` для трёх SVG — PASS. SVG safety scan на `script`, event handlers, `javascript:`, `foreignObject`, `<image>` и external `href` — пустой/PASS.
- Sharp создал три PNG шириной **375 px**; ручной осмотр подтвердил читаемые заголовки, таблицу, подписи и отсутствие обрезания после переноса нижней красной строки timeline на две строки.
P117 заканчивается plan-only hand-off. Любая работа с реальным советом, источником, версией, contradiction, repro, correction, owner-ом или публикацией требует отдельного authorisation scope и не может быть задним числом добавлена в этот пакет.
## Независимое приёмочное ревью
- Повторно проверены первичные источники. PROV-DM подтверждает датированную W3C Recommendation 30 April 2013 и различение entity, activity и provenance; NIST SP 800-128 подтверждает название и публикацию August 2011; RFC 3339 подтверждает статус Standards Track, дату July 2002 и назначение формата timestamp. В P117 они служат только vocabulary и границей метода, а не доказательством существования старого совета или его исправления.
- Повторно выполнены `node --check`, fixture (**9/9**), `npm run audit:draft` и три runnable-примера. Они возвращают только fixed future-question literals и `synthetic-plan-hand-off`; реальный совет, текущая страница, воспроизведение или correction не создаются.
- Три SVG повторно прошли XML/safety scan и рендер Sharp на 375 px. На мобильной ширине читаемы дата/границы, матрица и независимый hand-off; красные stop-ветки не обрезаны и не накладываются на данные.
- Строгий duplicate scan P102–P117: **48 статей**, **1 128 парных сравнений**, sources исключены, code включён, common 12-word fragments — `[]`.
- Приёмочный verdict: **pass**. Пакет включён в registry как 353–355-й материал; production build и публикация выполняются после общей проверки интеграции.
- `node scripts/upgrade-2027-11.mjs --verify-fixture` — PASS, 9/9.
- `npm run audit:draft -- scripts/upgrade-2027-11.mjs` — PASS, 5592 / 5389 / 5381 body chars.
- `npm run audit:articles -- editorial-2027-11-practice-mistakes-revisions editorial-2027-11-mechanism-mistakes-revisions editorial-2027-11-field-mistakes-revisions` — PASS.
- `xmllint --noout` и SVG safety scan — PASS для трёх существующих assets.
- Ручная проверка Sharp 375 px выполнена после общего рендера; стрелки и подписи помещаются в canvas.