chore: рішення за пʼятьма відкритими питаннями (directory.rs, гейт, layers) - #61
Merged
Conversation
Ітеративний прохід із Vitalii. Пʼять рішень, три з них — зміни в коді. 1. directory.rs видалено. Ланцюг адресної ескалації мав три ланки, працювала одна; Escalation не надсилав ніхто, а push.mjs свідомо мовчить без to_account_id — тобто ескалація дійшла б нікому й без сліду, а карта обіцяла частково готовий PII-шлях. Прецедент mt-napi. 2. Гейт звужено до вузла. Заразом виправлено хибне твердження карти «гейт не знає вузла»: PermissionFactory отримує node_hash, тож зміна публічного API не була потрібна. Вузол без a.md падає на стелю хоста — a.md описує агентний контракт, і його відсутність не є заявою «нічого не можна». skills: [] читається як відсутній список, інакше порожня декларація мовчки блокувала б вузол. 3. layers/ видалено. Перевірка спростувала припущення, з яким питання ставилось: у mt-rust він генерував НУЛЬ перекладів. 18 англомовних дзеркал живуть у репо спеки, де теки layers/ немає взагалі. Мертвий воркспейс на 40 файлів; прибрано разом із workspaces, скриптом і рядком .v8rignore (останнє знімає одну з причин червоного v8r). 4. Live-переклад Envelope робить relay — рішення з відомим наслідком: це змінює модель довіри, і спека потребує правки у двох місцях. Зафіксовано в «Закритих питаннях», код не чіпано. 5. mt escalate вручну лишається штатним для фази 0: автоматична класифікація «баг чи вибір» — рівно те судження, заради якого гейт існує, і фальшива евристика тут гірша за відсутність. Відкритих питань лишилось одне — Rust-тести без CI-гейта.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Що це
Ітеративний прохід по відкритих питаннях карти. Пʼять рішень, три з них — зміни в коді, два — зафіксовані межі.
1.
directory.rsвидаленоЛанцюг адресної ескалації мав три ланки, працювала одна: handle → email (парсер із тестами) є; email →
account_idнемає ніде;Escalationне надсилав ніхто.Наслідок був гірший за відсутність:
push.mjsсвідомо не розсилає подію безto_account_id, тож ескалація дійшла б нікому й без сліду, а рядок карти обіцяв частково готовий PII-шлях. Прецедентmt-napi: крейт без споживача видаляється. Парсер на 109 рядків перепишеться в M6 разом із емітером і з обдуманою межею резолву.2. Гейт звужено до вузла
Заразом виправлено хибне твердження карти. Там стояло «гейт не знає вузла» — насправді
PermissionFactoryотримуєnode_hash, тож зміна публічного API не була потрібна і фікс виявився дрібним. Я перевірив це перед тим, як пропонувати варіанти.Вузол із
a.mdотримує рівно те звуження, яке сам задекларував; вузол безa.md— стелю хоста. Заборона всього ламала б штатнийmt attachзаради принципу:a.mdописує агентний контракт, і його відсутність не є заявою «нічого не можна».skills: []читається як відсутній список — інакше порожня декларація мовчки блокувала б вузол. Три тести.3.
layers/видаленоПеревірка перед видаленням спростувала припущення, з яким я сам сформулював питання. У
mt-rustlayers/генерував нуль перекладів (find . -name "*.en.md"→ 0). 18 англомовних дзеркал живуть у репо специфікації, і текиlayers/там немає взагалі — їх робить інший інструмент.Тобто конфлікту «два рушії одного перекладу» в цьому репо не існувало: був мертвий воркспейс на 40 файлів із власним CLI, схемою і 95 тестами. Прибрано разом із записом у
workspaces, скриптом і рядком.v8rignore— останнє заразом знімає одну з причин хронічно червоного v8r.4. Live-переклад — relay (лише рішення, коду немає)
Ухвалено з відомим наслідком, і я його зафіксував: це змінює модель довіри, а не місце коду.
access.mdфіксує межу relay — «не парсить payload далі роутінгових полів»,overview.mdназиває його ефемерним координатором. Переклад вимагає читати вміст і віддавати його моделі, тобто вміст розмов виходить за периметр.Спека потребує правки у двох місцях — таблиця меж довіри в
access.mdі принцип 4 вoverview.md; інакше це мовчазне співіснування двох контрактів. Пом’якшення в каноні вже є (self-hosted relay) і лишається чинним.Окремо інженерне: одиницею перекладу має бути
AgentTextDone, а неAgentTextDelta— переклад токен-за-токеном рве речення.5.
mt escalateвручну — штатний для фази 0Агент escalation-intake лишається метою, але фазою 1. Автоматична класифікація «баг чи вибір» — рівно те судження, заради якого гейт існує, і фальшива евристика тут гірша за відсутність: вона виглядала б як рішення системи. Інваріант «виконавець не пише сам собі розвилку» витриманий —
mt escalateвикликає не агент вузла.Стан
Відкритих питань лишилось одне — Rust-тести без CI-гейта.
cargo test --workspace— 460 passed;bun run test— 102 (було 197: −95 разом ізlayers/); clippy й лінт чисті.