Files
progcode/editorial/reviews/2027-01-draft.md
T
huncode 32837c91e4
Build and deploy / deploy (push) Successful in 15s
revise January 2027 debugging plan articles
2026-07-31 20:09:30 +03:00

88 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# P107 — January 2027: «Десять лет web-диагностики»
## Статус, граница времени и scope
Редакторская дата: **31 июля 2026**. Январь 2027 ещё не наступил. Все три текста прямо обозначены как **план/сценарий на 2027-01** с source cutoff **2026-07-31**. Это не ретроспектива о завершённых десяти годах, не historical report и не описание реального incident.
Для P107 нет bug reports, logs, traces, repro, tool output, production incidents, customer data или historical artifacts. Очередь ожидает такие артефакты, но этот пакет их не создаёт и не имитирует. Термины из официальных источников отделены от synthetic модели: source говорит о формате или словаре, но не подтверждает конкретную web-систему, carrier, запись, причинность либо результат расследования.
Исполняемый пример принимает только named fixed in-memory literals. Factory выполняет JSON clone, затем deep freeze; evaluator принимает только JSON-равный известный literal и fail-closed закрывает всё остальное. Он не читает и не меняет сеть, browser, файлы, environment, clock, secrets, telemetry backend, external tools или production. Единственный допустимый положительный output — `synthetic-plan-hand-off` с `productionEffect: not-attempted`; root cause, fix, rollout, report, incident и любой положительный production conclusion запрещены.
Изменены только следующие файлы:
- `web/scripts/upgrade-2027-01.mjs`
- `editorial/reviews/2027-01-draft.md`
- `web/public/assets/editorial/2027/debugging-decade-2027-evolution-timeline.svg`
- `web/public/assets/editorial/2027/debugging-decade-2027-signal-tool-limit-table.svg`
- `web/public/assets/editorial/2027/debugging-decade-2027-hypothesis-evidence-loop.svg`
Registry, README, `articles.json`, app, очередь, P102–P106 и Git-state не менялись.
## Pinned primary sources и границы
1. [W3C Trace Context](https://www.w3.org/TR/2021/REC-trace-context-1-20211123/), W3C Recommendation, 23 November 2021. Использован только для терминологической границы стандартизированного propagation trace context. Не подтверждает trace, carrier, связь или причинность в P107.
2. [RFC 5424: The Syslog Protocol](https://www.rfc-editor.org/rfc/rfc5424), March 2009, DOI `10.17487/RFC5424`. Использован только для различения формата protocol message и фактической записи. Не создаёт log record, report или history.
3. [NIST SP 800-92: Guide to Computer Security Log Management](https://doi.org/10.6028/NIST.SP.800-92), September 2006, DOI `10.6028/NIST.SP.800-92`. Использован как общий контекст дисциплины provenance и log management. Не подтверждает сбор, retention, incident или расследование.
Все три источника первичные, pinned и не позднее cutoff. Имена fixed cases, статусы, правило «evidence не сильнее input», диаграммы, таблицы и safe hand-off — собственная synthetic модель P107, не вывод этих источников.
## Review pass 1 — три разных редакционных фокуса
- **Practice**: аккуратная карта от synthetic симптома к именованной гипотезе и planned signals. В первых двух абзацах названы ранний прыжок к причине и ретроспективный вымысел; цена — обратные изменения, шум и ложная память. Статья не предлагает универсальный метод и не приписывает историю конкретной команде.
- **Mechanism**: что не меняется между log, trace, metric и новым UI: named input, правило связи, альтернативное объяснение и предел силы вывода. В начале названа ложная причинность по id и цена — исключение не исключённых альтернатив. Отдельно разведены schema, поле, collector, время и evidence.
- **Field**: synthetic debugging hand-off без field artifact. В начале названа передача «причина подтверждена» без материала и цена — ложная операционная память. Таблица и схема описывают лишь форму будущей передачи; они не называют project, tool, person, incident, время или production effect.
- Голос M10: короткая прагматичная русская техническая речь наставника, с прямыми ограничениями и без обещания одного метода для всех систем.
## Review pass 2 — literal safety и temporal integrity
- Положительный `planned-handoff-v1` требует `planDate: 2027-01`, `sourceCutoff: 2026-07-31`, named symptom/hypothesis/signals и `evidence: synthetic-contract/input/not-collected`.
- `undated-scenario-v1` → `stop-undated-scenario-or-cutoff`.
- `unnamed-signal-v1` → `stop-unnamed-signal`; `unnamed-hypothesis-v1` → `stop-unnamed-symptom-or-hypothesis`.
- `evidence-stronger-than-input-v1` → `stop-evidence-stronger-than-input`: synthetic plan не может заявить `observed` или `claimed-collected` evidence.
- `positive-conclusion-v1` → `stop-disallowed-positive-conclusion`: `root-cause-confirmed` запрещён.
- Factory использует JSON clone и deep freeze, включая nested `signals`. Произвольный или изменённый input → `stop-unknown-fixed-input`. Допустимая ветка возвращает только `synthetic-plan-hand-off`, `productionEffect: not-attempted` и future evidence owner action.
## Review pass 3 — visuals, доступность, неповторяемость
- У каждого SVG есть русские `title` и `desc`, а у соответствующей статьи — русские meaningful alt и caption. Изображения содержат механизм: timeline с двумя stop, сравнительную таблицу пределов inference и loop hand-off.
- XML validation прошла для всех трёх SVG. Safety scan не нашёл `script`, `foreignObject`, `javascript:`, `data:image` или inline event handlers; внешних ссылок в SVG нет.
- Sharp создал три PNG шириной 375 px. Ручной visual inspection подтвердил: заголовки и подписи не обрезаны; practice сохраняет все четыре узла и два stop; mechanism читает все четыре строки таблицы и красные запреты; field сохраняет направления синей и красных стрелок и читаемые stop-блоки.
- Строгий pairwise scan исключал section sources, но включал code. Общих точных фрагментов по 12 слов: practice/mechanism `0`, practice/field `0`, mechanism/field `0`.
## Actual verification commands and results
Запущено из `web/`:
```sh
node --check scripts/upgrade-2027-01.mjs
node scripts/upgrade-2027-01.mjs --verify-fixture
npm run audit:draft -- scripts/upgrade-2027-01.mjs
node --input-type=module -e "import { createFixedDiagnosticCase, assessFixedDiagnosticPlan } from './scripts/upgrade-2027-01.mjs'; const ids=['planned-handoff-v1','undated-scenario-v1','unnamed-signal-v1','unnamed-hypothesis-v1','evidence-stronger-than-input-v1','positive-conclusion-v1']; for (const id of ids) console.log(id, assessFixedDiagnosticPlan(createFixedDiagnosticCase(id)).status); const accepted=assessFixedDiagnosticPlan(createFixedDiagnosticCase()); console.log('exports-frozen', Object.isFrozen(createFixedDiagnosticCase()), Object.isFrozen(createFixedDiagnosticCase().signals), accepted.productionEffect);"
xmllint --noout public/assets/editorial/2027/debugging-decade-2027-evolution-timeline.svg public/assets/editorial/2027/debugging-decade-2027-signal-tool-limit-table.svg public/assets/editorial/2027/debugging-decade-2027-hypothesis-evidence-loop.svg
! rg -n -i "<(script|foreignObject)\\b|javascript:|data:image|(?:^|[[:space:]])on[a-z]+=" public/assets/editorial/2027/debugging-decade-2027-evolution-timeline.svg public/assets/editorial/2027/debugging-decade-2027-signal-tool-limit-table.svg public/assets/editorial/2027/debugging-decade-2027-hypothesis-evidence-loop.svg
node --input-type=module -e "import sharp from 'sharp'; for (const n of ['debugging-decade-2027-evolution-timeline','debugging-decade-2027-signal-tool-limit-table','debugging-decade-2027-hypothesis-evidence-loop']) await sharp('public/assets/editorial/2027/'+n+'.svg').resize({width:375}).png().toFile('/private/tmp/'+n+'-375.png');"
node --input-type=module -e "import { revisions } from './scripts/upgrade-2027-01.mjs'; const text=h=>h.replace(/<h2>Проверяемые источники<\\/h2>[\\s\\S]*/, '').replace(/<[^>]+>/g,' ').replace(/&(?:quot|amp|lt|gt|#039);/g,' ').toLowerCase().replace(/[^a-zа-яё0-9]+/giu,' ').trim().split(/\\s+/); const grams=a=>new Set(a.slice(0,-11).map((_,i)=>a.slice(i,i+12).join(' '))); for (let i=0;i<revisions.length;i++) for(let j=i+1;j<revisions.length;j++){const left=text(revisions[i].contentHtml), right=text(revisions[j].contentHtml), common=[...grams(left)].filter(x=>grams(right).has(x)); console.log(revisions[i].slug+' <> '+revisions[j].slug, 'shared-12-word-fragments='+common.length); if(common.length) console.log(common.join('\\n'));}"
```
Results:
- Syntax: PASS (`node --check` exit 0).
- Fixture and article guard: PASS `9/9`; fixture `6/6`; all three article checks `true`.
- Article volumes: practice `9,066`, mechanism `9,041`, field `9,238` body characters; all are within the required 5,000–15,000 range and the 9–13k target.
- `npm run audit:draft`: three PASS lines, one per exact required slug.
- Public literal exports: PASS. Six status results exactly matched their expected branches; `exports-frozen true true not-attempted`.
- `xmllint`: PASS with no output. SVG safety: PASS, `rg` found no forbidden content. Sharp render: PASS for all three outputs; all three 375 px PNG files were visually inspected.
- Pairwise duplicate scan: PASS, `shared-12-word-fragments=0` for all three pairs, with code included and sources excluded.
The only non-failing command output was the existing npm warning about unknown user config (`store-dir`, `cache-dir`, `public-hoist-pattern`); it did not affect the audit result.
## Независимая приёмка основного редактора — 31.07.2026
Принято только как **плановый выпуск на январь 2027**. Названы `2027-01` и cutoff `2026-07-31`; нет вымышленной декады, incident, log, trace, repro или production-вывода. Positive output не сильнее `synthetic-plan-hand-off` c `productionEffect: not-attempted`.
W3C Trace Context заменён на датированную Recommendation 23.11.2021, чтобы ссылка не указывала на изменяемую current-страницу. RFC 5424 и NIST SP 800-92 остаются первичными источниками формата и log-management vocabulary; все три источника используются только для терминов, не для доказательства route, carrier, записи или причинности P107.
Повторные проверки: syntax; fixture/guard `9/9` (fixture `6/6`); draft audit с объёмами 9 266 / 9 041 / 9 238; XML и SVG safety-scan. Literal exports подтвердили все six expected branches, включая `stop-unnamed-signal`, `stop-unnamed-symptom-or-hypothesis`, `stop-evidence-stronger-than-input` и `stop-disallowed-positive-conclusion`. Sharp PNG трёх SVG осмотрены на 375 px: подписи, строки таблицы, arrows и stop labels читаемы. После замены формата practice snippet строгий cross-package scan 18 статей августа 2026 — января 2027 дал `collisions: []`.
В registry добавлены только три январские ревизии. Пользовательские application-файлы, `articles.json`, production queue и прочая незакоммиченная работа не входят в приёмку.