@rt-tools/agent-kit 0.16.1 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/assets/checks/board-epics.github.mjs +123 -0
  2. package/assets/checks/board-gh.github.mjs +121 -0
  3. package/assets/checks/board-paths.github.mjs +88 -0
  4. package/assets/checks/board-runs.github.mjs +8 -0
  5. package/assets/checks/board-titles.github.mjs +66 -0
  6. package/assets/checks/board.github.mjs +77 -73
  7. package/assets/checks/check-board.github.mjs +56 -7
  8. package/assets/checks/check-file-size.mjs +10 -2
  9. package/assets/checks/check-glossary.mjs +170 -0
  10. package/assets/checks/check-hook-scope.mjs +126 -0
  11. package/assets/checks/check-profile-drift.mjs +195 -0
  12. package/assets/checks/check-push-gate.mjs +59 -1
  13. package/assets/checks/check-schema-drift.mjs +12 -5
  14. package/assets/checks/check-specs.mjs +1 -1
  15. package/assets/checks/rt-kit-checks.config.mjs +13 -0
  16. package/assets/checks/spec-anchors.mjs +2 -2
  17. package/assets/checks/spec-contract.mjs +9 -0
  18. package/assets/defaults/gate-map.sh +13 -4
  19. package/assets/defaults/project.sh +31 -108
  20. package/assets/defaults/shell.sh +139 -0
  21. package/assets/docs/GLOSSARY.md +1 -1
  22. package/assets/hooks/browser-device-id.sh +20 -4
  23. package/assets/hooks/browser-guard-device-id.sh +5 -2
  24. package/assets/hooks/browser-guard-no-other-drivers.sh +41 -2
  25. package/assets/hooks/claim-guard.sh +22 -1
  26. package/assets/hooks/docs-guard.sh +1 -1
  27. package/assets/hooks/exam-guard.sh +85 -12
  28. package/assets/hooks/git-guard-delivery-conflict.sh +85 -0
  29. package/assets/hooks/git-guard-delivery-folder.sh +19 -0
  30. package/assets/hooks/git-guard-delivery-signature.sh +14 -5
  31. package/assets/hooks/git-guard-delivery.sh +54 -2
  32. package/assets/hooks/git-guard-push-tests.sh +21 -1
  33. package/assets/hooks/grill-gate-ask.sh +25 -0
  34. package/assets/hooks/grill-gate.sh +75 -11
  35. package/assets/hooks/lint-after-edit.sh +44 -16
  36. package/assets/hooks/proposal-guard.sh +11 -4
  37. package/assets/hooks/rule-source-guard.sh +8 -13
  38. package/assets/hooks/skill-gate-layers.sh +7 -0
  39. package/assets/hooks/skill-gate.sh +29 -0
  40. package/assets/hooks/task-context-load.sh +32 -0
  41. package/assets/hooks/task-flow-context.sh +194 -0
  42. package/assets/hooks/task-flow-draft-guard.sh +109 -0
  43. package/assets/hooks/task-flow-guard.sh +27 -159
  44. package/assets/hooks/turn-exit-guard.sh +53 -88
  45. package/assets/hooks/waiting-turn-guard.sh +65 -2
  46. package/assets/hooks/window-fill-guard.sh +5 -1
  47. package/assets/hooks/work-start-guard.sh +166 -0
  48. package/assets/hooks/write-targets.sh +24 -0
  49. package/assets/laws/delivery.md +19 -0
  50. package/assets/laws/frontend-application.md +4 -0
  51. package/assets/laws/verifiability.md +44 -0
  52. package/assets/laws/work-conduct.md +15 -0
  53. package/assets/patterns/browser-verification-measure.md +3 -1
  54. package/assets/patterns/browser-verification-stand.md +17 -4
  55. package/assets/patterns/doc-style-write.md +62 -2
  56. package/assets/patterns/git-workflow-commit.github.md +33 -5
  57. package/assets/patterns/git-workflow-docker.md +22 -0
  58. package/assets/patterns/git-workflow-freshness.md +87 -0
  59. package/assets/patterns/git-workflow-merge.md +41 -0
  60. package/assets/patterns/git-workflow-migration.md +11 -0
  61. package/assets/patterns/git-workflow-pr.github.md +12 -1
  62. package/assets/patterns/git-workflow-restart.md +18 -0
  63. package/assets/patterns/git-workflow-secrets.md +14 -0
  64. package/assets/patterns/git-workflow-stack.md +93 -1
  65. package/assets/patterns/lib-layers-move.md +4 -0
  66. package/assets/patterns/spec-driven-domain.md +47 -2
  67. package/assets/patterns/spec-driven-rule.md +16 -4
  68. package/assets/patterns/spec-driven-sweep.md +57 -0
  69. package/assets/patterns/status-report-table.github.md +1 -1
  70. package/assets/patterns/task-flow-archive.md +58 -16
  71. package/assets/patterns/task-flow-close.md +106 -23
  72. package/assets/patterns/task-flow-handoff.md +14 -2
  73. package/assets/patterns/task-flow-resume.md +35 -8
  74. package/assets/patterns/task-flow-start.md +60 -22
  75. package/assets/patterns/testing-e2e.md +23 -0
  76. package/assets/patterns/turn-entry-map.md +1 -1
  77. package/assets/pitfalls/agent-kit.md +71 -3
  78. package/assets/pitfalls/doc-style.md +15 -0
  79. package/assets/pitfalls/git-workflow.github.md +88 -0
  80. package/assets/pitfalls/spec-driven.md +22 -0
  81. package/assets/pitfalls/task-flow.md +113 -0
  82. package/assets/pitfalls/testing.md +6 -0
  83. package/assets/pitfalls/turn-conduct.md +49 -0
  84. package/assets/rules/browser-verification.md +58 -0
  85. package/assets/rules/deploy-flow.azure.md +8 -0
  86. package/assets/rules/deploy-flow.github.md +27 -0
  87. package/assets/rules/deploy-flow.gitlab.md +8 -0
  88. package/assets/rules/doc-style.md +20 -0
  89. package/assets/rules/git-workflow.azure.md +22 -2
  90. package/assets/rules/git-workflow.github.md +127 -118
  91. package/assets/rules/git-workflow.gitlab.md +17 -4
  92. package/assets/rules/lists.md +5 -0
  93. package/assets/rules/observability.needs-app.md +4 -0
  94. package/assets/rules/reuse-first.md +14 -0
  95. package/assets/rules/shared-code.md +5 -0
  96. package/assets/rules/spec-driven.md +33 -15
  97. package/assets/rules/task-flow.md +132 -126
  98. package/assets/rules/testing.md +41 -2
  99. package/assets/rules/turn-conduct.md +73 -57
  100. package/assets/rules/turn-entry.md +6 -0
  101. package/assets/samples/tasks/_template/grill.md +5 -0
  102. package/assets/samples/tasks/_template/plan.md +3 -0
  103. package/assets/skills/agent-kit.md +108 -76
  104. package/assets/templates/postmortem.md +5 -1
  105. package/bin/agent-kit.d.ts.map +1 -1
  106. package/bin/agent-kit.js +30 -6
  107. package/bin/agent-kit.js.map +1 -1
  108. package/lib/catalog.d.ts.map +1 -1
  109. package/lib/catalog.js +2 -1
  110. package/lib/catalog.js.map +1 -1
  111. package/lib/commands.d.ts.map +1 -1
  112. package/lib/commands.js +96 -7
  113. package/lib/commands.js.map +1 -1
  114. package/lib/hooks-map.d.ts +26 -0
  115. package/lib/hooks-map.d.ts.map +1 -1
  116. package/lib/hooks-map.js +58 -2
  117. package/lib/hooks-map.js.map +1 -1
  118. package/lib/sections.d.ts +6 -0
  119. package/lib/sections.d.ts.map +1 -1
  120. package/lib/sections.js +19 -0
  121. package/lib/sections.js.map +1 -1
  122. package/lib/shipment.d.ts +2 -0
  123. package/lib/shipment.d.ts.map +1 -1
  124. package/lib/shipment.fixture.d.ts +5 -0
  125. package/lib/shipment.fixture.d.ts.map +1 -1
  126. package/lib/shipment.fixture.js +7 -0
  127. package/lib/shipment.fixture.js.map +1 -1
  128. package/lib/shipment.js +13 -1
  129. package/lib/shipment.js.map +1 -1
  130. package/lib/sync.d.ts +35 -3
  131. package/lib/sync.d.ts.map +1 -1
  132. package/lib/sync.js +59 -8
  133. package/lib/sync.js.map +1 -1
  134. package/package.json +1 -1
  135. package/rt-tools-agent-kit-0.18.0.tgz +0 -0
  136. package/rt-tools-agent-kit-0.16.1.tgz +0 -0
