Кратко

  • RFC 5385 описывал шаблон Word, у которого предварительный просмотр и печать могли построчно и постранично совпадать с допустимым ASCII, однако итоговый текст создавался через ограниченный набор стилей, текстовый драйвер и Perl-постпроцессор.
  • Одинаковый вид подтверждает конкретное отображение, но не тождество источника и не сохранность семантики. Современная политика RFC отделяет definitive version в RFCXML от publication versions в HTML, plain text и PDF и сохраняет историю переизданий.

Инцидент без видимого изменения

Организация обновляет средство генерации документов. Контрольные PDF сравнивают по страницам: заголовки на месте, строки почти не сдвинулись, таблицы целы. Новые файлы заменяют старые. Через месяц выясняется, что один идентификатор теперь ведёт на другую цель, а описание рисунка исчезло. На глаз переиздание было успешным; по смыслу — нет.

RFC 5385 не описывает такой инцидент и не утверждает, что он случался с RFC. Но документ даёт точную модель, позволяющую увидеть риск. Это Informational Independent Submission 2010 года о второй версии шаблона Microsoft Word для Internet-Drafts и RFC. Шаблон позволял работать в режиме структуры и видеть страницу, близкую к RFC-совместимому ASCII.

Сам ASCII при этом создавался отдельно. Документ печатали через Generic/Text Only в файл .prn, после чего Perl-программа убирала CR, заменяла типографские кавычки и дефисы, очищала промежутки между нижним и верхним колонтитулами, добавляла form feed и проверяла недопустимые символы.

На одном экране результат мог выглядеть предсказуемо. Внутри существовали разные артефакты и преобразование, способное влиять на содержание.

Стиль сохранял поведение, а не только оформление

В RFC 5385 были переопределены Normal, Heading1–Heading9, Header, Footer и Caption, а также добавлены стили для рисунков, списков, ссылок и приложений. Использовать посторонние стили считалось критической ошибкой.

Такое ограничение было нужно для outline mode: разделы можно было повышать и понижать, после чего нумерация менялась автоматически. Строка, вручную сделанная крупной и жирной, могла выглядеть заголовком, но не участвовать в структуре.

Здесь проходит граница между пикселями и смыслом. Цветная подчёркнутая фраза не обязательно является ссылкой. Текст внутри изображения не становится доступным текстом. Набор пробелов не превращается в таблицу для вспомогательных технологий.

Поэтому при повторной публикации недостаточно сравнить картинки страниц. Нужно извлечь и сопоставить дерево заголовков, порядок чтения, ссылки, идентификаторы, альтернативные описания, ссылки на литературу и нормативные слова. Визуальный тест отвечает за представление; структурный — за то, что система фактически сохранила.

Постпроцессор менял документ без авторской подписи

Замена «умной» кавычки на ASCII обычно не меняет смысл. Но правило, которое допустимо для английской пунктуации, может быть опасно для имени, формулы или идентификатора. Удаление строк, принятых за колонтитул, тоже требует правильного распознавания границы страницы.

Преобразователь не формулирует тезис, однако решает, какие байты сохранить, заменить или отклонить. Это техническое редакционное действие. RFC 5385 публиковал код в приложении и тем самым делал правила обозримыми. Но конкретный запуск всё равно требовал отдельного свидетельства.

Нужно сохранять хэш утверждённого источника, точную версию шаблона и программы, параметры, среду, предупреждения, код завершения и хэши результатов. Если дата или служебный идентификатор заведомо меняются, такие поля следует заранее исключить из побайтовой проверки и отдельно сравнивать семантику.

Фраза «использован официальный конвертер» не связывает вход с выходом. Для этого нужен журнал конкретного запуска.

Неизменное название скрывало меняющийся шаблон

В разделе безопасности RFC 5385 сказано, что разработанный и распространявшийся шаблон не содержал макросов. Автор рассматривал возможность включить MD5 для .dot и .pl, но шаблон обновлялся вслед за обязательным boilerplate. Поэтому его актуальная контрольная сумма публиковалась рядом с внешним файлом, а не навсегда внутри RFC.

