@rsconcept/rstool 1.7.1 → 2.0.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 (126) hide show
  1. package/README.md +7 -7
  2. package/dist/index.js +1 -1
  3. package/dist/mappers/model-adapter.d.ts +6 -2
  4. package/dist/mappers/model-adapter.js +28 -3
  5. package/dist/mappers/model-adapter.js.map +1 -1
  6. package/dist/mappers/schema-adapter.d.ts +1 -2
  7. package/dist/mappers/schema-adapter.js +1 -1
  8. package/dist/mappers/types.d.ts +4 -5
  9. package/dist/models/index.js +1 -1
  10. package/dist/models/rstool-agent.js +1 -2
  11. package/dist/{models-DG2uTaV_.js → models-D06g8LId.js} +6 -5
  12. package/dist/{models-DG2uTaV_.js.map → models-D06g8LId.js.map} +1 -1
  13. package/dist/{rsform-builder-DKwZfJvN.js → rsform-builder-BlXEe5Ow.js} +2 -2
  14. package/dist/{rsform-builder-DKwZfJvN.js.map → rsform-builder-BlXEe5Ow.js.map} +1 -1
  15. package/dist/session/session-store.d.ts +3 -3
  16. package/dist/session/session-store.js +1 -2
  17. package/dist/wrapper/client.d.ts +15 -9
  18. package/dist/wrapper/client.js +79 -12
  19. package/dist/wrapper/client.js.map +1 -1
  20. package/dist/wrapper/stdio-wrapper.d.ts +1 -1
  21. package/dist/wrapper/stdio-wrapper.js +18 -10
  22. package/dist/wrapper/stdio-wrapper.js.map +1 -1
  23. package/docs/BRIEF.md +93 -0
  24. package/docs/CONCEPTUAL-SCHEMA.md +17 -2
  25. package/docs/CONSTRUCTIONS.md +384 -0
  26. package/docs/DIAGNOSTICS.md +9 -8
  27. package/docs/DOMAIN.md +12 -0
  28. package/docs/METHOD.md +208 -0
  29. package/docs/MODEL-TESTING.md +48 -0
  30. package/docs/PORTAL-API.md +38 -285
  31. package/docs/PORTAL-MODELS.md +24 -0
  32. package/docs/PORTAL-OSS.md +56 -0
  33. package/docs/PORTAL-PUBLISH.md +39 -0
  34. package/docs/PORTAL-READ.md +301 -0
  35. package/docs/README.md +8 -4
  36. package/docs/REQUIREMENTS.md +61 -0
  37. package/docs/SYNTAX.md +5 -4
  38. package/docs/TYPIFICATION.md +12 -3
  39. package/docs/brief.schema.json +173 -0
  40. package/examples/README.md +16 -2
  41. package/examples/access-control/NOTES.md +23 -0
  42. package/examples/access-control/anti/collapsed.json +439 -0
  43. package/examples/access-control/anti/weakened.json +439 -0
  44. package/examples/access-control/brief-v1.json +231 -0
  45. package/examples/access-control/brief.json +310 -0
  46. package/examples/access-control/build-rsform.ts +151 -0
  47. package/examples/access-control/requirements-v1.md +9 -0
  48. package/examples/access-control/requirements-v2.md +4 -0
  49. package/examples/access-control/rsform-session-v1.json +439 -0
  50. package/examples/access-control/rsform-session.json +523 -0
  51. package/examples/audit-diagnostics.ts +9 -1
  52. package/examples/briefs.test.ts +126 -0
  53. package/examples/clinic-booking/NOTES.md +24 -0
  54. package/examples/clinic-booking/anti/collapsed.json +615 -0
  55. package/examples/clinic-booking/anti/species-as-genus.json +568 -0
  56. package/examples/clinic-booking/brief-v1.json +332 -0
  57. package/examples/clinic-booking/brief.json +405 -0
  58. package/examples/clinic-booking/build-rsform.ts +174 -0
  59. package/examples/clinic-booking/requirements-v1.md +9 -0
  60. package/examples/clinic-booking/requirements-v2.md +4 -0
  61. package/examples/clinic-booking/rsform-session-v1.json +615 -0
  62. package/examples/clinic-booking/rsform-session.json +700 -0
  63. package/examples/diagnostics-utils.ts +26 -0
  64. package/examples/kinship/brief.json +337 -0
  65. package/examples/kinship/build-rsform.ts +7 -4
  66. package/examples/kinship/rsform-session.json +20 -63
  67. package/examples/kinship/rsmodel-session.json +14 -14
  68. package/examples/kinship-subordination/NOTES.md +49 -0
  69. package/examples/kinship-subordination/brief.json +161 -0
  70. package/examples/kinship-subordination/build-rsform.ts +100 -0
  71. package/examples/kinship-subordination/rsform-session.json +795 -0
  72. package/examples/library-loans/NOTES.md +46 -0
  73. package/examples/library-loans/anti/collapsed.json +481 -0
  74. package/examples/library-loans/anti/species-as-genus.json +334 -0
  75. package/examples/library-loans/anti/uncovered.json +406 -0
  76. package/examples/library-loans/anti/weakened.json +464 -0
  77. package/examples/library-loans/brief-v1.json +340 -0
  78. package/examples/library-loans/brief.json +502 -0
  79. package/examples/library-loans/build-rsform.ts +239 -0
  80. package/examples/library-loans/requirements-v1.md +11 -0
  81. package/examples/library-loans/requirements-v2.md +5 -0
  82. package/examples/library-loans/rsform-session-v1.json +481 -0
  83. package/examples/library-loans/rsform-session.json +652 -0
  84. package/examples/library-loans/source-markup.md +18 -0
  85. package/examples/movd/brief.json +220 -0
  86. package/examples/movd/build-rsform.ts +5 -2
  87. package/examples/movd/rsform-session.json +14 -46
  88. package/examples/subordination/NOTES.md +59 -0
  89. package/examples/subordination/anti/collapsed.json +556 -0
  90. package/examples/subordination/anti/single-relation.json +125 -0
  91. package/examples/subordination/anti/transitive.json +573 -0
  92. package/examples/subordination/anti/weakened.json +539 -0
  93. package/examples/subordination/brief.json +386 -0
  94. package/examples/subordination/build-rsform.ts +63 -0
  95. package/examples/subordination/constants.ts +115 -0
  96. package/examples/subordination/rsform-session.json +556 -0
  97. package/examples/subordination/source-markup.md +19 -0
  98. package/examples/subordination/source.md +40 -0
  99. package/package.json +29 -20
  100. package/skills/INSTALL.md +28 -29
  101. package/skills/README.md +25 -10
  102. package/skills/rs-core/SKILL.md +56 -0
  103. package/skills/rs-explain/SKILL.md +28 -0
  104. package/skills/rs-explicate/SKILL.md +71 -0
  105. package/skills/rs-interpret/SKILL.md +67 -0
  106. package/skills/rs-portal/SKILL.md +51 -0
  107. package/skills/rs-review/SKILL.md +79 -0
  108. package/skills/rs-scope/SKILL.md +67 -0
  109. package/skills/rs-synthesis/SKILL.md +52 -0
  110. package/skills/rstool/SKILL.md +70 -0
  111. package/skills/rstool-helper/GUIDE.md +18 -272
  112. package/skills/rstool-helper/SKILL.md +8 -55
  113. package/skills/{rstool-helper → rstool-runtime}/EXAMPLES.md +40 -12
  114. package/skills/{rstool-helper → rstool-runtime}/REFERENCE.md +28 -7
  115. package/skills/rstool-runtime/SKILL.md +96 -0
  116. package/skills/scripts/brief-check.test.ts +165 -0
  117. package/skills/scripts/brief-check.ts +826 -0
  118. package/skills/scripts/check-brief.ts +94 -0
  119. package/skills/scripts/rstool-skills.mjs +119 -0
  120. package/skills/scripts/skill-stubs.test.ts +48 -0
  121. package/src/mappers/model-adapter.ts +34 -1
  122. package/src/models/rstool-agent.test.ts +95 -0
  123. package/src/wrapper/client.test.ts +43 -4
  124. package/src/wrapper/client.ts +95 -16
  125. package/src/wrapper/stdio-handler.test.ts +43 -0
  126. package/src/wrapper/stdio-handler.ts +19 -5
