Исторический документ. Перевод сверяется с оригиналом в ревизии 61e75e9 (английский). Проверки выполнены 2026-09-26; указанные временные файлы и хеши относятся к тому запуску и не подтверждают текущую версию.

Приёмка просмотрщика в браузере, 2026-09-26

Приёмка в браузере пройдена по ручной проверке 2026-09-26. Пользователь открыл оба созданных локальных HTML-файла и подтвердил все четыре запрошенных сценария: отзывчивый поиск, выбор, прокрутку, граф и прямую ссылку #c-0999 на 1,000 концептах; поиск и фильтры типов на малом наборе; длинный русский заголовок, текст и блок Go при узкой ширине; переходы #missing/#russian при отсутствующих метаданных и графе. Пользователь сообщил, что большая страница реагировала мгновенно, и приложил к сообщению о результатах четыре снимка экрана. На снимках видны выбранные состояния; взаимодействия и отзывчивость подтверждены явным сообщением пользователя, а не выводом из неподвижных изображений.

Политика URL для управления браузером отклонила доступ агента к локальным страницам file:// и запретила обход через другой URL или другой браузерный интерфейс. Агент не управлял страницей. Эта ручная приёмка фиксирует наблюдения пользователя и отделяет их происхождение от автоматических проверок.

Воспроизведение созданного файла из корня репозитория:

go run ./cmd/okf view knowledge --output /private/tmp/okf-viewer-009-knowledge.html --overwrite
shasum -a 256 /private/tmp/okf-viewer-009-knowledge.html

В той рабочей копии CLI напечатал wrote "/private/tmp/okf-viewer-009-knowledge.html". Размер файла — 49,302 байта, SHA-256 — 4efd1697e0002d09cbcae1104778b991b38f2c4dd1855857c0bf059454dee6a6.

Исполняемые проверки, доступные без браузера, прошли:

go test ./viewer -run 'Test(LargeBundleUsesBoundedListLayout|UnicodeConceptIDAndMissingMetadata)' -count=1 -v
go test ./viewer ./internal/okfcli -run 'Test(RenderEscapesScriptAndMarkdownHTML|BuildLinksLimitsAndReferenceTime|View)' -count=1 -v

Первая команда проверяет проекцию с 1,001 концептом, отклонение при ограничении 1,000 узлов, идентификаторы Unicode и отсутствие метаданных. Вторая проверяет малый набор, экранирование и экспорт CLI. Эти проверки на уровне Go дополняют ручную приёмку в браузере.

Файлы, подготовленные для ручной проверки

Ещё два экспорта доступны без запуска браузера здесь:

Файл Содержимое Байты SHA-256
/private/tmp/okf-viewer-009-small.html Три концепта (russian, missing, other) 14,040 88be4465becdd10d8a69a6765c5593a473ef1e0dac2a4634330ea18c93ba4cce
/private/tmp/okf-viewer-009-1000.html Ровно 1,000 концептов Note 285,716 11b9d91d0abfc7702526c3490325b4d95cb42bce09774713e215dd58c05b1bad

Исходные наборы находятся в /private/tmp/okf-viewer-009-small-bundle и /private/tmp/okf-viewer-009-large-bundle. Они экспортированы командами:

go run ./cmd/okf view /private/tmp/okf-viewer-009-small-bundle --output /private/tmp/okf-viewer-009-small.html --max-nodes 10 --overwrite
go run ./cmd/okf view /private/tmp/okf-viewer-009-large-bundle --output /private/tmp/okf-viewer-009-1000.html --max-nodes 1000 --overwrite

Экспорт большого набора с --max-nodes 999 завершился ошибкой bundle has 1000 concepts; exceeds --max-nodes=999 и не создал /private/tmp/okf-viewer-009-overlimit.html.

Ручная приёмка в браузере прошла по следующим шагам:

  1. Выбрать russian. Убедиться, что длинный русский заголовок переносится в пределах списка и панели подробностей при узком окне, абзац кириллицей отображается, а ограждённый блок Go сохраняет переносы строк и отступы.
  2. Найти проверяшка; список должен показывать только russian. Очистить поиск, выбрать тип Decision; должен остаться только other. Сменить тип на Architecture Note; должен остаться только russian.
  3. Очистить фильтры. Открыть /private/tmp/okf-viewer-009-small.html#missing напрямую. В выбранной карточке должны отображаться идентификатор/заголовок missing, type unknown, No sources recorded. и отсутствующие значения жизненного цикла. Нажать ссылку назад; фрагмент URL и выбранная карточка должны смениться на #russian. Перейти по ссылке обратно к missing.
  4. Переключить Show graph и убедиться, что карточка остаётся читаемой, а локальная схема связей отображается, не блокируя список.
  5. Открыть с диска HTML с 1,000 концептами. Найти Concept 0999, выбрать его, очистить поиск и прокрутить список. Убедиться, что страница остаётся отзывчивой; включить граф концепта и убедиться, что не выполняется силовая раскладка всего набора. Открыть #c-0999 напрямую и проверить, что загрузился нужный концепт.

Подписи английского интерфейса в обратных кавычках выше сохранены дословно: это условия исторического теста.

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

Снимок экрана Что на нём видно
Большая страница Выбранный c-0999, результат поиска и локальный граф
Малая страница, other Выбранный other, метка Decision и список малого набора
Малая страница, russian Узкая раскладка, длинный заголовок кириллицей, русский текст, сохранённый блок Go и ссылка
Малая страница, missing missing, type unknown, сообщение об отсутствии источника и ссылка перехода

Сами снимки не доказывают смену фильтров, перезагрузку по прямым ссылкам, отзывчивость прокрутки или время реакции; эти сведения взяты из ручного отчёта пользователя. Отклонение при ограничении 999 узлов подтверждено приведённой выше проверкой CLI.