@@ -43,6 +43,10 @@ description: Правило под «Закон о ведении работы»
43
43
  назначенном порядке, объявление намерения и названная, но не запущенная команда. Что при этом
44
44
  должно быть верно — ниже, в статьях о применении закона.
45
45
 
46
+ Ход, кончающийся при идущем эпике, показывает владельцу его положение — той же таблицей, какой
47
+ оно уходит в передаче: порядок задач лежит записанным, а тому, ради кого исполнитель по нему
48
+ идёт, состояние очереди иначе не видно ни на одном ходу.
49
+
46
50
  ## Где это лежит
47
51
 
48
52
  В этом дереве — таблица в `implementation.md` рядом. Пути живут там, а не здесь: правило
@@ -80,10 +84,16 @@ flowchart TD
80
84
  быстрее не становятся. Ход, кончившийся такой сводкой, владелец читает как работу: она полна, в
81
85
  ней названы номера и состояния, и пустоты за ней не видно. О чужом шаге говорят вместе с начатым
82
86
  своим, а не вместо него.
87
+ - **Чужой шаг бывает двух родов, и второй не кончится сам.** Прогон и разбор идут без
88
+ исполнителя и кончатся без него; отбитое разрешение не кончится никогда — его ждут. Работа,
89
+ упершаяся в разрешение, доводится до конца без той части, которую разрешение открывает, а
90
+ непройденное называется в теле заявки, где его читает ревьювер: реплика живёт до следующего
91
+ сообщения, тело заявки — до слияния.
83
92
  - **Свой незакрытый шаг владельцу не передаётся.** Список остатков, названный аккуратно, читается
84
- как рассказ о работе — тем полнее, чем он аккуратнее, — и владелец разбирает то, что мог
85
- доделать сам исполнитель. Чужой шаг сводкой называют, свой делают: незапушенная ветка,
86
- неотмеченная запись груза и незакрытая колонка чужими шагами не бывают.
93
+ как рассказ о работе, и владелец разбирает то, что мог доделать сам исполнитель. Чужой шаг
94
+ сводкой называют, свой делают. Формой вопроса это не чинится: вопрос законен там, где ответа
95
+ нет ни в правилах, ни в дереве. Список остатков пишется после того, как из него вычеркнуто всё,
96
+ что исполнитель мог закрыть сам.
87
97
  - **Меню при назначенном порядке.** Выбор, предложенный владельцу, пока эпик не кончился, — это
88
98
  просьба назначить порядок заново. Работы в эпике не осталось — так и говорится: эпик кончился, —
89
99
  а не «чем займёмся».
@@ -95,16 +105,25 @@ flowchart TD
95
105
  начатой работой лучше всякого другого обещания — она точна, её видно, и по ней не отличить
96
106
  сделанного от собранного. Ответ владельцу пишется после вызова, а не вместо него: реплика
97
107
  посреди хода отвечается вместе с начатым действием.
108
+ - **Слово о своей же работе судится сделанным в том же ходе.** «Не стою — продолжаю» к концу
109
+ хода подтверждается работой, а не намерением: иначе владелец читает пару «обещал — не сделал»
110
+ как ложь. Это требование к слову о дереве, обращённое на себя.
98
111
  - **Вариант, поданный владельцу, назван ценой для человека.** Сколько шагов, где человек окажется
99
- и что ему для этого нужно — без этого варианты выглядят равными, и выбор идёт по доводам со
100
- стороны кода: «меньше путей», «строку запуска не трогаем». Знание, которое делает вариант
101
- негодным, пишется в сам вариант, а не остаётся у того, кто его составил.
112
+ и что ему нужно — без этого варианты выглядят равными, и выбор идёт по доводам со стороны кода.
113
+ Знание, которое делает вариант негодным, пишется в сам вариант.
114
+ - **Названное владельцем состояние дерева снимается вызовом раньше объяснения.** «Конфликты»,
115
+ «прогон красный», «ветка отстала» — указание на то, что надо снять, а не тема для разбора.
116
+ Причина называется после починки и только если её спрашивали: объяснение выглядит работой, не
117
+ трогая ни одной ветки. Вопрос «почему» в том же сообщении идёт вторым.
102
118
  - **Пересказ действующего порядка без оценки читается как одобрение.** На прямой вопрос владельца
103
119
  «как это работает» ответ фактами верен и недостаточен: устройство, названное спокойно, звучит
