Skip to content

feat(mt-core): orphan-node warning + дефолт agent_retry_max - #28

Merged
vitaliytv merged 1 commit into
mainfrom
claude/config-keys
Aug 9, 2026
Merged

feat(mt-core): orphan-node warning + дефолт agent_retry_max#28
vitaliytv merged 1 commit into
mainfrom
claude/config-keys

Conversation

@vitaliytv

Copy link
Copy Markdown
Member

Хвиля 1, пункти 3 і 5

orphan-node

graph.md: «вузол легітимний ↔ його id у ## Children approved-плану батька або кореневий; інші директорії з task.mdorphan-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 (дитина в плані → чисто; дитина поза планом → 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

Хвиля 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>
@vitaliytv
vitaliytv merged commit 4a218bd into main Aug 9, 2026
2 of 4 checks passed
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