@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.
- package/assets/checks/board-epics.github.mjs +123 -0
- package/assets/checks/board-gh.github.mjs +121 -0
- package/assets/checks/board-paths.github.mjs +88 -0
- package/assets/checks/board-runs.github.mjs +8 -0
- package/assets/checks/board-titles.github.mjs +66 -0
- package/assets/checks/board.github.mjs +77 -73
- package/assets/checks/check-board.github.mjs +56 -7
- package/assets/checks/check-file-size.mjs +10 -2
- package/assets/checks/check-glossary.mjs +170 -0
- package/assets/checks/check-hook-scope.mjs +126 -0
- package/assets/checks/check-profile-drift.mjs +195 -0
- package/assets/checks/check-push-gate.mjs +59 -1
- package/assets/checks/check-schema-drift.mjs +12 -5
- package/assets/checks/check-specs.mjs +1 -1
- package/assets/checks/rt-kit-checks.config.mjs +13 -0
- package/assets/checks/spec-anchors.mjs +2 -2
- package/assets/checks/spec-contract.mjs +9 -0
- package/assets/defaults/gate-map.sh +13 -4
- package/assets/defaults/project.sh +31 -108
- package/assets/defaults/shell.sh +139 -0
- package/assets/docs/GLOSSARY.md +1 -1
- package/assets/hooks/browser-device-id.sh +20 -4
- package/assets/hooks/browser-guard-device-id.sh +5 -2
- package/assets/hooks/browser-guard-no-other-drivers.sh +41 -2
- package/assets/hooks/claim-guard.sh +22 -1
- package/assets/hooks/docs-guard.sh +1 -1
- package/assets/hooks/exam-guard.sh +85 -12
- package/assets/hooks/git-guard-delivery-conflict.sh +85 -0
- package/assets/hooks/git-guard-delivery-folder.sh +19 -0
- package/assets/hooks/git-guard-delivery-signature.sh +14 -5
- package/assets/hooks/git-guard-delivery.sh +54 -2
- package/assets/hooks/git-guard-push-tests.sh +21 -1
- package/assets/hooks/grill-gate-ask.sh +25 -0
- package/assets/hooks/grill-gate.sh +75 -11
- package/assets/hooks/lint-after-edit.sh +44 -16
- package/assets/hooks/proposal-guard.sh +11 -4
- package/assets/hooks/rule-source-guard.sh +8 -13
- package/assets/hooks/skill-gate-layers.sh +7 -0
- package/assets/hooks/skill-gate.sh +29 -0
- package/assets/hooks/task-context-load.sh +32 -0
- package/assets/hooks/task-flow-context.sh +194 -0
- package/assets/hooks/task-flow-draft-guard.sh +109 -0
- package/assets/hooks/task-flow-guard.sh +27 -159
- package/assets/hooks/turn-exit-guard.sh +53 -88
- package/assets/hooks/waiting-turn-guard.sh +65 -2
- package/assets/hooks/window-fill-guard.sh +5 -1
- package/assets/hooks/work-start-guard.sh +166 -0
- package/assets/hooks/write-targets.sh +24 -0
- package/assets/laws/delivery.md +19 -0
- package/assets/laws/frontend-application.md +4 -0
- package/assets/laws/verifiability.md +44 -0
- package/assets/laws/work-conduct.md +15 -0
- package/assets/patterns/browser-verification-measure.md +3 -1
- package/assets/patterns/browser-verification-stand.md +17 -4
- package/assets/patterns/doc-style-write.md +62 -2
- package/assets/patterns/git-workflow-commit.github.md +33 -5
- package/assets/patterns/git-workflow-docker.md +22 -0
- package/assets/patterns/git-workflow-freshness.md +87 -0
- package/assets/patterns/git-workflow-merge.md +41 -0
- package/assets/patterns/git-workflow-migration.md +11 -0
- package/assets/patterns/git-workflow-pr.github.md +12 -1
- package/assets/patterns/git-workflow-restart.md +18 -0
- package/assets/patterns/git-workflow-secrets.md +14 -0
- package/assets/patterns/git-workflow-stack.md +93 -1
- package/assets/patterns/lib-layers-move.md +4 -0
- package/assets/patterns/spec-driven-domain.md +47 -2
- package/assets/patterns/spec-driven-rule.md +16 -4
- package/assets/patterns/spec-driven-sweep.md +57 -0
- package/assets/patterns/status-report-table.github.md +1 -1
- package/assets/patterns/task-flow-archive.md +58 -16
- package/assets/patterns/task-flow-close.md +106 -23
- package/assets/patterns/task-flow-handoff.md +14 -2
- package/assets/patterns/task-flow-resume.md +35 -8
- package/assets/patterns/task-flow-start.md +60 -22
- package/assets/patterns/testing-e2e.md +23 -0
- package/assets/patterns/turn-entry-map.md +1 -1
- package/assets/pitfalls/agent-kit.md +71 -3
- package/assets/pitfalls/doc-style.md +15 -0
- package/assets/pitfalls/git-workflow.github.md +88 -0
- package/assets/pitfalls/spec-driven.md +22 -0
- package/assets/pitfalls/task-flow.md +113 -0
- package/assets/pitfalls/testing.md +6 -0
- package/assets/pitfalls/turn-conduct.md +49 -0
- package/assets/rules/browser-verification.md +58 -0
- package/assets/rules/deploy-flow.azure.md +8 -0
- package/assets/rules/deploy-flow.github.md +27 -0
- package/assets/rules/deploy-flow.gitlab.md +8 -0
- package/assets/rules/doc-style.md +20 -0
- package/assets/rules/git-workflow.azure.md +22 -2
- package/assets/rules/git-workflow.github.md +127 -118
- package/assets/rules/git-workflow.gitlab.md +17 -4
- package/assets/rules/lists.md +5 -0
- package/assets/rules/observability.needs-app.md +4 -0
- package/assets/rules/reuse-first.md +14 -0
- package/assets/rules/shared-code.md +5 -0
- package/assets/rules/spec-driven.md +33 -15
- package/assets/rules/task-flow.md +132 -126
- package/assets/rules/testing.md +41 -2
- package/assets/rules/turn-conduct.md +73 -57
- package/assets/rules/turn-entry.md +6 -0
- package/assets/samples/tasks/_template/grill.md +5 -0
- package/assets/samples/tasks/_template/plan.md +3 -0
- package/assets/skills/agent-kit.md +108 -76
- package/assets/templates/postmortem.md +5 -1
- package/bin/agent-kit.d.ts.map +1 -1
- package/bin/agent-kit.js +30 -6
- package/bin/agent-kit.js.map +1 -1
- package/lib/catalog.d.ts.map +1 -1
- package/lib/catalog.js +2 -1
- package/lib/catalog.js.map +1 -1
- package/lib/commands.d.ts.map +1 -1
- package/lib/commands.js +96 -7
- package/lib/commands.js.map +1 -1
- package/lib/hooks-map.d.ts +26 -0
- package/lib/hooks-map.d.ts.map +1 -1
- package/lib/hooks-map.js +58 -2
- package/lib/hooks-map.js.map +1 -1
- package/lib/sections.d.ts +6 -0
- package/lib/sections.d.ts.map +1 -1
- package/lib/sections.js +19 -0
- package/lib/sections.js.map +1 -1
- package/lib/shipment.d.ts +2 -0
- package/lib/shipment.d.ts.map +1 -1
- package/lib/shipment.fixture.d.ts +5 -0
- package/lib/shipment.fixture.d.ts.map +1 -1
- package/lib/shipment.fixture.js +7 -0
- package/lib/shipment.fixture.js.map +1 -1
- package/lib/shipment.js +13 -1
- package/lib/shipment.js.map +1 -1
- package/lib/sync.d.ts +35 -3
- package/lib/sync.d.ts.map +1 -1
- package/lib/sync.js +59 -8
- package/lib/sync.js.map +1 -1
- package/package.json +1 -1
- package/rt-tools-agent-kit-0.18.0.tgz +0 -0
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
76
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
+
пустоту. Ресурс, к которому предложение написано, называть можно: он в истории есть.>
|
package/bin/agent-kit.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|