104
120
  принятым. Годность порядка для того, кто им пользуется, называется вместе с ним.
121
+ - **Путь к файлу заданием не бывает.** Строка с адресом называет файл, а не действие: прочитанная
122
+ как поручение, она даёт заходу задание, которого владелец не давал. То же с любой репликой без
123
+ глагола — уточнить дешевле, чем написать полсотни файлов мимо просьбы.
105
124
  - **Прерывание работы владельцем называется вслух.** Пришло задание, останавливающее начатое, —
106
- исполнитель говорит, что стоит, на чём остановлено и что будет с прежней работой, и только потом
107
- берётся за новое. Молчание об этом владелец читает как «прежнее кончилось».
125
+ исполнитель говорит, что стоит, на чём остановлено и что будет с прежним, и только потом берётся
126
+ за новое. Молчание об этом владелец читает как «прежнее кончилось».
108
127
  - **Остановка называется отдельной репликой.** Не строкой в конце отчёта: там она тонет — владелец
109
128
  читает отчёт как рассказ о сделанном. Называются три вещи: что стоит, чего оно ждёт и что
110
129
  владелец может решить.
@@ -112,31 +131,23 @@ flowchart TD
112
131
  и то, что за ход по ней сделано: правку файла или команду, меняющую дерево. Ход, в котором не
113
132
  было ни того ни другого, возвращается исполнителю вместе со следующим шагом из хода работы.
114
133
  Отданную и влитую работу страж не судит: она уже дождалась чужого шага.
115
- - **Снятая папка задачи снимает требование состояния, а ход не кончает.** Ход работы уезжает
116
- вместе с папкой, а папка разбирается до открытия заявки: с этой минуты и до слияния строки
117
- состояния нет вовсе, и первый признак стражу взять неоткуда. Отпускать по этому признаку ход
118
- нельзя снятая папка означает середину отдачи, а не её конец: между уборкой и заявкой работу не
119
- видит никто, кроме того, кто её сделал. Дальше ход судится вторым признаком, как всякий другой;
120
- ход, в котором заявку открыли или прочитали, второй признак пропускает сам.
134
+ - **Снятая папка задачи снимает требование состояния, а ход не кончает.** Ход работы уезжает вместе
135
+ с папкой, а папка разбирается до открытия заявки: с этой минуты и до слияния строки состояния нет
136
+ вовсе. Отпускать по этому признаку ход нельзя снятая папка означает середину отдачи, а не её
137
+ конец. Дальше ход судится вторым признаком; ход, в котором заявку открыли, его пропускает сам.
121
138
  - **Работа без ветки и без папки задачи судится тем же стражем по второму признаку.** Состояния у
122
139
  неё нет, и первый признак взять неоткуда, — но ход, в котором не было ни одной правки дерева, не
123
140
  кончается и здесь.
124
- - **Взятая задача — ещё не начатая работа, и ход на ней не кончается.** Ветка по номеру заведена,
125
- колонка сдвинута, номер назван владельцу — а каталога задачи при ветке нет: обязательное
126
- действие состояния «задача-взята» не сделано ни строкой. Второй признак такой ход отпускает
127
- целиком, потому что работы в нём много заведение ветки, перевод колонки, уборка соседних
128
- веток, и «была ли за ход работа» отвечает не на тот вопрос, что «доведена ли работа до конца
129
- объявленного состояния». Отчёт при этом встаёт ровно на место следующего действия и выглядит
130
- завершённым куском лучше всякой другой вехи. Судит это страж отдельным ярусом; ветка без номера
131
- задачи под него не подпадает, а собранный шаблон папки его снимает — заполненность замысла
132
- машине не видна.
141
+ - **Взятая задача — ещё не начатая работа, и ход на ней не кончается.** Заведение ветки, перевод
142
+ колонки и названный владельцу номер подготовка: обязательное действие состояния
143
+ «задача-взята» не сделано ни строкой, а работы в ходе много, и признак «была ли работа» его
144
+ отпускает. Судит это страж отдельным ярусом; ветка без номера задачи под него не подпадает, а
145
+ собранный шаблон папки его снимает.
133
146
  - **Разведка ходом не кончается, сколько бы её ни было.** Переключение ветки, подтягивание,
134
147
  просмотр истории и чтение заявок — не работа, а подготовка к ней; ход, собранный из них одних,
135
- оставляет работу там же, где она стояла. Признак работы у стража этого прежде не различал: он
136
- знает первое слово команды, и читающая подкоманда совпадала с ним наравне с коммитом. Разведка
137
- при этом выглядит работой лучше всего остального — в ней команды, точные числа и проверяемые
138
- ответы, — поэтому ход, набитый ею, читается полным и заходом, и владельцем. Судятся части
139
- составной команды по одной: чтение, соединённое с правкой, работой остаётся.
148
+ оставляет работу там же, где она стояла. Выглядит она работой лучше всего остального в ней
149
+ команды, точные числа и проверяемые ответы. Судятся части составной команды по одной: чтение,
150
+ соединённое с правкой, работой остаётся.
140
151
  - **Ответ владельцу действием не работает и последним в ходе не стоит.** Порядок внутри хода
141
152
  один: работа, потом первый шаг следующей, и только потом текст. Обратный порядок — работа,
142
153
  отчёт, конец — стоит за каждой остановкой, которую разбирали: отчёт есть форма завершённости, и
@@ -170,9 +181,8 @@ flowchart TD
170
181
  признак «команда была» подтверждал бы одно другим. Прошлый ход не годится: состояние дерева
171
182
  меняется, и вчерашний вывод о нынешнем молчит.
172
183
  - **Гард утверждения ждёт текст ответа, а не судит запись, какой застал.** Текст ложится в запись
173
- хода не раньше, чем хост зовёт хук, и гард, прочитавший файл первым, видит ход, в котором
174
- владельцу не сказано ничего. Не дождавшись текста, гард возвращает ход: пустая запись означает
175
- не «сказать было нечего», а «прочитать нечего».
184
+ хода не раньше, чем хост зовёт хук. Не дождавшись его, гард возвращает ход: пустая запись
185
+ означает не «сказать было нечего», а «прочитать нечего».
176
186
  - **Слово-утверждение гард ловит, неверный вывод — нет.** Об образце, судимом по одному его файлу,
177
187
  и о пути, которым человек не пойдёт, судить нечем: там нет ни слова, ни команды, с которой
178
188
  сверять. Это известная граница гарда, и держат её статьи ниже, а не он.
@@ -181,20 +191,25 @@ flowchart TD
181
191
  заведения задачи, ни ветки, ни папки, ни перевода колонки. Чужой шаг он узнаёт по двум