@@ -0,0 +1,386 @@
1
+ {
2
+ "version": 1,
3
+ "status": "confirmed",
4
+ "approach": "education",
5
+ "object": "Формальные структуры подчинения",
6
+ "task": "Построить концептуальную схему, порождающую разнообразие отношений «начальник – подчинённый» (Т2 §4.2.1.1); учебная микротеория",
7
+ "source": "examples/subordination/source.md — Т2 §4.2.1",
8
+ "restrictions": [
9
+ {
10
+ "id": "L1",
11
+ "excludes": "все властные отношения, кроме подчинения",
12
+ "inexpressible": ["демократия", "единовластие", "монархия"]
13
+ },
14
+ {
15
+ "id": "L2",
16
+ "excludes": "время: бывшие, настоящие и будущие отношения",
17
+ "inexpressible": ["мой подчинённый, который является моим бывшим начальником"]
18
+ },
19
+ {
20
+ "id": "L3",
21
+ "excludes": "процедуры формирования и изменения структуры подчинения, воспроизводство кадров",
22
+ "inexpressible": ["назначение на должность", "уход на пенсию", "ответственность избираемых перед избирателями"]
23
+ },
24
+ {
25
+ "id": "L4",
26
+ "excludes": "психология",
27
+ "inexpressible": ["сам себе приказываю"]
28
+ },
29
+ {
30
+ "id": "L5",
31
+ "excludes": "способы достижения, поддержания и потери власти",
32
+ "inexpressible": ["узурпация власти"]
33
+ }
34
+ ],
35
+ "expressiveness": [
36
+ {
37
+ "id": "E1",
38
+ "concept": "прямое подчинение",
39
+ "ref": "§4.2.1.3",
40
+ "via": "пары людей из руководящей и руководимой совокупностей одного отношения",
41
+ "constituent": "D1"
42
+ },
43
+ {
44
+ "id": "E2",
45
+ "concept": "косвенное подчинение («вассал моего вассала — не мой вассал»)",
46
+ "ref": "§4.2.1.3",
47
+ "via": "подчинённые по линиям минус прямые",
48
+ "constituent": "F3"
49
+ },
50
+ {
51
+ "id": "E3",
52
+ "concept": "линии прямого подчинения",
53
+ "ref": "§4.2.1.3",
54
+ "via": "замыкание прямого подчинения через R{}",
55
+ "constituent": "F2"
56
+ },
57
+ {
58
+ "id": "E4",
59
+ "concept": "коллективное руководство группой",
60
+ "ref": "§4.2.1.3",
61
+ "via": "пары S1 с ≥ 2 людьми в обеих совокупностях",
62
+ "constituent": "D5"
63
+ },
64
+ {
65
+ "id": "E5",
66
+ "concept": "коллективное руководство одним человеком",
67
+ "ref": "§4.2.1.3",
68
+ "via": "пары S1 с ≥ 2 начальниками и одним подчинённым",
69
+ "constituent": "D4"
70
+ },
71
+ {
72
+ "id": "E6",
73
+ "concept": "отношения подчинения внутри коллективного руководства",
74
+ "ref": "§4.2.1.3",
75
+ "via": "пары S1, обе стороны которых внутри совокупности",
76
+ "constituent": "F4"
77
+ },
78
+ {
79
+ "id": "E7",
80
+ "concept": "«чистое» коллегиальное руководство",
81
+ "ref": "§4.2.1.3",
82
+ "via": "коллективный начальник без внутреннего подчинения",
83
+ "constituent": "D8"
84
+ },
85
+ {
86
+ "id": "E8",
87
+ "concept": "коллегиальное руководство с единоначалием",
88
+ "ref": "§4.2.1.3",
89
+ "via": "один член единолично руководит остальными членами",
90
+ "constituent": "D9"
91
+ },
92
+ {
93
+ "id": "E9",
94
+ "concept": "люди вне отношений подчинения",
95
+ "ref": "§4.2.1.7",
96
+ "via": "люди вне обеих проекций прямого подчинения",
97
+ "constituent": "D10"
98
+ },
99
+ {
100
+ "id": "E10",
101
+ "concept": "единоличное руководство",
102
+ "ref": "§4.2.1.5.1",
103
+ "via": "пары S1 с одноэлементной руководящей совокупностью",
104
+ "constituent": "D2"
105
+ }
106
+ ],
107
+ "distinctions": [
108
+ {
109
+ "id": "V1",
110
+ "between": ["F1", "E2"],
111
+ "text": "прямые подчинённые ≠ косвенные: «вассал моего вассала — не мой вассал»",
112
+ "witness": "SC1"
113
+ },
114
+ {
115
+ "id": "V2",
116
+ "between": ["E7", "E8"],
117
+ "text": "«чистое» коллегиальное руководство ≠ коллегиальное с единоначалием",
118
+ "witness": "SC1"
119
+ },
120
+ {
121
+ "id": "V3",
122
+ "between": ["E4", "E5"],
123
+ "text": "коллективное руководство группой ≠ одним человеком",
124
+ "witness": "SC1"
125
+ }
126
+ ],
127
+ "invariants": [
128
+ {
129
+ "id": "I1",
130
+ "text": "Сам себе не начальник",
131
+ "ref": "§4.2.1.5.3",
132
+ "constituent": "A1",
133
+ "positive": "SC1",
134
+ "negative": "SC2"
135
+ },
136
+ {
137
+ "id": "I2",
138
+ "text": "У отношения подчинения обе стороны непусты",
139
+ "ref": "§4.2.1.8",
140
+ "constituent": "A2",
141
+ "positive": "SC1",
142
+ "negative": "SC3"
143
+ }
144
+ ],
145
+ "decisions": [
146
+ {
147
+ "id": "DC1",
148
+ "topic": "исходное понятие",
149
+ "alternatives": ["два базисных множества: начальники и подчинённые", "одно: люди"],
150
+ "choice": "X1 люди",
151
+ "rationale": "начальники сами бывают подчинёнными и наоборот — есть более высокая абстракция (§4.2.1.4)"
152
+ },
153
+ {
154
+ "id": "DC2",
155
+ "topic": "основное отношение: первая гипотеза",
156
+ "alternatives": ["единичное отношение", "множественное отношение", "оба"],
157
+ "choice": "единичное отношение «человек — человек»",
158
+ "rationale": "простейшая форма; проверяется на требованиях к выразительным средствам (§4.2.1.5.1)"
159
+ },
160
+ {
161
+ "id": "DC3",
162
+ "topic": "основное отношение после проверки выразительности",
163
+ "supersedes": "DC2",
164
+ "choice": "множественное отношение S1: ℬ(ℬ(X1)×ℬ(X1))",
165
+ "rationale": "в единичном отношении три начальника одного человека — не коллективный начальник: E4–E8 невыразимы; множественное покрывает единичное одноэлементными совокупностями (§4.2.1.7)"
166
+ },
167
+ {
168
+ "id": "DC4",
169
+ "topic": "порядок пары",
170
+ "choice": "(начальник, подчинённый)",
171
+ "rationale": "пара упорядочена — нужно решение о жёстком порядке (§4.2.1.5.2)"
172
+ },
173
+ {
174
+ "id": "DC5",
175
+ "topic": "антирефлексивность",
176
+ "choice": "аксиома A1: стороны одного отношения не пересекаются",
177
+ "rationale": "отсекается психологический аспект — «сам себе не начальник» (§4.2.1.5.3); в разных отношениях человек может быть и членом руководства, и руководимым — это нужно для подчинения внутри коллектива (E6)"
178
+ },
179
+ {
180
+ "id": "DC6",
181
+ "topic": "универсальность",
182
+ "choice": "без аксиомы",
183
+ "rationale": "не все люди чьи-то начальники или подчинённые; отсутствие аксиомы — тоже решение (§4.2.1.5.3)"
184
+ },
185
+ {
186
+ "id": "DC7",
187
+ "topic": "симметричность",
188
+ "choice": "без аксиомы",
189
+ "rationale": "подчинение многоаспектно: капитан команды подчинён нападающему, который начальник отдела капитана (§4.2.1.5.3)"
190
+ },
191
+ {
192
+ "id": "DC8",
193
+ "topic": "транзитивность",
194
+ "choice": "без аксиомы",
195
+ "rationale": "«вассал моего вассала — не мой вассал»: косвенное подчинение не прямое (§4.2.1.5.3)"
196
+ },
197
+ {
198
+ "id": "DC9",
199
+ "topic": "однозначность",
200
+ "choice": "без аксиомы",
201
+ "rationale": "человек может руководить многими и быть подчинён многим (§4.2.1.5.3)"
202
+ },
203
+ {
204
+ "id": "DC10",
205
+ "topic": "непустота сторон",
206
+ "choice": "аксиома A2",
207
+ "rationale": "в книге подразумевается неявно (§4.2.1.8); в ЯРЭ записано явно"
208
+ }
209
+ ],
210
+ "scenarios": [
211
+ {
212
+ "id": "SC1",
213
+ "title": "Армия: главнокомандующий, генштаб и армия (§4.2.1.3)",
214
+ "values": {
215
+ "X1": ["gc", "chief", "s1", "s2", "a1", "a2", "cat"],
216
+ "S1": [
217
+ [["gc"], ["a1", "a2"]],
218
+ [["gc"], ["chief"]],
219
+ [["chief", "s1", "s2"], ["gc"]],
220
+ [["chief"], ["s1", "s2"]],
221
+ [
222
+ ["s1", "s2"],
223
+ ["a1", "a2"]
224
+ ]
225
+ ]
226
+ },
227
+ "expect": [
228
+ {
229
+ "of": "D1",
230
+ "contains": [
231
+ ["gc", "a1"],
232
+ ["chief", "gc"],
233
+ ["s1", "gc"],
234
+ ["chief", "s1"]
235
+ ],
236
+ "excludes": [["gc", "s1"]]
237
+ },
238
+ {
239
+ "of": "F1",
240
+ "args": ["gc"],
241
+ "value": ["a1", "a2", "chief"]
242
+ },
243
+ {
244
+ "of": "F1",
245
+ "args": ["chief"],
246
+ "value": ["gc", "s1", "s2"]
247
+ },
248
+ {
249
+ "of": "F3",
250
+ "args": ["chief"],
251
+ "value": ["a1", "a2"],
252
+ "note": "армия — вассалы вассала начальника генштаба"
253
+ },
254
+ {
255
+ "of": "F2",
256
+ "args": ["a1"],
257
+ "value": []
258
+ },
259
+ {
260
+ "of": "D2",
261
+ "value": [
262
+ [["gc"], ["a1", "a2"]],
263
+ [["gc"], ["chief"]],
264
+ [["chief"], ["s1", "s2"]]
265
+ ]
266
+ },
267
+ {
268
+ "of": "D4",
269
+ "value": [[["chief", "s1", "s2"], ["gc"]]],
270
+ "note": "генштаб — коллективный начальник главнокомандующего"
271
+ },
272
+ {
273
+ "of": "D5",
274
+ "value": [
275
+ [
276
+ ["s1", "s2"],
277
+ ["a1", "a2"]
278
+ ]
279
+ ]
280
+ },
281
+ {
282
+ "of": "F4",
283
+ "args": [["chief", "s1", "s2"]],
284
+ "value": [[["chief"], ["s1", "s2"]]]
285
+ },
286
+ {
287
+ "of": "D8",
288
+ "value": [["s1", "s2"]]
289
+ },
290
+ {
291
+ "of": "D9",
292
+ "value": [["chief", "s1", "s2"]]
293
+ },
294
+ {
295
+ "of": "D10",
296
+ "value": ["cat"]
297
+ }
298
+ ]
299
+ },
300
+ {
301
+ "id": "SC2",
302
+ "title": "Человек в обеих сторонах одного отношения",
303
+ "base": "SC1",
304
+ "values": {
305
+ "S1": [[["gc"], ["gc", "a1"]]]
306
+ },
307
+ "expect": [
308
+ {
309
+ "of": "A1",
310
+ "holds": false
311
+ }
312
+ ]
313
+ },
314
+ {
315
+ "id": "SC3",
316
+ "title": "Отношение без подчинённых",
317
+ "base": "SC1",
318
+ "values": {
319
+ "S1": [[["gc"], []]]
320
+ },
321
+ "expect": [
322
+ {
323
+ "of": "A2",
324
+ "holds": false
325
+ }
326
+ ]
327
+ },
328
+ {
329
+ "id": "SC4",
330
+ "title": "Футбольная команда: капитан и нападающий подчинены друг другу в разных аспектах (§4.2.1.5.3) — допустимый сценарий: симметричность не запрещена (DC7)",
331
+ "values": {
332
+ "X1": ["cap", "fwd"],
333
+ "S1": [
334
+ [["fwd"], ["cap"]],
335
+ [["cap"], ["fwd"]]
336
+ ]
337
+ },
338
+ "expect": [
339
+ {
340
+ "of": "F1",
341
+ "args": ["cap"],
342
+ "value": ["fwd"]
343
+ },
344
+ {
345
+ "of": "F1",
346
+ "args": ["fwd"],
347
+ "value": ["cap"]
348
+ }
349
+ ]
350
+ }
351
+ ],
352
+ "questions": [
353
+ {
354
+ "round": 1,
355
+ "text": "Могут ли начальники сами быть подчинёнными и наоборот?",
356
+ "proposed": "да",
357
+ "consequence": "одно базисное множество «люди» (DC1)",
358
+ "answer": "да, известное содержание однозначно говорит, что могут (§4.2.1.4)"
359
+ },
360
+ {
361
+ "round": 2,
362
+ "text": "Выражается ли «коллективное руководство» через единичное отношение?",
363
+ "proposed": "нет: три начальника одного человека — не коллективный начальник",
364
+ "consequence": "смена гипотезы на множественное отношение (DC3)",
365
+ "answer": "нет (§4.2.1.7)"
366
+ },
367
+ {
368
+ "round": 2,
369
+ "text": "Может ли человек быть начальником своего начальника?",
370
+ "proposed": "да, в разных аспектах подчинения",
371
+ "consequence": "без аксиомы симметричности (DC7)",
372
+ "answer": "да (§4.2.1.5.3)"
373
+ },
374
+ {
375
+ "round": 2,
376
+ "text": "Может ли член коллективного руководства входить в руководимую им совокупность?",
377
+ "proposed": "нет в одном отношении, да в разных",
378
+ "consequence": "аксиома A1 по одной паре; подчинение внутри коллектива выразимо (E6)",
379
+ "answer": "вопрос поставлен в §4.2.1.7; решение — DC5"
380
+ }
381
+ ],
382
+ "assumptions": ["базисное множество людей конечно (§4.2.1.8)"],
383
+ "openQuestions": [
384
+ "эквивалентно ли единичное отношение одноэлементным совокупностям — книга оставляет за рамками (§4.2.1.5.1)"
385
+ ]
386
+ }
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Teaching microtheory «Начальники и подчинённые»: reference schema and anti-examples.
3
+ * Run from the package root: `pnpm run example:build-subordination-schema`.
4
+ */
5
+ import { mkdirSync, rmSync, writeFileSync } from 'node:fs';
6
+ import { resolve } from 'node:path';
7
+
8
+ import { type AgentConstituentaPatch, RSToolAgent } from '../../src';
9
+
10
+ import { describeBrief, formatDiagnostics } from '../diagnostics-utils';
11
+
12
+ import { SUBORDINATION_ITEMS } from './constants';
13
+
14
+ /** «Green but wrong» variants: each is caught by a specific brief check (see NOTES.md). */
15
+ const ANTI_EXAMPLES: Record<string, AgentConstituentaPatch[]> = {
16
+ // the first hypothesis of Т2 §4.2.1.5: a single person-to-person relation
17
+ 'single-relation': [
18
+ { alias: 'X1', term: 'люди', convention: 'Субъекты формальной структуры подчинения.' },
19
+ {
20
+ alias: 'S1',
21
+ term: 'подчинение',
22
+ definitionFormal: 'ℬ(X1×X1)',
23
+ convention: 'Пара (начальник, подчинённый).'
24
+ },
25
+ { alias: 'F1', term: 'прямые подчинённые', definitionFormal: '[ξ∈X1] Pr2(Fi1[{ξ}](S1))' },
26
+ { alias: 'A1', term: 'сам себе не начальник', definitionFormal: '∀ξ∈X1 (ξ,ξ)∉S1' }
27
+ ],
28
+ 'weakened': SUBORDINATION_ITEMS.filter(item => item.alias !== 'A1'),
29
+ 'collapsed': SUBORDINATION_ITEMS.map(item => (item.alias === 'D8' ? { ...item, definitionFormal: 'D6' } : item)),
30
+ 'transitive': [
31
+ ...SUBORDINATION_ITEMS,
32
+ {
33
+ alias: 'A3',
34
+ term: 'подчинённый подчинённого — мой подчинённый',
35
+ definitionFormal: '∀ξ∈X1 F2[ξ]⊆F1[ξ]∪{ξ}',
36
+ definitionText: 'Подчинение транзитивно.'
37
+ }
38
+ ]
39
+ };
40
+
41
+ function buildSession(title: string, items: AgentConstituentaPatch[]): string {
42
+ const tool = new RSToolAgent();
43
+ tool.createSession({ alias: 'SUB', title, comment: describeBrief(resolve(import.meta.dirname, 'brief.json')) });
44
+ const result = tool.applySchemaPatch({ items, commitMessage: title });
45
+ const diagnostics = tool.listDiagnostics();
46
+ if (!result.success || diagnostics.length > 0) {
47
+ throw new Error(`${title}: ${formatDiagnostics(diagnostics)}`);
48
+ }
49
+ return tool.exportSession() + '\n';
50
+ }
51
+
52
+ function run() {
53
+ const root = import.meta.dirname;
54
+ writeFileSync(resolve(root, 'rsform-session.json'), buildSession('Начальники и подчинённые', SUBORDINATION_ITEMS));
55
+ rmSync(resolve(root, 'anti'), { recursive: true, force: true });
56
+ mkdirSync(resolve(root, 'anti'), { recursive: true });
57
+ for (const [name, items] of Object.entries(ANTI_EXAMPLES)) {
58
+ writeFileSync(resolve(root, 'anti', `${name}.json`), buildSession(`Антипример: ${name}`, items));
59
+ }
60
+ console.log(`subordination: rsform-session.json + ${Object.keys(ANTI_EXAMPLES).length} anti-examples`);
61
+ }
62
+
63
+ run();
@@ -0,0 +1,115 @@
1
+ /** Reference schema of the teaching microtheory «Начальники и подчинённые» (Т2 §4.2.1; see NOTES.md). */
2
+ import { type AgentConstituentaPatch } from '../../src';
3
+
4
+ export const SUBORDINATION_ITEMS: AgentConstituentaPatch[] = [
5
+ {
6
+ alias: 'X1',
7
+ term: 'люди',
8
+ convention: 'Субъекты формальной структуры подчинения: абстракция человека, без должностей и психологии.'
9
+ },
10
+ {
11
+ alias: 'S1',
12
+ term: 'подчинение',
13
+ definitionFormal: 'ℬ(ℬ(X1)×ℬ(X1))',
14
+ convention:
15
+ 'Пара (руководящая совокупность, руководимая совокупность): совокупность людей является начальником другой совокупности. Единоличное руководство — пара с одноэлементной первой совокупностью.'
16
+ },
17
+ {
18
+ alias: 'D1',
19
+ term: 'прямое подчинение',
20
+ definitionFormal: 'I{(α,β) | ρ:∈S1; α:∈pr1(ρ); β:∈pr2(ρ)}',
21
+ definitionText:
22
+ 'Пары людей (начальник, подчинённый): первый входит в руководящую совокупность, которой подчинён второй.'
23
+ },
24
+ {
25
+ alias: 'F1',
26
+ term: 'прямые подчинённые',
27
+ definitionFormal: '[ξ∈X1] Pr2(Fi1[{ξ}](D1))',
28
+ definitionText: 'Люди, прямо подчинённые данному человеку.'
29
+ },
30
+ {
31
+ alias: 'F2',
32
+ term: 'подчинённые по линиям прямого подчинения',
33
+ definitionFormal: '[ξ∈X1] R{σ:=F1[ξ] | σ∪Pr2(Fi1[σ](D1))}',
34
+ definitionText: 'Люди, до которых от данного человека доходит цепочка прямых подчинений.'
35
+ },
36
+ {
37
+ alias: 'F3',
38
+ term: 'косвенные подчинённые',
39
+ definitionFormal: '[ξ∈X1] F2[ξ]\\(F1[ξ]∪{ξ})',
40
+ definitionText:
41
+ 'Подчинённые по линиям прямого подчинения, которые не подчинены данному человеку прямо: «вассал моего вассала — не мой вассал».'
42
+ },
43
+ {
44
+ alias: 'D2',
45
+ term: 'единоличное руководство',
46
+ definitionFormal: 'D{ρ∈S1 | card(pr1(ρ))=1}',
47
+ definitionText: 'Отношения подчинения, в которых начальник — один человек.'
48
+ },
49
+ {
50
+ alias: 'D3',
51
+ term: 'коллективное руководство',
52
+ definitionFormal: 'D{ρ∈S1 | card(pr1(ρ))≥2}',
53
+ definitionText: 'Отношения подчинения, в которых начальник — совокупность из нескольких людей.'
54
+ },
55
+ {
56
+ alias: 'D4',
57
+ term: 'коллективное руководство одним человеком',
58
+ definitionFormal: 'D{ρ∈D3 | card(pr2(ρ))=1}',
59
+ definitionText: 'Коллективное руководство, которому подчинён один человек.'
60
+ },
61
+ {
62
+ alias: 'D5',
63
+ term: 'коллективное руководство группой',
64
+ definitionFormal: 'D{ρ∈D3 | card(pr2(ρ))≥2}',
65
+ definitionText: 'Коллективное руководство, которому подчинена группа людей.'
66
+ },
67
+ {
68
+ alias: 'D6',
69
+ term: 'коллективные начальники',
70
+ definitionFormal: 'Pr1(D3)',
71
+ definitionText: 'Совокупности людей, выступающие начальником в коллективном руководстве.'
72
+ },
73
+ {
74
+ alias: 'F4',
75
+ term: 'подчинение внутри совокупности',
76
+ definitionFormal: '[σ∈ℬ(X1)] D{ρ∈S1 | pr1(ρ)∪pr2(ρ)⊆σ}',
77
+ definitionText: 'Отношения подчинения, обе стороны которых входят в данную совокупность людей.'
78
+ },
79
+ {
80
+ alias: 'D7',
81
+ term: 'коллективные начальники с внутренним подчинением',
82
+ definitionFormal: 'D{σ∈D6 | F4[σ]≠∅}',
83
+ definitionText: 'Коллективные начальники, внутри которых есть отношения подчинения.'
84
+ },
85
+ {
86
+ alias: 'D8',
87
+ term: '«чистое» коллегиальное руководство',
88
+ definitionFormal: 'D6\\D7',
89
+ definitionText: 'Коллективные начальники без подчинения внутри.'
90
+ },
91
+ {
92
+ alias: 'D9',
93
+ term: 'коллегиальное руководство с единоначалием',
94
+ definitionFormal: 'D{σ∈D6 | ∃ρ∈D2 (pr1(ρ)⊆σ & pr2(ρ)=σ\\pr1(ρ))}',
95
+ definitionText: 'Коллективные начальники, в которых один член единолично руководит всеми остальными.'
96
+ },
97
+ {
98
+ alias: 'D10',
99
+ term: 'люди вне отношений подчинения',
100
+ definitionFormal: 'X1\\(Pr1(D1)∪Pr2(D1))',
101
+ definitionText: 'Люди, которые никому не начальники и ничьи не подчинённые.'
102
+ },
103
+ {
104
+ alias: 'A1',
105
+ term: 'сам себе не начальник',
106
+ definitionFormal: '∀ρ∈S1 pr1(ρ)∩pr2(ρ)=∅',
107
+ definitionText: 'Никто не входит одновременно в руководящую и в руководимую совокупность одного отношения.'
108
+ },
109
+ {
110
+ alias: 'A2',
111
+ term: 'стороны подчинения непусты',
112
+ definitionFormal: '∀ρ∈S1 (pr1(ρ)≠∅ & pr2(ρ)≠∅)',
113
+ definitionText: 'У отношения подчинения есть и начальник, и подчинённый.'
114
+ }
115
+ ];