Проблема возникает тихо: в статье уже есть пять ссылок, но ни одна не отвечает, какая версия прочитана, что именно в ней наблюдалось и какой вывод из этого допустим. Цена такой экономии — решение, привязанное к изменившейся странице, спор о пересказе и повторная проверка прямо перед выпуском, когда контекст уже потерян.
Собирать закладки недостаточно. Нужен журнал утверждений: маленькая карточка, где отдельны фраза, область действия, первоисточник, версия или неизменяемый pin, точное наблюдение и статус. Проверка проста: другой инженер открывает карточку и видит, что подтверждено буквально, а что ещё надо исследовать. Действие — начинать не с поиска «лучшей ссылки», а с одного проверяемого предложения.
Что именно считаем утверждением
Утверждение — не тема и не URL. «HTTP умеет валидаторы» слишком широко: из него нельзя понять, о какой операции или представлении идёт речь. Рабочая формулировка уже содержит объект и границу: «в fixed source-card поле ETag относится к выбранному представлению fixed-v4». Она скромна, зато её можно сопоставить с источником, тестом или фрагментом документа. Если фразу нельзя опровергнуть изменением одного поля, это обычно не утверждение, а лозунг.
В реальной статье объектом будет релиз, API-ответ, PDF или спецификация. В этом пакете объектов извне нет: все карточки заранее заданы JavaScript literals в памяти. Это сделано намеренно. Метод проверяет форму исследовательской записи, а не имитирует доступ к сети, Git, CI, людям, данным продукта или телеметрии. Положительный результат означает лишь готовность synthetic hand-off, а не правильность чьего-либо production-решения.
| Поле | Вопрос | Пример fixed fixture | Ошибка без поля |
|---|---|---|---|
| statement | что именно сказано? | validator относится к fixed-v4 | пересказ вместо факта |
| scope | где это верно? | одна synthetic card | вывод расширяют на систему |
| source pin | какую версию открывали? | rfc-9110-june-2022 | страница могла измениться |
| locator | где лежит факт? | §8.8.3 | нельзя быстро перепроверить |
| observation | что увидели буквально? | ETag: "fixed-v4" | ссылка подменяет наблюдение |
| status | что разрешено дальше? | hand-off-with-scope | неизвестное проходит как факт |
Сначала зафиксировать источник, потом читать вывод
Версия — это не украшение в сноске. Она связывает вывод с конкретным представлением документа: датированным RFC, tagged release, опубликованным PDF или архивной копией до даты статьи. URL без версии остаётся маршрутом, но не идентификатором прочитанного текста. Даже HTTP-валидатор не спасает от этой путаницы: RFC 9110 определяет ETag как непрозрачный validator выбранного представления. Он помогает различать представления, но не сообщает читателю, какая продуктовая семантика обещана между версиями.
Поэтому в журнале полезно хранить два разных поля. sourcePin отвечает на вопрос «какую публикацию можно снова открыть». observedArtifact отвечает на вопрос «что именно из неё использовано». В примере pin — имя датированного RFC, а artifact — fixed literal ETag: "fixed-v4". Если заменить одно другим, появится ложная точность: hash или дата выглядят солидно, но не объясняют, почему именно этот фрагмент поддерживает фразу автора.
Исполняемая карточка вместо ручной уверенности
import { createFixedResearchRecord, assessFixedResearchRecord, createFixedResearchLog } from './upgrade-2025-11.mjs';
const record = createFixedResearchRecord('pinned-representation-v1');
const report = assessFixedResearchRecord(record);
const log = createFixedResearchLog(record);
console.log({ status: report.status, pin: log.sourcePin, artifact: log.observedArtifact });
// { status: 'evidence-ready-for-synthetic-hand-off', pin: 'rfc-9110-june-2022', artifact: 'ETag: "fixed-v4"' }
Этот фрагмент импортирует только публичные exports модуля. Он не делает запрос и не использует часы; вся проверка — сравнение заранее заданной карточки с набором правил. Принятый статус не говорит, что «источник истинный». Он говорит намного уже: у одной synthetic записи есть pin, область, наблюдаемый artifact и отсутствие известных в fixture причин остановить hand-off. Такая узость полезна: следующий редактор знает, что ему не нужно заново угадывать основу фразы.
Отделить маркетинговое обещание от исследовательского шага
Фраза «метод делает каждое утверждение надёжным» может находиться на красивой странице и быть добросовестным описанием намерения. Для журнала это всё равно marketing promise. В ней нет объекта проверки, метода, контекста и условия неуспеха. Рядом с ней можно записать только наблюдение о тексте: «в fixed copy r1 есть слова trust every claim». Нельзя переписать её как результат измерения или как гарантию качества будущего исследования.
Это различие не требует цинизма к источнику. Оно сохраняет полезную роль обещания: маркетинговая формулировка может подсказать гипотезу или термин для поиска. Но status должен остановить её до тех пор, пока не появится первичный материал с версией, локатором и наблюдаемым фактом. Такой стоп дешевле поздней переписки «мы же дали ссылку»: команда видит, что спорит не о доверии к бренду, а о недостающем типе evidence.
Шесть шагов перед публикацией
- Выписать одно предложение. Убрать слова «лучше», «быстрее» и «надёжно», пока не появится объект и условие.
- Назвать границу. Зафиксировать версию, релиз, PDF, commit или архивную копию, которая существовала к дате статьи.
- Записать locator. Оставить section, таблицу, endpoint или номер примера, а не только корневой URL.
- Сохранить наблюдение. Пересказать или процитировать минимальный факт своими словами без расширения результата.
- Поставить status. Разрешить hand-off, запросить первичный материал либо остановить marketing promise.
- Назвать следующий шаг. Указать, что проверит другой человек, а не скрывать неизвестное в общем выводе.
Как журнал переживает изменение документа
Страница может поменять структуру, автора и даже вывод без редиректа. Журнал не обещает предотвратить это изменение. Он делает устаревание видимым: у записи есть именно тот pin, на который опирался текст. При пересмотре новой версии не нужно сканировать весь материал. Достаточно взять строку claimId, открыть закреплённый источник, сравнить locator и решить: подтвердить прежнее утверждение, сузить scope или вернуть статус в hold.
Важен порядок действий. Не заменяйте старый pin новым молча. Сначала сохраните, что старая карточка подтверждала на своей временной границе; затем заведите новую карточку для нового представления. Иначе история исследования превращается в один current URL, который не объясняет, почему прошлый материал был написан именно так. Для автора M8 это не архивная педантичность, а способ дешево локализовать влияние обновления.
| Статус | Что уже есть | Чего нет | Следующее действие |
|---|---|---|---|
| evidence-ready-for-synthetic-hand-off | pin, scope, observation | обобщение на production | передать с границей |
| repair-source-pin | текст и ссылка | версия или immutable reference | найти первичную публикацию |
| hold-claim | часть контекста | достаточная связь факта и вывода | сузить statement |
| stop-unknown-fixed-record | произвольный объект | проверяемый fixture | вернуться к named record |
Ограничение метода и следующий эксперимент
Журнал не заменяет рецензию, юридическую проверку, предметную экспертизу или эксперимент. Он не вычисляет доверие к издателю и не превращает одну техническую спецификацию в доказательство работы конкретного продукта. Его действие гораздо уже: не дать версии, наблюдению, claim и обещанию слиться в одно поле «ссылка». Если для фразы нужно измерение, в карточке должно появиться отдельное описание метода и данных; в этом synthetic пакете таких данных нет.
Начните с трёх самых дорогих утверждений в ближайшей статье: тех, от которых зависит выбор API, ограничение безопасности или причина изменения архитектуры. Для каждого сделайте одну строку журнала. Если строка не помещается в короткую форму, вопрос пока слишком широкий. Сначала сузьте формулировку, затем ищите дополнительный источник. Так публикация получает не больше ссылок, а меньше неявных переходов от прочитанного текста к решению.
Проверяемые источники
- W3C PROV-DM: The PROV Data Model — версия: W3C Recommendation, 30 April 2013, dated immutable publication. PROV-DM даёт словарь entity и activity; здесь он помогает раздельно назвать источник и действие его проверки. Граница: Модель происхождения не подтверждает истинность технического claim сама по себе.
- RFC 9110: HTTP Semantics, §8.8 validator fields — версия: RFC 9110, June 2022, immutable RFC publication. RFC фиксирует ETag как opaque validator выбранного representation; это опора для различения представления и смыслового вывода. Граница: HTTP validator не равен версии продукта и не устанавливает факт вне полученного representation.
- W3C Verifiable Credentials Data Model v2.0 — версия: W3C Recommendation, 15 May 2025, dated immutable publication. Recommendation прямо разделяет криптографическую verification и оценку truth of claims. Граница: Документ не задаёт готовый research log для веб-страниц или решение о публикации.