182
192
  признакам: в ходе открыт PR либо в ходе прочитан красный прогон. Слова «беру следующую задачу»
183
193
  гард действием не считает — ровно потому, что их и произносят вместо неё.
184
- - **Ход, отдавший работу, доводит её до снятого черновика.** Черновик читается владельцем как
185
- «работа не кончена»: кнопка слияния у него заблокирована самим хостингом, а по списку заявок
186
- готовое от недоделанного не отличить серое и там и там. Следующая задача берётся сверх этого,
187
- а не вместо: требование взять её исполняется буквально и оставляет отданное невидимым. Стережёт
188
- это гард ожидания: ход, открывший заявку, не кончается, пока состояние отданной работы не
189
- спрошено командой того же хода.
194
+ - **Ход, отдавший работу, доводит её до снятого черновика.** У черновика кнопка слияния
195
+ заблокирована хостингом, и по списку заявок готовое от недоделанного не отличить. Следующая
196
+ задача берётся сверх этого, а не вместо. Стережёт это гард ожидания: ход, открывший заявку, не
197
+ кончается, пока состояние отданной работы не спрошено командой того же хода.
198
+ - **Отказ гарда ожидания снимается обоими действиями сразу.** Взятая следующая задача уносит
199
+ признак открытой заявки с собой, и требование спросить состояние отданной работы после неё не
200
+ прозвучит уже никогда.
201
+ - **Работа, оставшаяся в рабочем дереве, ход не кончает.** Ветка впереди удалённой ссылки без
202
+ открытой заявки — сделанное, которого не видит никто; страж читает это без сети.
190
203
  - **«Жду прогона» — утверждение о чужом шаге, а не состояние работы.** Прогон бывает зелёным час,
191
204
  а бывает не встав вовсе — и второе само не чинится. Слово это требует команды того же хода,
192
205
  которая прогон показывает, и без неё не говорится: сказанное без команды владелец читает как
193
206
  «работа ещё идёт» и ждёт напрасно. Держит это гард утверждения, а не память исполнителя.
194
- - **Конец прогона узнаётся возвратом фоновой команды, а не взглядом на страницу.** Ожидание,
195
- запущенное в фоне отдельным ходом, возвращает исполнителя к PR само; до тех пор ход занят
196
- следующей задачей. Взгляд на страницу этого не даёт: он либо повторяется вхолостую, либо не
197
- повторяется вовсе, и оба исхода со стороны выглядят одинаково работа не двигается.
207
+ - **Конец прогона узнаётся возвратом фоновой команды, а не взглядом на страницу.** Ожидание в
208
+ фоне возвращает исполнителя к заявке само; взгляд на страницу либо повторяется вхолостую, либо
209
+ не повторяется вовсе, и оба исхода выглядят одинаково работа не двигается.
210
+ - **Ожидание своего же замера ведётся одним ожиданием, а не уведомлением на каждый шаг.**
211
+ Уведомление ставится там, где надо действовать на каждое событие; где значим только итог —
212
+ одно ожидание, кончающееся вместе с замером.
198
213
  - **Отказ гарда кончает ход.** Другого пути к отбитой правке не ищут: ни командой оболочки, ни
199
214
  соседним инструментом, ни правкой самого гарда. Отбитая правка либо делается после того, как
200
215
  условие отказа выполнено, либо не делается вовсе — и тогда владельцу называется отказ, а не
@@ -227,32 +242,29 @@ flowchart TD
227
242
  заменяет: её назначает тот, кому она в эту минуту удобна, и она плывёт.
228
243
  - **У отказа от необратимого действия есть безопасная часть, и она делается.** Требование спросить
229
244
  владельца относится к действию, а не к ходу: работа, у которой отделима часть без последствий,
230
- делится, а не откладывается целиком. Список вариантов, поданный вместо работы, читается как
231
- работа — тем полнее, чем аккуратнее он составлен: он пронумерован, в нём названы цифры, и именно
232
- поэтому пустота хода за ним не видна. Владельцу называется, что уже сделано и что осталось за
233
- его словом, — а не выбор из вариантов вместо и того и другого.
245
+ делится, а не откладывается целиком. Список вариантов вместо работы читается как работа — тем
246
+ полнее, чем аккуратнее составлен: пронумерован, с цифрами, и пустота хода за ним не видна.
247
+ Владельцу называется, что уже сделано и что осталось за его словом.
234
248
  - **Признак необратимости берётся из списка, а не выводится доводом.** Список составлен тем, кто
235
- обратимость уже взвесил: необратимое в нём осталось, обратимое из него снято. Довод «действие
236
- уходит наружу и не откатывается» приходит в контекст всегда, а список только когда его
237
- прочитали, и применённый поверх списка довод отменяет список целиком. Отменяет молча: со стороны
238
- это выглядит осторожностью, а не пропуском шага. Действия, которого в списке нет, исполнитель на
239
- слово владельца не гейтит, даже если оно уходит наружу. Шаг, снятый из списка разбором прошлого
240
- промаха, тем более: довод, которым его туда возвращают, уже разобран и отклонён — и дважды
241
- подряд готовая работа вставала перед снятым шагом.
249
+ обратимость уже взвесил. Довод «уходит наружу и не откатывается» приходит всегда, а список —
250
+ только когда его прочитали, и довод поверх списка отменяет его молча: со стороны это выглядит
251
+ осторожностью, а не пропуском шага. Действия вне списка исполнитель не гейтит.
242
252
  - **Ход, в котором исполнитель признал промах, не заканчивается, пока записи о происшествии нет.**
243
- Отбивает гард происшествия — на завершении хода: к моменту признания промах уже случился, и
244
- ловить раньше нечего. Признание ловится набором образцов, а не пониманием смысла; промах,
245
- признанный словами вне набора, гард пропускает, и это его известная граница, а не обещание.
253
+ Отбивает гард происшествия — на завершении хода: к моменту признания промах уже случился.
254
+ Каталог записей называет компаньон правила, имя файла дата и чем был промах, форму держит
255
+ образец раскладки. Признание ловится набором образцов: промах, признанный словами вне набора,
256
+ гард пропускает.
246
257
  - **Заход, начатый с передачи, входит в работу тем же правилом, что и всякий другой.** Передача
247
258
  лежит вне дерева, её не читает ни одна проверка, и написана она вчера: всё, что в ней стоит,
248
259
  проверяется деревом. Порядок входа — четыре шага в паттерне возвращения; стережёт его гард, а не
