16 KiB
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, а не заверенный факт.stopSyntheticKnowledgeAnswerdiscard-ит только 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:
- Факты и техника. Закреплённый 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. - Редактура и голос. Полные тела перечитаны: в первых двух абзацах
названы риск и цена ошибочной цитаты, а значение score, дат, label,
URI#anchor и human verification раскрыто рядом с действием. Три текста не
обещают RAG-платформу и не имитируют реальный corpus. Усиленный
audit:draftподтвердил 10 124 / 10 920 / 10 952 знака и структурную полноту. - Визуал и выпуск. Три 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 страницы.
Вердикт: мартовская партия готова к отдельному публикационному коммиту.