Files
progcode/editorial/reviews/2025-03-draft.md
T
huncode 249dd850a4
Build and deploy / deploy (push) Successful in 16s
revise March 2025 knowledge retrieval articles
2026-07-31 17:26:30 +03:00

16 KiB
Raw Blame History

P85 — март 2025: поиск по инженерной базе знаний

Область draft-пакета

Пакет заменяет только три overlay-статьи:

  • editorial-2025-03-practice-knowledge-retrieval — «Поиск по инженерной базе: источник важнее уверенного пересказа».
  • editorial-2025-03-mechanism-knowledge-retrieval — «Почему vector score не делает документ доказательством».
  • editorial-2025-03-field-knowledge-retrieval — «Когда поиск обязан остановиться: нет цитаты — нет ответа».

Единственный исполняемый артефакт — web/scripts/upgrade-2025-03.mjs. Все records, scores, labels доступа, timestamps, expiry, URI, anchors, excerpts, reports, citations и decisions внутри него являются fixed synthetic in-memory значениями. Скрипт не читает и не пишет files, Git, network, CI, clock, telemetry, production, user data и не выполняет external search. Его synthetic:// citations не выданы за реальные документы.

Пакет не меняет registry, README, очередь, articles.json, app-страницы, staging, commit, push или full build. Это самостоятельный draft для последующей интеграции.

Исследование и историческая граница

Проверка URL выполнена 31.07.2026 обычными HTTPS-запросами curl -L --fail / curl -I -L --fail, без TLS bypass и без авторизации. Текущая доступность не подменяет историческую дату: для каждого источника ниже есть версия, RFC или immutable commit, существовавшие до марта 2025.

Источник Историческое закрепление Узко подтверждаемое утверждение Граница утверждения
OpenSearch k-NN README tag 2.15.0.0, immutable commit 150c589849a8ec3bc442d830b43a3eaf4e25fa0c, commit date 12.06.2024 k-NN предназначен для nearest-neighbor similarity search; README упоминает filters для уточнения similarity search. Не подтверждает истинность claim, свежесть source, право reader на fragment, полноту corpus или качество конкретного ranker.
RFC 9110, §8.8.2 IETF Standards Track RFC, June 2022 Last-Modified сообщает время, в которое origin server считает selected representation изменённым; способ вычисления остаётся implementation detail. HTTP metadata не доказывает semantic correctness текста, owner, права доступа или отсутствие более новой редакции.
NIST SP 800-207 PDF dated final publication, 2020-08-11 authentication и authorization описаны как отдельные функции до сессии к enterprise resource; неявное доверие по сетевому положению не предполагается. Это не retrieval design, не схема labels и не готовая access policy для базы знаний.

Вывод «vector score не доказывает истину» отмечен в статьях как собственный инженерный вывод. Он следует из того, что ranking, access, freshness, citability и human verification отвечают на разные вопросы; он не приписан OpenSearch, RFC или NIST как формальная гарантия.

Проход 1 — факты, техника и границы

Проверена модель.

  • createFixedSyntheticKnowledgeRetrievalInput принимает case id и возвращает строго shaped input для fixed corpus.
  • В corpus есть version, access labels, publishedAt, indexedAt, expiresAt, synthetic URI, exact anchor, excerpt и score. Output отдельно содержит candidate records, reject reasons и citations.
  • inspectFixedSyntheticKnowledgeRetrieval пропускает в citation только active, allowed, fresh и anchor-addressable record. Один score не снимает ни одно из этих условий.
  • prepareSyntheticKnowledgeHumanReview создаёт лишь in-memory review draft. Даже accepted citation получает статус requires-human-verification, а не заверенный факт.
  • stopSyntheticKnowledgeAnswer discard-ит только accepted in-memory review draft и возвращает productionEffect: not-attempted. Это не withdrawal реального ответа и не изменение источника.

Проверены отрицательные ветки.

Случай Fixed record Ожидаемое решение Проверяемая причина
freshness synthetic-adapter-guideline-v1, score 0.97 не становится citation expired-at-fixed-retrieval-time
access synthetic-security-override-v2, score 0.99 не становится citation access-label-not-granted
citation synthetic-note-without-anchor-v1 не становится citation missing-exact-citation-anchor
stale-only / closed-only corpus один неразрешённый candidate answer stops stop-no-fresh-authorized-citable-source
forged / sparse / cyclic objects не совпадают с canonical fixed output review / stop rejects object нет доступа к произвольным input или report

Fixture намеренно проверяет shape, dense arrays, unknown case, extra input field, forged timestamp, frozen fixed corpus, forged report, sparse citations, циклические input/report и отсутствие external effects. Она не проверяет качество реального embedding, реальный identity check, HTTP fetch, corpus полноту или production outcome.

Вердикт прохода 1: пройдено. Утверждения об источниках ограничены их содержанием; example не использует реальные данные и не делает score доказательством истины.

Проход 2 — редактура, голос и плотность

Март 2025 соответствует уровню М8: автор ведёт от наблюдаемого симптома к стоимости, владельцу policy, проверяемому контракта и небольшому маршруту внедрения. Речь сохраняет формулу «симптом → причина → проверка → действие», не объявляет fixed model реальными данными и не обещает универсальный RAG процесс.

