feat(mt-core): orphan-node warning + дефолт agent_retry_max - #28
Merged
Conversation
Хвиля 1 контрактного боргу, пункти 3 і 5. orphan-node (graph.md, «Протокол spawn»): «вузол легітимний ↔ його id у ## Children approved-плану батька або кореневий; інші директорії з task.md → orphan-node warning». Скан не перевіряв нічого — директорія, яку ніхто не схвалював, виглядала звичайним вузлом і потрапляла в чергу виконання нарівні з рештою. Легітимність рахується об'єднанням по ВСІХ approved-планах вузла: динамічна декомпозиція додає plan_NNN+1, і діти раніше схвалених планів легітимності не втрачають. Немає жодного approved-плану → всі діти orphan (правило легітимності spawn: без approve дітей не існує). Кореневі вузли не перевіряються за визначенням. agent_retry_max: дефолт 3 переїхав у config_defaults; читач більше не дублює його хардкодом, а йде через штатний merge_config. Решту «відсутніх» ключів .mt.json свідомо не додано: merge_config пропускає будь-який ключ користувача наскрізь, тож відсутній дефолт нічого не ламає, а два десятки констант для нереалізованих фіч (аудит-цикл, recurrence, i18n, relay, surfaces) були б мертвим конфігом, який виглядає як готова поверхня. Дефолт додається разом із кодом, що його читає. Тести: 4 на orphan-node (дитина в плані, дитина поза планом, батько без approved-плану, кореневий вузол), 1 на дефолт конфігу. 260 passed у workspace, clippy чистий. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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, пункти 3 і 5
orphan-nodegraph.md: «вузол легітимний ↔ його id у
## Childrenapproved-плану батька або кореневий; інші директорії зtask.md→orphan-nodewarning». Скан не перевіряв нічого — директорія, яку ніхто не схвалював, виглядала звичайним вузлом і потрапляла в чергу виконання нарівні з рештою.Легітимність рахується об'єднанням по всіх approved-планах вузла: динамічна декомпозиція додає
plan_NNN+1, і діти раніше схвалених планів легітимності не втрачають. Немає жодного approved-плану → всі діти orphan, бо правило spawn прямо каже: без approve дітей не існує. Кореневі вузли не перевіряються за визначенням.agent_retry_maxДефолт
3переїхав уconfig_defaults; читач більше не дублює його власним хардкодом, а йде через штатнийmerge_config.Чому решту ключів
.mt.jsonне доданоЦе свідоме рішення, а не пропуск.
merge_configпропускає будь-який ключ користувача наскрізь, тож відсутній дефолт нічого не ламає. А два десятки констант для нереалізованих фіч (аудит-цикл, recurrence, i18n, relay, surfaces) були б мертвим конфігом, який виглядає як готова поверхня — гірше за чесну відсутність. Дефолт додається разом із кодом, що його читає; рядок карти переформульовано відповідно.Тести
4 на
orphan-node(дитина в плані → чисто; дитина поза планом → warning; батько без approved-плану → warning; кореневий вузол → чисто), 1 на дефолт конфігу. 260 passed у workspace, clippy чистий.Лишилось у хвилі 1
Матеріалізація
result: merge-conflict. Виявилась важчою за рядок у таблиці: git.md вимагає публікуватиrun_NNN.mdокремим fenced push після невдалого rebase, лишаючи run ref і worktree для debug і звільняючи claim CAS-delete. Це нова гілка в publish-протоколі, який мутує спільний remote, тож іде окремим PR із власними тестами — не хвостом цього.🤖 Generated with Claude Code