249
- память: порядок, записанный только словами, исполняется, пока о нём помнят.
260
+ память.
250
261
  - **Состояние незаконченной работы приходит в контекст на запуске сессии.** Замысел и ход работы
251
262
  отдаются целиком, разбор просьбы — путём. Ветка вида `<КЛЮЧ>-*` без папки даёт предупреждение с
252
263
  готовой командой, но сессию не рвёт.
253
264
  - **Заполненное окно кончает ход только там, где сжатия нет.** Где оно объявлено, окно —
254
265
  продолжение хода: заход сжимается и работает дальше, а порог остановки срабатывает лишь тогда,
255
- когда сжатие не пришло.
266
+ когда сжатие не пришло. Ход, закрытый ниже порога, теряет остаток окна, за
267
+ который дерево заплатило настройкой, и ловит это один владелец.
256
268
  - **Заполнение окна захода стережёт гард, а не память исполнителя.** На первом пороге он
257
269
  напоминает выбирать точку остановки, на втором отбивает всё, кроме записи хода работы, передачи
258
270
  и команд поставки. Размер окна и оба порога дерево задаёт само; не задавшее размера стража не
@@ -266,6 +278,10 @@ flowchart TD
266
278
  сделанное, следующий шаг и особенности захода. В историю она не едет — иначе рядом с ходом
267
279
  работы заводится вторая запись об одном и том же.
268
280
 
281
+ - **Вариант, глушащий проверку, в меню не ставится вовсе.** Выключенное правило линтера, строка
282
+ в списке известного, выведенный из-под проверки файл — все они чинят показание, а не то, на что
283
+ она указала, и вариант этот в меню самый дешёвый. Меню собирается после того, как он вычеркнут.
284
+
269
285
  ## Чего из закона здесь нет
270
286
 
271
287
  Полноту сказанного владельцу не проверяет ничто: гард утверждения ловит слово-утверждение и
@@ -97,3 +97,9 @@ flowchart TD
97
97
  - **Передача пишется для машины, а не для владельца.** Обращение в ней — «спроси у него, чем
98
98
  кончилась проба» — уходит в пустоту: к минуте, когда передачу читают, владельца в разговоре
99
99
  ещё нет.
100
+ - **Вопрос, записанный передачей, вопросом владельцу не становится.** Адресован он её автору —
101
+ тому же заходу, который его отложил, — и до владельца доходит только после сверки с ходом
102
+ работы: часть таких вопросов закрыта его шагом, и спрашивать по ним значит спрашивать про уже
103
+ назначенное. Унаследованный вопрос тем и опасен, что выглядит заданным раньше и потому
104
+ решённым: меню «зафиксировать, оставить или откатить» уходило владельцу дважды, притом что
105
+ отметка сделанного этапа и его фиксация в ветке — обычный шаг работы.
@@ -1,5 +1,10 @@
1
1
  # Разбор просьбы
2
2
 
3
+ <Работа, начатая с приехавшего груза, называет здесь его записи — ключами полностью, как их
4
+ печатает чтение приёма. Восьми знаков не хватает: отметка с коротким ключом отбивается строкой
5
+ «такой записи у дерева нет». Этот файл уезжает в описание прошлого, и после разбора папки ключи
6
+ живут только здесь.>
7
+
3
8
  ## Просьба владельца
4
9
 
5
10
  > <дословно, без пересказа>
@@ -4,6 +4,9 @@
4
4
  **Драфт:** `<путь к договорённости о продукте>`
5
5
  **Поведение:** меняется
6
6
 
7
+ Дерево, которое пишет договорённость прямо в спек домена, называет вместо драфта его:
8
+ `**Спек:** `<путь к спеку>``.
9
+
7
10
  Работа, не задевающая код приложения, договорённости не требует — тогда вместо строки драфта
8
11
  стоит `**Поведение:** не меняется — <причина владельца>`; пустая причина не принимается.
9
12
 
@@ -47,18 +47,29 @@ description: Переносимый слой правил агента — за
47
47
  разложенного хуже целого. Правится либо надстройка здесь, либо сам ресурс — а это работа того
48
48
  дерева, где пакет живёт исходниками, и здесь о ней не сказано ничего.
49
49
 
50
+ **Раскладка — правка дерева, а не служебный вызов:** она переписывает сотни ведомых файлов
51
+ разом, и работа поэтому оформляется до `sync`, по тем же правилам, что и любая другая.
52
+
53
+ **Подъём версии пакета и раскладка едут одним изменением.** Сверка раскладки стоит в гейте
54
+ пуша: редакция, поднятая без раскладки, красит главную ветку и запирает дерево целиком.
55
+
56
+ **Объявление хука раскладка кладёт вместе с самим хуком.** Гард зовёт не файл, а запись в
57
+ настройке агента, и разложенный без неё он снаружи неотличим от работающего: файл лежит,
58
+ коммитится, сверка зелёная — а вызова, ради которого написано его тело, он не видит. Раскладка
59
+ дописывает в настройку запись на каждое событие, которого там нет, и говорит, что дописала.
60
+ Правка только прибавляет: ни одна стоящая запись не переписывается и не снимается, снятое
61
+ деревом не возвращается, а настройку, которую не разобрать как JSON, пакет не трогает вовсе —
62
+ там печатается готовый кусок и запись идёт рукой, как прежде.
63
+
50
64
  **Держит это гард места правки, а не память.** Правку файла с шапкой раскладки он отбивает в
51
- минуту правки и называет адрес: источник, если дерево его держит, иначе надстройку. Прежде об
52
- этом знал один `sync --check`, и говорил он на следующей раскладке то есть в чужой ветке и
53
- чужим ходом: отказ приходил тому, кто в этот день правил соседний ресурс. Правит копию не
54
- только рука: форматтер дерева, дошедший до разложенного файла, переписывает его по-своему, и
65
+ минуту правки и называет адрес: источник, если дерево его держит, иначе надстройку. Правит копию
66
+ не только рука: форматтер дерева, дошедший до разложенного файла, переписывает его по-своему, и
55
67
  раскладка читает это ровно как правку руками. Снятие копии гард пропускает: снятый файл
56
68
  раскладка кладёт заново, и так эту поломку и чинят.
57
69
 
58
70
  **Надстройка правится по разделу, а не кладётся целиком.** Разделы в неё дописывают разные ветки