Статья Проблема и цена ошибки в первых двух абзацах Основной текст Практический артефакт Проверяемый финал
practice Релевантная запись может быть expired, closed или без anchor; цена — неверная миграция, раскрытие fragment или невозможность проверить правило. 10 124 знака source-record contract, маршрут filtering, fixed fixture Удалить одно metadata поле и получить явную stop condition.
mechanism High-score document может описывать прежний contract; цена — повторное расследование и потеря доверия к базе. 10 920 знаков matrix signals, strict candidate output, filter order Добавить один rejection test для expired / denied candidate.
field Search может найти только closed или stale source; цена — неверная миграция, disclosure или неразрешимый спор о правиле. 10 952 знака structured stop path, comparison table, human-review card Создать test: top-score candidate не допускается к answer без citation.

Редакторская вычитка:

  • В каждом из первых двух <p> явно названы problem и цена ошибки. Это повторно подтверждено усиленным audit:draft.
  • В каждой статье есть HTML-table, figure с meaningful alt и caption, компактный воспроизводимый example, limitation, next step и не меньше двух первичных/официальных источников.
  • Длинные технические термины привязаны к полю, decision или fragment: score, access labels, publishedAt, indexedAt, expiresAt, URI#anchor и human verification не оставлены декларациями.
  • Source fact и policy автора разнесены явно. Ни fixed timestamps, ни synthetic URI, ни scores не выданы за telemetry или реальный corpus.
  • Убраны повторы в полевой статье: объём снижен с 13,5 тыс. до 10,95 тыс. знаков без потери table, stop path, limitation или next action.

Вердикт прохода 2: пройдено. Три текста остаются в диапазоне 5–15 тыс. знаков и целевом диапазоне 8–11 тыс. с допустимым отклонением field-текста до 10,95 тыс.; тон 2025 года наставнический, но технический и не стратегический.

Проход 3 — SVG, fixture и выпуск

Проверены три собственных SVG:

Asset Смысл Проверка 375 px
knowledge-retrieval-2025-query-retrieval-citation.svg index → retrieval → access/freshness → exact citation → human verification Первый render обнаружил обрезанные длинные подписи. Подписи сокращены, повторный Sharp-render читаем, STOP path виден полностью.
knowledge-retrieval-2025-freshness-access-matrix.svg matrix допуска: high-score expired, closed и no-anchor records отвергаются Колонки и footer читаемы на 375 px; нет обрезания справа.
knowledge-retrieval-2025-verification-loop.svg human verification loop и видимая stop ветка Первый render обнаружил длинные labels в карточках; после сокращения все пять шагов и STOP card читаемы на 375 px.

Последовательность проверок:

  • node --check scripts/upgrade-2025-03.mjs — PASS.
  • node scripts/upgrade-2025-03.mjs --verify-fixture — PASS, 34/34 assertions.
  • npm run audit:draft -- scripts/upgrade-2025-03.mjs — PASS для всех трёх slug, включая усиленное требование о цене ошибки в первых двух <p>.
  • xmllint --noout для трёх SVG — PASS.
  • SVG safety scan — чисто: нет script, foreignObject, javascript:, data:image и event-handler attributes.
  • Sharp render на ширине 375 px и ручной visual review — PASS после одного исправления copy length в каждом из трёх SVG.

Full build намеренно не запускался. Registry, production README, очередь, стадия Git, commit и push намеренно не менялись. Это не освобождает будущего интегратора от audit:articles, production build и отдельной проверки registry, но сохраняет независимость P85 draft-пакета.

Вердикт прохода 3: пройдено для draft-пакета. Публикация не выполнена.

Выпуск после независимой приёмки

Основной редактор повторил три прохода после подключения overlay:

  1. Факты и техника. Закреплённый README OpenSearch k-NN по commit 150c589849a8ec3bc442d830b43a3eaf4e25fa0c подтверждает дату 12 июня 2024, nearest-neighbor similarity search и фильтры для уточнения результатов. RFC 9110 §8.8.2 определяет Last-Modified как timestamp, который origin server считает датой изменения selected representation, и называет способ вычисления implementation detail. NIST SP 800-207 подтверждает отдельные dynamic authentication/authorization checks до доступа к enterprise resource. Статья корректно оставляет правило о том, что score не является доказательством, собственным инженерным выводом. Fixture проходит 34/34.
  2. Редактура и голос. Полные тела перечитаны: в первых двух абзацах названы риск и цена ошибочной цитаты, а значение score, дат, label, URI#anchor и human verification раскрыто рядом с действием. Три текста не обещают RAG-платформу и не имитируют реальный corpus. Усиленный audit:draft подтвердил 10 124 / 10 920 / 10 952 знака и структурную полноту.
  3. Визуал и выпуск. Три SVG повторно отрисованы Sharp и просмотрены на 375 px: query → citation — 375×513, freshness/access matrix — 375×464, verification loop — 375×488. Карточки, стрелки, reject reasons и STOP остаются читаемыми; XML и safety scan чисты. Целевой аудит подтверждает рисунок, код и минимум две таблицы в каждой статье. Реестр содержит 250 уникальных ревизий, git diff --check чист, production build успешно сгенерировал 374 страницы.

Вердикт: мартовская партия готова к отдельному публикационному коммиту.