# P115 — September 2027: «Серия для инженера, который растёт» ## Статус и граница Редакторская дата: **2026-07-31**. Период 2027-09 ещё не наступил; пакет является только **plan/scenario** с source cutoff **2026-07-31**. Он не сообщает о реальной учебной программе, репозитории, mentee, упражнении, review, feedback, прогрессе, owner, очереди или production effect. Модуль принимает только named fixed in-memory literals. Он не читает files, network, environment, clock, secrets, telemetry, system или data и не создаёт учебный процесс. Единственный accepted evaluator output — `synthetic-plan-hand-off`; в accepted и stop output всегда `productionEffect: not-attempted`. ## Проход 1 — facts / temporal / voice | Статья | Body chars без sources | Угол | Временная граница | Источники и boundary | | --- | ---: | --- | --- | --- | | `editorial-2027-09-practice-mentor-series` | 9 227 | ситуация → synthetic prompt → критерий наблюдения | 2026-07-31 / 2027-09 / cutoff 2026-07-31 | RFC 2119 (March 1997) и RFC 8174 (May 2017), immutable IETF RFC; только нормативная лексика literal, не доказательство обучения | | `editorial-2027-09-mechanism-mentor-series` | 9 169 | skill map, review loop, deliberate practice и falsifiability | та же | те же URL/version/date; не создают review, feedback, participant или model of learning | | `editorial-2027-09-field-mentor-series` | 9 249 | hand-off самостоятельности и evidence без narrative | та же | те же URL/version/date; не назначают owner, процесс или персональную оценку | - Оба URL проверены `curl -I`: RFC 2119 и RFC 8174 вернули HTTP 200. Это первичные immutable RFC до cutoff. - Первые два абзаца каждой статьи называют конкретную проблему и цену ошибки. У каждой статьи отдельные таблица, SVG, runnable safe example, упорядоченные действия, ограничения и следующий шаг. - Голос 2025–2027: прагматичный техлидский разбор границ и стоимости. Нет общего мотивационного призыва, заявленного результата или фальшивого опыта. Deliberate practice используется только как ограничитель рассуждения, не как доказанная модель обучения. - Фактологический verdict: **pass**. Temporal verdict: **pass**. Voice verdict: **pass**. ## Проход 2 — literal safety / fail closed `mentor-series-plan-v1` принят только как `synthetic-plan-hand-off`. Factory делает JSON clone и recursive deep freeze; evaluator сравнивает input с known fixed literal. Неизвестный object не нормализуется. | Literal | Ожидаемый результат | Фактический результат | | --- | --- | --- | | `mentor-series-plan-v1` | `synthetic-plan-hand-off` | pass | | `mentor-series-undated-v1` | `stop-temporal-boundary-required` | pass | | `mentor-series-implicit-skill-v1` | `stop-unnamed-or-implicit-skill` | pass | | `mentor-series-invented-review-v1` | `stop-invented-observation-review-feedback-or-progress` | pass | | `mentor-series-invented-feedback-v1` | `stop-invented-observation-review-feedback-or-progress` | pass | | `mentor-series-invented-outcome-v1` | `stop-invented-observation-review-feedback-or-progress` | pass | | `mentor-series-invented-owner-v1` | `stop-invented-autonomy-owner-or-process` | pass | - Unnamed/implicit skill не допускается; `skillMap` и `exercise` обязаны быть exact named synthetic literals. - Claimed observation, review, feedback, progress и outcome останавливаются. `autonomy: not-evaluated`, `recipient: not-assigned` и `process: not-created` не получают fallback. - Fixture: **10/10** — 7/7 literal statuses и 3/3 article checks. `productionEffect: not-attempted` не является наблюдением о production. - Safety/fail-closed verdict: **pass**. ## Проход 3 — visual / mobile / a11y / safety + strict duplicate scan - Каждый SVG содержит русские `title` и `desc`; каждая статья содержит отдельные русские `alt` и `figcaption`. SVG поясняют контракт карты, матрицу review и петлю hand-off, а не выступают декоративной иллюстрацией. - `xmllint --noout` прошёл для трёх assets. Safety scan на `script`, `foreignObject`, `javascript:`, `data:image` и event-handler attributes — empty/pass. - Sharp создал 3 PNG `375x225`; они открыты вручную. На mobile читаемы: карта удерживает три состояния и stop, matrix — все три колонки и пять строк, hand-off — четыре gate и красный stop. Обрезаний или наложений не обнаружено. - `npm run audit:draft -- scripts/upgrade-2027-09.mjs` — pass по трём exact slug и lengths 9 227 / 9 169 / 9 249. - Строгий duplicate scan исключал section `Проверяемые источники`, но включал `