59
- и разные заходы, и положенная целиком она уносит все, которых эта правка не касалась: на их место
60
- молча возвращается пакетный текст, раскладка после этого сходится, а сказанного деревом о себе
61
- больше нет. Держит это второй гард — он отбивает запись поверх непустой надстройки и называет
71
+ и разные заходы, и положенная целиком она уносит все, которых эта правка не касалась: на их
72
+ место молча возвращается пакетный текст. Держит это второй гард он отбивает запись поверх непустой надстройки и называет
62
73
  размер того, что затрут: строки и число разделов. Дописывание в конец и правка по месту проходят.
63
74
 
64
75
  ## Команды
@@ -68,15 +79,43 @@ npx agent-kit doctor # что разложено, что отстало,
68
79
  npx agent-kit sync # разложить
69
80
  npx agent-kit sync --check # ничего не писать, отказать при расхождении
70
81
  npx agent-kit stats # чем пользовались, чем ни разу, обо что спотыкались
82
+ npx agent-kit enroll --code <код> # завести дерево в приёме и положить его токен
71
83
  npx agent-kit propose # отправить груз в приём: сводку, предложения и разборы
72
84
  ```
73
85
 
74
- Строкой запуска слой правил не исчерпывается: часть его команд исполняет агент, а не программа.
75
- `/feedback` кладёт слово о правилах блоком в файл предложений, `/skill-curator` разбирает
76
- закрытую задачу, `/next-session` закрывает заход.
86
+ Часть команд слоя исполняет агент, а не программа: `/feedback` кладёт слово о правилах блоком в
87
+ файл предложений, `/skill-curator` разбирает закрытую задачу, `/next-session` закрывает заход.
88
+
89
+ Команд правки самого пакета здесь нет: они зовутся там, где лежат его ресурсы.
90
+
91
+ ## Подъём версии
92
+
93
+ Совпавший заголовок замещает раздел пакета целиком, и всё, что пакет дописал в такой раздел новой
94
+ версией, пропадает молча: раскладка сходится, заголовки совпадают, а утверждений нет. Сверка
95
+ заголовков ловит переименование раздела, а не пополнение, — других свидетелей у потери не бывает.
96
+
97
+ Порядок подъёма поэтому из трёх шагов, и первый идёт до установки.
98
+
99
+ 1. **Снимок прежней редакции ресурсов.** Установка стирает её без следа, и сравнить потом не с
100
+ чем.
77
101
 
78
- Команд, которыми правят сам пакет, здесь нет: они зовутся там, где лежат его ресурсы, и вместе
79
- с ними не едут.
102
+ ```bash
103
+ cp -r node_modules/@rt-tools/agent-kit/assets /tmp/agent-kit-assets-<прежняя версия>
104
+ ```
105
+
106
+ 2. **Установка и раскладка.** Обычным порядком.
107
+ 3. **Сверка замещённых разделов по снимку.** Какие разделы замещены, называет `doctor` — строкой
108
+ «замещено надстройками разделов» и перечнем «ресурс · заголовок». Каждый из них читается в
109
+ снимке и в новой редакции: что пакет дописал, дописывается в надстройку руками.
110
+
111
+ Ни `doctor`, ни `sync --check` сами этого не сверяют: прежней редакции у них нет.
112
+
113
+ По каждому названному разделу сверяются статьи, а не заголовки: заголовок как раз и совпал,
114
+ этим раздел замещён. Готовая пара команд — в холодной части рядом.
115
+
116
+ Дальше решение обычное: раздел, ради которого надстройка заводилась, остаётся замещённым, а
117
+ раздел, чья причина ушла с исправленной редакцией, снимается — о том и говорит четвёртая строка
118
+ предложения.
80
119
 
81
120
  ## Что пакет везёт, а что остаётся дереву
82
121
 
@@ -108,22 +147,20 @@ npx agent-kit propose # отправить груз в приём: сво
108
147
 
109
148
  Слой правил правится не по памяти, а по тому, как им пользовались. Держится это тремя вещами.
110
149
 
111
- **Наблюдения** пишут сами гарды — в `.claude/rt-kit/observations/`, файлом на день. В строке
112
- имя ресурса пакета, род события, род правки, версия и признак сессии; путей дерева, имён его
113
- доменов и его собственного имени там нет. Выключаются ключом `"observe": false` в конфиге.
150
+ **Наблюдения** пишут сами гарды — в `.claude/rt-kit/observations/`, файлом на день. В строке имя
151
+ ресурса пакета, род события, род правки, версия и признак сессии; путей дерева и его имени там
152
+ нет. Выключаются ключом `"observe": false` в конфиге.
114
153
 
115
154
  **Сводка** — `agent-kit stats`. Самая ценная её строка не «чем пользовались», а **что разложено
116
155
  и не загружено ни разу**: правило, которого никто не открыл, ничем себя не выдаёт.
117
156
 
118
157
  **Цена** — `agent-kit cost`. Сводка говорит, чем пользовались; цена — сколько это стоило: вес
119
- входа в работу, вес одного правила и вес всего слоя. Считается не файл, а то, что заход
120
- получает: описание приходит ему полем, словарь и карта хода — выводом хуков. Меряется в
121
- символах и байтах, на месте и без сети; чем считано, стоит в первой строке вывода, и число
122
- сравнимо только со снятым той же командой.
123
-
124
- **Предложения** приходят двумя путями. Разбор закрытой задачи командой `/skill-curator`
125
- приносит их пачкой, задним числом. Слово, сказанное посреди работы, кладёт командой `/feedback`
126
- сам агент: до неё такое слово адреса не получало вовсе и умирало вместе с сессией. Оба пути
158
+ входа в работу, вес одного правила и вес всего слоя. Считается не файл, а то, что заход получает:
159
+ описание приходит полем, словарь и карта хода — выводом хуков. Число сравнимо только со снятым
160
+ той же командой.
161
+
162
+ **Предложения** приходят двумя путями: разбор закрытой задачи — командой `/skill-curator` —
163
+ приносит их пачкой, а слово, сказанное посреди работы, кладёт командой `/feedback` сам агент. Оба
127
164
  пишут в один файл дня и в одной форме; в сеть не ходит ни один — увозит их отправка.
128
165
 
129
166
  Каждая запись несёт четыре строки: **место** — куда правка встаёт в ресурсе, **повод** — что
@@ -132,17 +169,11 @@ npx agent-kit propose # отправить груз в приём: сво
132
169
  снимаются, когда правка приедет редакцией пакета.
133
170
 
134
171
  Третья строка — единственная, которую проверяет машина: цитата ищется в ресурсе, и ненайденная
135
- отбивает блок. Ближайшего нет вовсе — так и пишется: «нет». Стоит она затем, чтобы ресурс был
136
- прочитан: разбор происшествия кончается предложением дописать статью в тот же ресурс, который
137
- промах уже описывал, и вторая статья о том же дороже, чем её отсутствие. Похожесть текстов сюда
138
- не годится замер показал, что законное соседство двух статей одного правила и законный перенос
139
- удачной статьи на соседнее место дают одно и то же число. Отбитый блок остаётся лежать с
140
- отметкой «отбито» и причиной: видно, что разбор был, и видно, почему он не стал правкой.
141
-
142
- Четвёртая пишется затем, что предложение уезжает наружу, а
143
- надстройка остаётся лежать здесь: без неё дерево не может сказать, какие из его надстроек
144
- исправленная редакция закрыла, — снять наугад страшно, оставить дёшево, и надстройка остаётся
145
- навсегда, молча замещая исправленный раздел пакета. Снимать нечего — так и пишется; пустой
172
+ отбивает блок. Ближайшего нет вовсе — так и пишется: «нет». Отбитый блок остаётся лежать с
173
+ отметкой «отбито» и причиной: видно, что разбор был и почему он не стал правкой.
174
+
175
+ Четвёртая пишется затем, что предложение уезжает наружу, а надстройка остаётся лежать здесь:
176
+ без неё она замещает уже исправленный раздел навсегда. Снимать нечего так и пишется; пустой
146
177
  четвёртая строка не бывает.
147
178
 
148
179
  Каждому предложению ставится адрес: «пакет», «компаньон» или «дерево». Выгружаются они файлом в `.claude/rt-kit/proposals/`
@@ -154,35 +185,37 @@ npx agent-kit propose # отправить груз в приём: сво
154
185
  это выложено всему свету. Адрес приёма объявляется ключом `intake` в конфиге дерева, токен —
155
186
  ключом `token`, и лежит он вне дерева.
156
187
 
157
- **Отметка об отправке в файле предложения след для человека, а не хранилище состояния.** Файл
158
- живёт в рабочем дереве, а дерево у каждой ветки своё: отметка, поставленная в одной ветке, в
159
- соседней не видна, и тот же текст уезжает вторым разом. Второй записью он при этом не
160
- становится — приём отбирает уже приехавшее по признаку предложения, и его ответ говорит,
161
- сколько записей легло и сколько уже лежало. Строка «принято 0, уже лежало 3» означает, что
162
- нового не уехало ничего.
188
+ Оба значения приходят от владельца приёма, а не придумываются потребителем: адрес он называет, а токен выдаёт
189
+ одноразовым кодом приглашения код заводит дерево в приёме и кладёт токен в файл ключа `token`; выданный в админке
190
+ кладётся тем же входом и в сеть не идёт. До приглашения отправка отказывает по устройству, а не по недонастройке.
191
+
192
+ **Признак дерева считает отправитель, а не человек.** Он выводится из адреса репозитория, и
193
+ запись в приёме заводится именно им: дерево, заведённое своим словом, приёмник не узнаёт и
194
+ отвечает отказом на каждой отправке. Что уедет и под каким признаком, печатает прогон вхолостую —
195
+ единственный способ узнать признак до заведения записи.
196
+
197
+ **Отметка об отправке — след для человека, а не хранилище состояния: она говорит, что запись в
198
+ приёме есть, а не что её положил этот вызов.** Чистое дерево после отправки значит, что весь
199
+ груз в приёме уже лежал, а не что отправка не сработала.
163
200
 
164
201
  Разбирают их там, где лежат правимые ресурсы и видно всех потребителей сразу, — а сюда
165
202
  приезжает ответ приёма о том, сколько записей легло.
166
203
 
167
- **Имя файла предложения в текстах дерева не называется.** Каталог предложений в историю не едет:
168
- файл лежит на той машине, где его написали, и адрес на него ведёт в пустоту у всех остальных —
169
- проверка путей краснеет в каждом дереве, кроме одного, а читателю ссылка не даёт ничего.
170
- Написанное в разборе происшествия и в любом другом тексте репозитория говорит, кому предложение
171
- отправлено и о чём оно; ресурс пакета при этом называть можно — он в истории есть.
204
+ **Имя файла предложения в текстах дерева не называется.** Читателю чужого дерева оно не даёт
205
+ ничего, а там, где каталог остаётся на машине автора, ссылка ведёт в пустоту и проверка путей
206
+ краснеет. Текст репозитория говорит, кому предложение отправлено и о чём оно; ресурс пакета
207
+ при этом называть можно он в истории есть.
172
208
 
173
- Предложение работу не выправляет. Оно лежит текстом, читается глазами и в контекст сам собой
174
- не приходит: замечание было прочитано, процитировано владельцу и нарушено в том же ходе —
175
- цитата не становится правилом от того, что её произнесли. Закрытым предложение считается,
176
- только войдя в ресурс пакета; до этого на него не ссылаются как на действующее требование и не
177
- считают дырку закрытой.
209
+ Предложение работу не выправляет. Оно лежит текстом, читается глазами и в контекст сам собой не
210
+ приходит; цитата не становится правилом от того, что её произнесли. Закрытым предложение
211
+ считается, только войдя в ресурс пакета: до этого на него не ссылаются как на действующее
212
+ требование и не считают дырку закрытой.
178
213
 
179
214
  **Слово владельца о предложении — «отправь», «заведи», «напиши пропозал» и любая другая форма
180
215
  того же — исполняется отправкой в тот же ход.** Сухой прогон отправкой не является: он
181
- показывает, что уехало бы, ничего не заводит и следа наружу не оставляет. Неудобна отправка
182
- ровно в одном месте она пишет отметки в файлы предложений и делает дерево грязным; при
183
- открытом PR отметки ложатся вторым коммитом в ту же ветку, и это их место, а не повод
184
- отложить. Стережёт это гард предложения на завершении хода — там же, где стоит гард
185
- происшествия, и по той же причине.
216
+ показывает, что уехало бы, ничего не заводит и следа наружу не оставляет. Отметки, которыми
217
+ отправка пачкает дерево, ложатся вторым коммитом в ту же ветку это их место, а не повод
218
+ отложить. Стережёт это гард предложения на завершении хода.
186
219
 
187
220
  ## Установка туда, где уже всё своё
188
221
 
@@ -206,42 +239,32 @@ npx agent-kit propose # отправить груз в приём: сво
206
239
 
207
240
  - **Молчание требованию не отвечает.** Дерево с пустым `has` не получает ни одного помеченного
208
241
  ресурса: положенный наугад, он вернётся пустым компаньоном, заполнить который нечем.
209
- - **Требование — не вид.** Вид отвечает на «какой из трёх» и выбирается один; свойств у дерева
210
- сразу несколько, и дерево, которое публикует пакеты и держит приложение, называет оба.
211
- - **`only` сильнее требования.** Ресурс, названный поимённо, ложится и при неотвеченном
212
- требовании; перечень раскладки называет это вслух, а отказ по его пустому компаньону зовёт
213
- снять ресурс, а не заполнять черновик.
214
- - **Свойство, которого пакет не объявлял, роняет раскладку** — что в `has` дерева, что в имени
215
- ресурса. Объявлены свойства перечнем при пакете, рядом с осями различия.
242
+ - **Требование — не вид.** Вид выбирается один; свойств у дерева сразу несколько.
216
243
 
217
244
  ## Выключенная роль
218
245
 
219
- Роль, при которой стоит гард, зовётся не по усмотрению исполнителя: гард держит работу, пока
220
- роль не сказала своё. Дерево, которому такая роль в эту минуту мешает, называет её ключом
221
- `rolesOff` — именем файла роли без расширения.
246
+ Роль, при которой стоит гард, зовётся не по усмотрению исполнителя: гард держит работу, пока роль
247
+ не сказала своё. Дерево, которому она мешает, называет её ключом `rolesOff` именем файла роли.
222
248
 
223
249
  ```json
