Skip to content

docs(specs): контракт n-rules:plugin@5.0.0 — повноваження як світи - #602

Merged
vitaliytv merged 1 commit into
mainfrom
docs/contract-5-spec
Aug 31, 2026
Merged

docs(specs): контракт n-rules:plugin@5.0.0 — повноваження як світи#602
vitaliytv merged 1 commit into
mainfrom
docs/contract-5-spec

Conversation

@vitaliytv

Copy link
Copy Markdown
Member

Спека мажора, що реалізує рішення 1–5 (#600) і 6–11 (#601).

Мета — не «ще одна поверхня», а щоб наступна була безкоштовною

world.wit:105-111: без width-subtyping будь-яка зміна форми межі — мажор. Отже кожна нова поверхня сьогодні платна назавжди. 5.0.0 виносить тип поверхні з форми ядрового світу — і після нього нова поверхня коштує новий світ, а не зміну контракту.

Дві виміряні підстави

  • Наявний декларативний гейт порожній скрізь: усі шість гостей мають fs_read = [] і network = false. Гейт існує, але не перевіряє нічого реального.
  • Прецедент закладений ще у v3: пакет n-rules:slots@1.0.0 уже живе окремо з власним циклом версіонування (рішення Л). 5.0.0 доводить напрямок до кінця.

Структура

Три родини пакетів: ядро, caps (tool-runner, file-reader, llm-consumer), surfaces (coverage-provider, knowledge-extractor, docgen-stage). Гість, що не оголосив tool-runner, не має цих імпортів у своєму типі — не «дістає відмову в рантаймі».

Курка і яйце розвʼязані дистрибуцією

Щоб знати світи, треба маніфест; щоб маніфест — треба інстанціювати; щоб інстанціювати — треба знати світи. Розвʼязання вже будується: робота Д2 вбудовує маніфест у custom section, і хост читає перелік світів із байтів файлу, до будь-якої інстанціації. Окремий механізм дискавері не потрібен.

Що входить у мажор

Єдина зміна форми маніфесту — поле worlds; саме вона робить мажор неминучим. Решта (винесення run-tool/exec-tool, напівживих ecosystem-outdated/docgen-render) їде тим самим бампом: ламати шістьох гостей кілька разів замість одного було б помилкою, яку доккомент 4.0.0 уже описав.

Відкрито свідомо

Форма llm-request (проєктувати разом із портом docgen, коли буде видно потреби стадій), доля capabilities.network, і гранулярність версіонування caps.

Мета мажора не «додати ще одну поверхню», а зробити наступну поверхню
безкоштовною: тип поверхні виноситься з форми ядрового світу.

Три родини пакетів із власними циклами версіонування — ядро, caps
(tool-runner, file-reader, llm-consumer), surfaces (coverage-provider,
knowledge-extractor, docgen-stage). Прецедент закладений ще у v3 рішенням
Л: n-rules:slots@1.0.0 уже існує окремо.

Дискавері не потребує окремого механізму: маніфест у custom section,
який вбудовує робота Д2, читається з байтів файлу до інстанціації —
курка й яйце розвʼязані дистрибуцією, яку й так робимо.

Зміряно й записано: усі шість гостей мають fs_read = [] і network = false,
тобто наявний декларативний гейт порожній скрізь — він не перевіряє нічого
реального. Це підпирає заміну його на типовий.

Єдина зміна форми маніфесту — поле worlds; саме вона робить мажор
неминучим. Решта змін форми (винесення run-tool/exec-tool, напівживих
поверхонь) їде тим самим бампом, бо ламати шістьох гостей кілька разів
замість одного було б помилкою.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@vitaliytv
vitaliytv merged commit 14c95cb into main Aug 31, 2026
@vitaliytv
vitaliytv deleted the docs/contract-5-spec branch August 31, 2026 09:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant