This commit is contained in:
@@ -0,0 +1,175 @@
|
||||
# P85 — март 2025: поиск по инженерной базе знаний
|
||||
|
||||
## Область draft-пакета
|
||||
|
||||
Пакет заменяет только три overlay-статьи:
|
||||
|
||||
- <code>editorial-2025-03-practice-knowledge-retrieval</code> — «Поиск по инженерной базе: источник важнее уверенного пересказа».
|
||||
- <code>editorial-2025-03-mechanism-knowledge-retrieval</code> — «Почему vector score не делает документ доказательством».
|
||||
- <code>editorial-2025-03-field-knowledge-retrieval</code> — «Когда поиск обязан остановиться: нет цитаты — нет ответа».
|
||||
|
||||
Единственный исполняемый артефакт — <code>web/scripts/upgrade-2025-03.mjs</code>.
|
||||
Все 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. Его
|
||||
<code>synthetic://</code> citations не выданы за реальные документы.
|
||||
|
||||
Пакет не меняет registry, README, очередь, <code>articles.json</code>,
|
||||
app-страницы, staging, commit, push или full build. Это самостоятельный draft
|
||||
для последующей интеграции.
|
||||
|
||||
## Исследование и историческая граница
|
||||
|
||||
Проверка URL выполнена 31.07.2026 обычными HTTPS-запросами
|
||||
<code>curl -L --fail</code> / <code>curl -I -L --fail</code>, без TLS bypass и
|
||||
без авторизации. Текущая доступность не подменяет историческую дату: для каждого
|
||||
источника ниже есть версия, RFC или immutable commit, существовавшие до марта
|
||||
2025.
|
||||
|
||||
| Источник | Историческое закрепление | Узко подтверждаемое утверждение | Граница утверждения |
|
||||
| --- | --- | --- | --- |
|
||||
| [OpenSearch k-NN README](https://raw.githubusercontent.com/opensearch-project/k-NN/150c589849a8ec3bc442d830b43a3eaf4e25fa0c/README.md) | tag <code>2.15.0.0</code>, immutable commit <code>150c589849a8ec3bc442d830b43a3eaf4e25fa0c</code>, 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](https://www.rfc-editor.org/rfc/rfc9110.html#section-8.8.2) | IETF Standards Track RFC, June 2022 | <code>Last-Modified</code> сообщает время, в которое origin server считает selected representation изменённым; способ вычисления остаётся implementation detail. | HTTP metadata не доказывает semantic correctness текста, owner, права доступа или отсутствие более новой редакции. |
|
||||
| [NIST SP 800-207 PDF](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/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 — факты, техника и границы
|
||||
|
||||
**Проверена модель.**
|
||||
|
||||
- <code>createFixedSyntheticKnowledgeRetrievalInput</code> принимает 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.
|
||||
- <code>inspectFixedSyntheticKnowledgeRetrieval</code> пропускает в citation
|
||||
только active, allowed, fresh и anchor-addressable record. Один score не
|
||||
снимает ни одно из этих условий.
|
||||
- <code>prepareSyntheticKnowledgeHumanReview</code> создаёт лишь in-memory
|
||||
review draft. Даже accepted citation получает статус
|
||||
<code>requires-human-verification</code>, а не заверенный факт.
|
||||
- <code>stopSyntheticKnowledgeAnswer</code> discard-ит только accepted
|
||||
in-memory review draft и возвращает <code>productionEffect:
|
||||
not-attempted</code>. Это не withdrawal реального ответа и не изменение
|
||||
источника.
|
||||
|
||||
**Проверены отрицательные ветки.**
|
||||
|
||||
| Случай | Fixed record | Ожидаемое решение | Проверяемая причина |
|
||||
| --- | --- | --- | --- |
|
||||
| freshness | <code>synthetic-adapter-guideline-v1</code>, score 0.97 | не становится citation | <code>expired-at-fixed-retrieval-time</code> |
|
||||
| access | <code>synthetic-security-override-v2</code>, score 0.99 | не становится citation | <code>access-label-not-granted</code> |
|
||||
| citation | <code>synthetic-note-without-anchor-v1</code> | не становится citation | <code>missing-exact-citation-anchor</code> |
|
||||
| stale-only / closed-only corpus | один неразрешённый candidate | answer stops | <code>stop-no-fresh-authorized-citable-source</code> |
|
||||
| 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. |
|
||||
|
||||
Редакторская вычитка:
|
||||
|
||||
- В каждом из первых двух <code><p></code> явно названы problem и
|
||||
<strong>цена ошибки</strong>. Это повторно подтверждено усиленным
|
||||
<code>audit:draft</code>.
|
||||
- В каждой статье есть HTML-table, figure с meaningful <code>alt</code> и
|
||||
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 |
|
||||
| --- | --- | --- |
|
||||
| <code>knowledge-retrieval-2025-query-retrieval-citation.svg</code> | index → retrieval → access/freshness → exact citation → human verification | Первый render обнаружил обрезанные длинные подписи. Подписи сокращены, повторный Sharp-render читаем, STOP path виден полностью. |
|
||||
| <code>knowledge-retrieval-2025-freshness-access-matrix.svg</code> | matrix допуска: high-score expired, closed и no-anchor records отвергаются | Колонки и footer читаемы на 375 px; нет обрезания справа. |
|
||||
| <code>knowledge-retrieval-2025-verification-loop.svg</code> | human verification loop и видимая stop ветка | Первый render обнаружил длинные labels в карточках; после сокращения все пять шагов и STOP card читаемы на 375 px. |
|
||||
|
||||
Последовательность проверок:
|
||||
|
||||
- <code>node --check scripts/upgrade-2025-03.mjs</code> — PASS.
|
||||
- <code>node scripts/upgrade-2025-03.mjs --verify-fixture</code> — PASS,
|
||||
<strong>34/34</strong> assertions.
|
||||
- <code>npm run audit:draft -- scripts/upgrade-2025-03.mjs</code> — PASS для
|
||||
всех трёх slug, включая усиленное требование о цене ошибки в первых двух
|
||||
<code><p></code>.
|
||||
- <code>xmllint --noout</code> для трёх SVG — PASS.
|
||||
- SVG safety scan — чисто: нет <code>script</code>,
|
||||
<code>foreignObject</code>, <code>javascript:</code>,
|
||||
<code>data:image</code> и event-handler attributes.
|
||||
- Sharp render на ширине 375 px и ручной visual review — PASS после одного
|
||||
исправления copy length в каждом из трёх SVG.
|
||||
|
||||
Full build намеренно не запускался. Registry, production README, очередь,
|
||||
стадия Git, commit и push намеренно не менялись. Это не освобождает будущего
|
||||
интегратора от <code>audit:articles</code>, production build и отдельной
|
||||
проверки registry, но сохраняет независимость P85 draft-пакета.
|
||||
|
||||
**Вердикт прохода 3:** пройдено для draft-пакета. Публикация не выполнена.
|
||||
|
||||
## Выпуск после независимой приёмки
|
||||
|
||||
Основной редактор повторил три прохода после подключения overlay:
|
||||
|
||||
1. **Факты и техника.** Закреплённый README OpenSearch k-NN по commit
|
||||
<code>150c589849a8ec3bc442d830b43a3eaf4e25fa0c</code> подтверждает дату
|
||||
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** страницы.
|
||||
|
||||
Вердикт: мартовская партия готова к отдельному публикационному коммиту.
|
||||
Reference in New Issue
Block a user