Исторический документ. План сохранён из ревизии исходника
61e75e9и не является текущим руководством по реализации. Исходный документ.
Зафиксировать исполняемый контракт поддержки Open Knowledge Format v0.2 до изменения публичных API. Эта задача — корневая зависимость для остальных задач миграции.
Источники истины:
okf/SPEC.md, коммит
3fcbb9f828c2f23d109c855ee403c3a4c81f3a96;Нельзя ориентироваться только на текущую ветку main: воспроизводимая сборка и
тесты должны ссылаться на зафиксированную ревизию спецификации.
Поддерживаемые версии:
0.1 — чтение и валидация старого формата, источник для миграции;0.2 — текущий контракт чтения и записи по умолчанию;okf_version.Правила определения версии:
okf_version в корневом index.md
задаёт контракт.0.2, но разрешены резервные
правила для старого формата из §13.Модель определения версии должна различать:
declared, default, explicit, future-best-effort;Версия модуля Go, бинарного файла CLI и пакета плагина — не okf_version.
Создать версионируемую матрицу: пункт спецификации → реализация → диагностика → тесты.
Обязательные ошибки [ERROR] остаются ограничены §11:
type;index.md и log.md.Необязательные группы полей v0.2 не становятся обязательными требованиями:
sources, usage_window;generated, verified;status, stale_after;Некорректная присутствующая группа проверяется на уровне строгих проверок и политик и не должна мешать загрузке с минимальными ограничениями. Неизвестные ключи, типы и среды выполнения остаются доступными для чтения.
Поддержать два резервных правила без скрытой миграции:
timestamp используется только при полном отсутствии generated;# Citations читается только при отсутствии sources.Представление в старом формате само по себе не нарушает соответствие.
Чтение, fmt, index и операции с графом не должны переписывать документы v0.1.
Миграция должна быть отдельной операцией предпросмотра и применения с явно указанным участником и сопоставлением источников.
Зафиксировать решения политики инструментов отдельно от исходной спецификации:
sources[].author ссылается на соглашение об участниках, но примеры исходной спецификации
используют неописанный team:*; проверять как непустую строку;sources[].id не определены; уникальность —
строгая политика инструментария для безопасного сопоставления атрибуций;sources[].resource может быть описанием области, а не путём или URI;today >= stale_after не определён; инструменты принимают
явно заданную опорную дату, значение по умолчанию для CLI описывается отдельно;usage_count — не оценка;runtime и типов параметров нет реестра;executor/attester слабее требования к runtime и остаются
рекомендациями строгого режима;relations — расширение skosovsky/okf, не часть исходной спецификации v0.2.Каждое решение должно быть одинаково отражено в bundle, validator, CLI, MCP,
тестовых данных и документации.
Добавить один общий набор:
type;verified в виде одиночного отображения и списка;Переиспользовать данные в тестах пакетов, сквозных тестах CLI/MCP и примерах документации.
Явно исключить:
executor;attester;bundle.store.CommitReceipt не связан с executor.receipt.
go test ./... и git diff --check проходят после добавления набора данных
для проверки контракта.Порядок:
bundle.validator, graph, механизм изменений, защитные ограничения
хранилища.