MD5 здесь — историческая деталь, а не современная рекомендация. Значим конфликт жизненных циклов: стабильный RFC объяснял изменяемый рабочий объект. Название шаблона не указывало на единственный набор байтов.

Так же ведут себя «типовой договор», «утверждённый отчёт» и «актуальная форма». Имя остаётся, содержимое перезаписывается. Если созданный документ не сохранил версию, позже нельзя доказать, какие условия действовали.

Изменяемому шаблону нужны release ID, хэш, дата действия, владелец и журнал изменений. Выход должен хранить эту связь. Автоматически вставленный обязательный текст проверяется после подстановки, потому что одобрение шаблона не гарантирует правильность каждого применения.

Ссылки ломались только после следующего шага

Предыдущая версия шаблона хранила библиографию в endnotes. По RFC 5385, удаление первого цитирования могло удалить саму ссылку, даже если последующие перекрёстные ссылки оставались. Новая версия использовала нумерованные абзацы в основном тексте и bookmarks для меток автор–год.

До правки обе страницы могли выглядеть одинаково. После удаления одной цитаты поведение расходилось. Статичный образец не проверял устойчивость модели.

Приёмочные испытания должны менять документ: переносить раздел, удалять первое цитирование, добавлять приложение, заменять подпись рисунка, пересобирать оглавление и все форматы. Надёжность — это сохранение инвариантов при обычных действиях, а не красота одного примера.

Поздняя политика отделила основу от её отображений

RFC 6949 сформулировал потребности, которые уже не покрывал один ASCII: доступность, метаданные, рисунки, международные символы и разные устройства. RFC 7990 предложил новую модель форматов. В 2025 году RFC 9720 заменил его и уточнил терминологию.

RFCXML назван definitive format, опубликованный в нём RFC — definitive version. HTML, plain text и PDF являются publication formats, а конкретные файлы — publication versions. Definitive version содержит всю предназначенную для RFC информацию и служит источником ответа на вопрос о публикационном замысле.

Эти термины нельзя задним числом присвоить Word-файлу 2010 года. Связь заключается в разделении ролей. RFC 5385 практически показывал различие авторской среды, преобразования и выхода. RFC 9720 позже закрепил, какой уровень хранит смысл и как производные версии обслуживают читателей.

Организации нужна такая же ясность. База данных, структурированный файл, подписанный PDF и веб-страница могут быть официальными представлениями, но при расхождении должен существовать один заранее определённый источник решения.

Переиздание с памятью, а не поверх памяти

RFC 9720 разрешает ограниченное переиздание при исправлении XML или изменении инструментов, требует максимально сохранять семантику, публично фиксировать причину и оставлять прежние definitive и publication versions доступными.

Полный запрет изменений плохо совместим с долгим сроком жизни. Старые форматы теряют поддержку, ошибки рендеринга обнаруживаются, требования доступности растут. Но тихая замена ещё хуже: она уничтожает возможность различить исправление и переписывание.

Для каждого переиздания нужны старый и новый источник, все старые и новые выходы, хэши, версии средств, семантическое сравнение, причина, дата и утверждающий. Только новая копия без старой — не история версий.

Действующий RFC 9920 также разделяет создание и одобрение политики с реализацией в RFC Production Center и явно назначает ответственность за инструменты. Тот, кто поддерживает рендерер, отвечает за надёжность, но не получает скрытого права менять смысл.

Испытание, которое обнаружит невидимое переиздание

Подготовьте источник с не-ASCII именами, несколькими уровнями заголовков, ссылками, кодом, таблицей, рисунком с описанием и сложными границами страниц. Зафиксируйте источник и версию шаблона. Соберите все форматы в чистой среде с журналами и хэшами.

Сравните не только страницы, но и извлечённую структуру. Повторите сборку в другой среде. Измените один смысловой элемент и убедитесь, что он ожидаемо проходит во все версии. Затем измените только правило представления и проверьте, что смысловая выборка стабильна.

Сымитируйте переиздание, не удаляя старый комплект. Независимый проверяющий должен определить authoritative artifact и восстановить происхождение каждого публичного файла. Если он может лишь сказать, что страницы похожи, проверка остановилась до самого важного вывода.

Источники