` и `

`; runnable code участвовал. Прочитаны P102–P114: 39 prior articles, 120 comparisons (117 current-to-prior + 3 внутрипакетные), `hits: []`; совпадений exact paragraphs длиной 160+ и common 12-word fragments нет.
- Visual/mobile/a11y/safety verdict: **pass**. Duplicate scan verdict: **pass**.

## Фактически выполненные команды

```sh
cd web
node --check scripts/upgrade-2027-09.mjs
node scripts/upgrade-2027-09.mjs --verify-fixture
npm run audit:draft -- scripts/upgrade-2027-09.mjs
xmllint --noout public/assets/editorial/2027/mentor-series-2027-skill-map-contract.svg public/assets/editorial/2027/mentor-series-2027-practice-review-matrix.svg public/assets/editorial/2027/mentor-series-2027-autonomy-handoff-loop.svg
rg -n -i '<(script|foreignObject)\b|javascript:|data:image|(?:^|[[:space:]])on[a-z]+=' public/assets/editorial/2027/mentor-series-2027-skill-map-contract.svg public/assets/editorial/2027/mentor-series-2027-practice-review-matrix.svg public/assets/editorial/2027/mentor-series-2027-autonomy-handoff-loop.svg
node --input-type=module -e 'import sharp from "sharp"; /* three SVG → 375px PNG */'
curl -I https://www.rfc-editor.org/rfc/rfc2119.html
curl -I https://www.rfc-editor.org/rfc/rfc8174.html
```

## Disposition

Изменены только пять разрешённых файлов P115:

- `web/scripts/upgrade-2027-09.mjs`
- `editorial/reviews/2027-09-draft.md`
- `web/public/assets/editorial/2027/mentor-series-2027-skill-map-contract.svg`
- `web/public/assets/editorial/2027/mentor-series-2027-practice-review-matrix.svg`
- `web/public/assets/editorial/2027/mentor-series-2027-autonomy-handoff-loop.svg`

Registry, README, очередь, `articles.json`, app и чужие пакеты не изменялись этой работой. Git не использовался.

## Независимое приёмочное ревью

- Первичные источники повторно открыты 2026-07-31: RFC 2119 подтверждает статус BCP и дату March 1997, RFC 8174 — статус BCP, дату May 2017 и уточнение смысла заглавных ключевых слов. В статьях они применены только к точности требований к literal; они не используются как источник об обучении или оценке человека.
- Повторно выполнены `node --check`, fixture (**10/10**), `npm run audit:draft` и три runnable-примера. Проверены их фактические outputs: они выводят только synthetic literals и `synthetic-plan-hand-off`; внешнего ввода и побочных действий нет.
- Три SVG прошли XML/safety scan и открыты после рендера Sharp в ширине 375 px. Текст, стрелки, stop-ветки и подписи читаемы; декоративных или небезопасных элементов нет.
- Строгий повторный duplicate scan P102–P115: **42 статьи**, **861 сравнение**, sources исключены, code включён, common 12-word fragments — `[]`.
- Приёмочный verdict: **pass**. Пакет включён в registry как 347–349-й материал; production build и публикация выполняются после общей проверки интеграции.