224
250
  { "rolesOff": ["strict-teacher"] }
225
251
  ```
226
252
 
227
253
  - **Выключается обязательность вызова, а не роль.** Файл роли остаётся разложенным, и позвать её
228
- руками можно в любую минуту. Список читают сами гарды — помощником, который лежит с ними
229
- рядом; собственного объявления события у него нет, к действиям агента он не подключается.
254
+ руками можно в любую минуту. Список читают сами гарды — помощником, лежащим рядом с ними.
230
255
  - **От отказа ключом `skip` это отличается тем, что ничего не убирает.** Отказ не кладёт файл
231
256
  роли вовсе: звать становится некого, а гард при ней остаётся лежать и продолжает отбивать.
232
257
  Здесь наоборот — роль на месте, молчит гард.
233
- - **Настройка, которую не прочитать, роль не выключает.** Не нашлось `jq`, нет настройки, в
234
- настройке сломан разбор — гард судит, как судил. Обратный выбор гасил бы слой правил молча, и
235
- заметить это было бы нечем.
236
- - **Ключ, написанный не списком, ловит раскладка, а не гард.** Гарду виден только список имён:
237
- строка вместо списка читается им как «роль включена», и роль работает, хотя дерево считает её
238
- выключенной. Отказывает на этом разбор настройки — первой же раскладкой, называя ключ.
239
- - **Выключение живёт в настройке дерева, а не в настройке агента.** Строка, вырезанная из
240
- настроек агента руками, теряется на первой же правке того файла, и вернуть роль будет нечем.
241
- Здесь оно объявлено в одном месте и видно всякому, кто читает настройку дерева.
242
258
 
243
259
  ## Ловушки раскладки
244
260
 
261
+ - **Запись файла командой оболочки судится по всем путям, названным в её теле.** Гейт вынимает
262
+ пути из текста команды, а тело документа читает целиком, как только в команде встречается имя
263
+ интерпретатора, — и строка запуска первой строкой записываемого файла возвращает его туда сама.
264
+ Строка импорта разложенного модуля требует тогда правило пакетного слоя наравне с правилом
265
+ самого файла, а требуется за раз одно: два отказа подряд, и каждый уносит уже написанное тело.
266
+ Инструмент правки судится одним своим путём и переписывать тело не заставляет; перенаправление
267
+ оболочки остаётся для того, что файлом дерева не станет.
245
268
  - **Своё, стоящее рядом с разложенным, повторяет его механику молча.** Проверка, гард и утилита
246
269
  дерева лежат в тех же каталогах, что и пакетные, а общий разбор списка известного, корни
247
270
  исходников, список пропускаемых каталогов и снимок долга приезжают модулем настройки проверок.
@@ -250,3 +273,12 @@ npx agent-kit propose # отправить груз в приём: сво
250
273
  совпадение текста. Признак один, и он читается, а не ищется: до того как в своей проверке
251
274
  заводится разбор списка, чтение настройки или сравнение с накопленным, смотрят, что
252
275
  экспортирует модуль настройки проверок и чем живут соседние проверки.
276
+ - **Правило, загруженное инструментом, бывает показано не целиком, и обрыв ничем не помечен.**
277
+ Длинный файл приезжает в контекст обрезанным по строке, а снаружи это выглядит концом: показанное
278
+ кончается осмысленным пунктом, и число разделов с оглавлением никто не сверяет. Бьёт обрыв ровно
279
+ по хвосту, а хвост — то место, где дерево отменяет умолчания пакета: разделы надстройки сливаются
280
+ по совпавшему заголовку и новыми уходят в конец. Заход, читавший правило до конца по своему
281
+ ощущению, исполнил пакетный образец буквально и открыл заявку черновиком там, где дерево
282
+ черновиков не держит вовсе. Отсюда порядок: решение о порядке работы принимается только после
283
+ того, как показанные строки сверены с длиной файла — одной командой, — а расходятся они, файл
284
+ дочитывается чтением.
@@ -29,4 +29,8 @@
29
29
  ## Что ушло в слой правил
30
30
 
31
31
  <Предложение с адресом либо правка закона, правила, паттерна — с именами. Запись без этого
32
- раздела закрытой не считается: разбор, из которого ничего не вышло, — жалоба.>
32
+ раздела закрытой не считается: разбор, из которого ничего не вышло, — жалоба.
33
+
34
+ Предложение называется адресом и предметом — «в пакет, о таком-то», — а не путём к файлу
35
+ предложений: каталог предложений в историю не едет, и путь у любого другого читателя ведёт в
36
+ пустоту. Ресурс, к которому предложение написано, называть можно: он в истории есть.>
@@ -1 +1 @@
1
- {"version":3,"file":"agent-kit.d.ts","sourceRoot":"","sources":["../../../projects/agent-kit/src/bin/agent-kit.ts"],"names":[],"mappings":";AAeA,OAAO,EAAqC,iBAAiB,EAAqB,MAAM,oBAAoB,CAAC;AAwU7G,wBAAsB,IAAI,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAU9E"}
1
+ {"version":3,"file":"agent-kit.d.ts","sourceRoot":"","sources":["../../../projects/agent-kit/src/bin/agent-kit.ts"],"names":[],"mappings":";AAeA,OAAO,EAAqC,iBAAiB,EAAqB,MAAM,oBAAoB,CAAC;AAoW7G,wBAAsB,IAAI,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAU9E"}