@rsconcept/rstool 1.1.1 → 1.2.1
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/docs/CONCEPTUAL-SCHEMA.md +4 -4
- package/docs/DIAGNOSTICS.md +8 -8
- package/docs/DOMAIN.md +33 -21
- package/docs/README.md +1 -1
- package/package.json +2 -2
- package/skills/rstool-helper/GUIDE.md +7 -4
- package/skills/rstool-helper/SKILL.md +1 -1
|
@@ -28,11 +28,11 @@
|
|
|
28
28
|
|
|
29
29
|
Правило: не смешивай атрибутивную и родоструктурную экспликацию без явного запроса.
|
|
30
30
|
|
|
31
|
-
##
|
|
31
|
+
## Неопределяемые понятия
|
|
32
32
|
|
|
33
|
-
`X#`, `C#`, и `S#` — это
|
|
33
|
+
`X#`, `C#`, и `S#` — это **неопределяемые понятия** (см. [DOMAIN.md](DOMAIN.md)); их нельзя строить одно из другого и включать друг в друга как элементы или подмножества.
|
|
34
34
|
Если такое возникает — значит есть скрытое отношение, его нужно явно оформить отдельной производной конституентой.
|
|
35
|
-
Если
|
|
35
|
+
Если интерпретации разных **базисных множеств** `X#` пересекаются или набор констант `C#` показывает атрибут, который должен быть отношением — отсутствует нужное отношение; введи `S#` или производное `D#` / `F#` / `P#`.
|
|
36
36
|
|
|
37
37
|
Не вводи `S#` для отношения, которое предметно зависит от уже заданных структур и должно вычисляться из них. Такое отношение оформляй как `D#`, `F#` или `P#`. Если нужная операция не выражается текущим синтаксисом, фиксируй это как ограничение языка или модели, а не подменяй производное отношение новой независимой структурой.
|
|
38
38
|
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
|
|
51
51
|
## Разворачивание понятий
|
|
52
52
|
|
|
53
|
-
При концептуализации вводи понятия по зависимостям:
|
|
53
|
+
При концептуализации вводи понятия по зависимостям: неопределяемые (`X#`, `C#`, независимые `S#`), аксиомы `A#`, затем производные `D#` / `P#` / `A#`. Каждый шаг опирается только на уже введённые конституенты.
|
|
54
54
|
|
|
55
55
|
Не обязательно сводить схему к одному «центральному» отношению. Зачастую нужны разные понятия на пересечении нескольких аспектов — структур, ролей, ограничений, сценариев. Каждый аспект может дать свои `S#` и `F#`; производные термы выражают их сочетания.
|
|
56
56
|
|
package/docs/DIAGNOSTICS.md
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
Класс выводится по битовым маскам кода (порядок проверки важен — см. `inferErrorClass`):
|
|
25
25
|
|
|
26
26
|
| Маска | Класс | Префикс `getRSErrorPrefix` |
|
|
27
|
-
|
|
|
27
|
+
| -------- | ---------- | -------------------------- |
|
|
28
28
|
| `0x0100` | EVALUATION | `E` + hex |
|
|
29
29
|
| `0x0200` | LEXER | `L` + hex |
|
|
30
30
|
| `0x0400` | PARSER | `P` + hex |
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
## Parser
|
|
39
39
|
|
|
40
40
|
| Код | Имя | `params` | Исправление |
|
|
41
|
-
|
|
|
41
|
+
| -------- | -------------------------- | ------------------------- | ------------------------------------------------------------------------------------- |
|
|
42
42
|
| `0x8400` | `unknownSyntax` | — | Неопределённая синтаксическая ошибка: проверь операторы, скобки, идентификаторы. |
|
|
43
43
|
| `0x8401` | `forbiddenCharacter` | `[character]` | Символ не входит в язык родов структур (напр. `^` для степени). Удали или замени его. |
|
|
44
44
|
| `0x8409` | `bracketMismatch` | `[expected, actual]` | Закрой ожидаемой скобкой `expected` вместо `actual`. |
|
|
@@ -64,13 +64,13 @@
|
|
|
64
64
|
## Предупреждения
|
|
65
65
|
|
|
66
66
|
| Код | Имя | `params` | Исправление |
|
|
67
|
-
|
|
|
67
|
+
| -------- | -------------- | -------- | ---------------------------------- |
|
|
68
68
|
| `0x2802` | `localNotUsed` | `[name]` | Переменная `name` не используется. |
|
|
69
69
|
|
|
70
70
|
## Локальные переменные и область видимости
|
|
71
71
|
|
|
72
72
|
| Код | Имя | `params` | Исправление |
|
|
73
|
-
|
|
|
73
|
+
| -------- | ---------------------------- | ---------------- | --------------------------------------------------------------------------------------------- |
|
|
74
74
|
| `0x8801` | `localUndeclared` | `[name]` | Свяжи `name` квантором или объяви параметром. |
|
|
75
75
|
| `0x8802` | `localShadowing` | `[name]` | Переименуй внутреннюю переменную `name`. |
|
|
76
76
|
| `0x8803` | `localDoubleDeclare` | `[name]` | Идентификатор `name` уже объявлен в выражении — переименуй одну из переменных. |
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
## Типизация и структура
|
|
82
82
|
|
|
83
83
|
| Код | Имя | `params` | Исправление |
|
|
84
|
-
|
|
|
84
|
+
| -------- | ---------------------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
|
|
85
85
|
| `0x880A` | `typesNotEqual` | `[a, b, operator]` | Операнды `operator` должны иметь равный тип (`a` ≠ `b`). |
|
|
86
86
|
| `0x8825` | `typesNotCompatible` | `[a, b, operator]` | Типы `a` и `b` несовместимы для `operator`. |
|
|
87
87
|
| `0x8804` | `globalNotTyped` | `[name]` | Поставщик `name` не типизирован: добавь и проанализируй его раньше. |
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
## Фильтр `Fi`
|
|
116
116
|
|
|
117
117
|
| Код | Имя | `params` | Исправление |
|
|
118
|
-
|
|
|
118
|
+
| -------- | ----------------------------- | ------------------------------------ | ------------------------------------------------------------------------------------- |
|
|
119
119
|
| `0x8822` | `invalidFilterArgumentType` | `[operator, actual, expected]` | Аргумент `Fi` имеет тип `actual`, ожидался `expected` (обычно `ℬ(…)`). |
|
|
120
120
|
| `0x8823` | `invalidFilterArity` | `[indexCount, paramCount, operator]` | Число индексов `indexCount` ≠ числу параметров `paramCount` у `operator`. |
|
|
121
121
|
| `0x882B` | `invalidFilterParameterType` | `[param, expected, operator]` | Тип параметра `param` не совпадает с компонентом аргумента `expected` для `operator`. |
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
## Значение и схема
|
|
126
126
|
|
|
127
127
|
| Код | Имя | `params` | Исправление |
|
|
128
|
-
|
|
|
128
|
+
| -------- | ---------------------- | ------------------ | --------------------------------------------------------------------------------------------------------- |
|
|
129
129
|
| `0x8840` | `globalNoValue` | `[name]` | Идентификатор `name` невычислим в модели. |
|
|
130
130
|
| `0x8841` | `invalidPropertyUsage` | — | `Property` - множество использовано как вычислимое значение. |
|
|
131
131
|
| `0x8861` | `cstEmptyDerived` | — | У выводимой конституенты пустая формула. |
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
## Вычисление КМ
|
|
135
135
|
|
|
136
136
|
| Код | Имя | `params` | Исправление |
|
|
137
|
-
|
|
|
137
|
+
| -------- | ------------------------- | ------------------ | ---------------------------------------------------------------------- |
|
|
138
138
|
| `0x8100` | `calcUnknownError` | — | Непредвиденная ошибка вычисления. |
|
|
139
139
|
| `0x8101` | `setOverflow` | `[limit]` | Превышен предел числа элементов `limit`: упрости выражение или данные. |
|
|
140
140
|
| `0x8102` | `booleanBaseLimit` | `[limit]` | Превышен предел базы степенного множества `limit`. |
|
package/docs/DOMAIN.md
CHANGED
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
|
|
15
15
|
## Классификация понятий КС
|
|
16
16
|
|
|
17
|
-
-
|
|
18
|
-
- **Производное понятие** — конституента с формальным определением на RSLang: `D#`, `F#`, `P#` и связанные выводимые конструкции. Значение получают из определения при заданной интерпретации
|
|
19
|
-
- **Ядро КС** —
|
|
17
|
+
- **Неопределяемое понятие** — конституента, вводимая конвенцией (и при необходимости аксиомами), а не формальным определением. В родоструктурной экспликации: `X#`, `C#`, `S#`. Смысл задают `convention`, интерпретация и аксиомы.
|
|
18
|
+
- **Производное понятие** — конституента с формальным определением на RSLang: `D#`, `F#`, `P#` и связанные выводимые конструкции. Значение получают из определения при заданной интерпретации неопределяемых понятий.
|
|
19
|
+
- **Ядро КС** — неопределяемые понятия, аксиомы и производные понятия, необходимые для их формулировки.
|
|
20
20
|
- **Тело КС** — остальные конституенты схемы, не входящие в ядро.
|
|
21
21
|
- **Конвенция** — текстовое соглашение о том, как неопределяемое понятие соотносится с сущностями предметной области. В данных схемы хранится в поле `convention` конституенты. Конвенция не заменяет формальное определение и не проходит формальную проверку RSLang. Она фиксирует предметный смысл, который нельзя вывести из формулы: что именно считается элементом множества, как читать компоненты кортежа, какой порядок в паре отношения, какие константы или операции подразумеваются. В конвенции используется предметный язык и термины, которые могут быть не выражены в концептуальной схеме.
|
|
22
22
|
- **Интерпретация** — соотнесение понятий КС с сущностями предметной области. В концептуальной модели задаётся значениями неопределяемых конституент и вычислением производных.
|
|
@@ -40,24 +40,6 @@
|
|
|
40
40
|
|
|
41
41
|
Не путай `S#` и `D#`: `S1: ℬ(X1×X1)` — интерпретируемое отношение из пар; `D1 := X1×X1` — декартово произведение.
|
|
42
42
|
|
|
43
|
-
## Статусы выражений
|
|
44
|
-
|
|
45
|
-
- `Unknown` — не проверено.
|
|
46
|
-
- `OK` — корректно.
|
|
47
|
-
- `Error` — ошибка в определении.
|
|
48
|
-
- `Property` — неразмерное: доступна только проверка принадлежности.
|
|
49
|
-
- `Incalculable` — невычислимо напрямую.
|
|
50
|
-
|
|
51
|
-
## Статусы вычисления в модели
|
|
52
|
-
|
|
53
|
-
- `NO_EVAL` — нечего вычислять.
|
|
54
|
-
- `NOT_PROCESSED` — вычисление не запускалось.
|
|
55
|
-
- `INVALID_DATA` — неверная интерпретация.
|
|
56
|
-
- `EVAL_FAIL` — ошибка вычисления.
|
|
57
|
-
- `AXIOM_FALSE` — аксиома ложна.
|
|
58
|
-
- `EMPTY` — результат пуст.
|
|
59
|
-
- `HAS_DATA` — результат вычислен и непустой.
|
|
60
|
-
|
|
61
43
|
## Зависимости
|
|
62
44
|
|
|
63
45
|
- **Поставщики** — конституенты, на которые ссылается текущая.
|
|
@@ -75,3 +57,33 @@
|
|
|
75
57
|
- **Сквозные изменения** идут от исходной конституенты к наследникам.
|
|
76
58
|
- **Ромбовидный синтез** использует КС с общими предками; чаще требует ручного отождествления дублей.
|
|
77
59
|
- **Концептуальный блок** — группа схем внутри предметной области.
|
|
60
|
+
|
|
61
|
+
### Термины: не путать (для агентов)
|
|
62
|
+
|
|
63
|
+
В ответах пользователю и в конвенциях КС используй только термины из этого файла. Не вводи собственные ярлыки («базис», «базисный слой», «каркас схемы») — они не закреплены в Portal и размывают различия ниже.
|
|
64
|
+
|
|
65
|
+
| Не используй | Используй | Почему |
|
|
66
|
+
| :------------------------------------------------------ | :------------------------------------------------------------------------------------------ | :------------------------------------------------------- |
|
|
67
|
+
| «базис», «базисный слой», «первый слой» (без уточнения) | **неопределяемые понятия** — `X#`, `C#`, `S#` | Общий термин для всего неопределяемого слоя |
|
|
68
|
+
| «базис» / «базисное» про `C#` или `S#` | **константное множество** (`C#`), **родовая структура** (`S#`) | **Базисное множество** — только про `X#` |
|
|
69
|
+
| «базисные множества» как синоним неопределяемых понятий | **базисные множества** — только несколько `X#`; для всего слоя — **неопределяемые понятия** | `C#` и `S#` базисными множествами не называются |
|
|
70
|
+
| «ядро» = неопределяемые понятия» | **ядро КС** — неопределяемые понятия плюс аксиомы и производные, нужные для аксиом | Ядро шире, чем только `X#` / `C#` / `S#` |
|
|
71
|
+
| теорема про `T#` | **высказывание** — производное логическое выражение `T#` | тип теорема на Portal отсутствует и вводит в заблуждение |
|
|
72
|
+
|
|
73
|
+
## Статусы выражений
|
|
74
|
+
|
|
75
|
+
- `Unknown` — не проверено.
|
|
76
|
+
- `OK` — корректно.
|
|
77
|
+
- `Error` — ошибка в определении.
|
|
78
|
+
- `Property` — неразмерное: доступна только проверка принадлежности.
|
|
79
|
+
- `Incalculable` — невычислимо напрямую.
|
|
80
|
+
|
|
81
|
+
## Статусы вычисления в модели
|
|
82
|
+
|
|
83
|
+
- `NO_EVAL` — нечего вычислять.
|
|
84
|
+
- `NOT_PROCESSED` — вычисление не запускалось.
|
|
85
|
+
- `INVALID_DATA` — неверная интерпретация.
|
|
86
|
+
- `EVAL_FAIL` — ошибка вычисления.
|
|
87
|
+
- `AXIOM_FALSE` — аксиома ложна.
|
|
88
|
+
- `EMPTY` — результат пуст.
|
|
89
|
+
- `HAS_DATA` — результат вычислен и непустой.
|
package/docs/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
## Какой файл читать
|
|
8
8
|
|
|
9
|
-
- **DOMAIN.md** — термины Portal: конституента,
|
|
9
|
+
- **DOMAIN.md** — термины Portal: конституента, неопределяемые и производные понятия, ядро/тело КС, интерпретация, ОСС, синтез.
|
|
10
10
|
- **CONCEPTUAL-SCHEMA.md** — проектирование и ревью концептуальных схем.
|
|
11
11
|
- **CONSTITUENTA.md** — структура и правила конституент.
|
|
12
12
|
- **SYNTAX.md** — синтаксис RSLang: операторы, генераторы `D{}`/`I{}`/`R{}`, кванторы, `F#`/`P#`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rsconcept/rstool",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "Agent-facing library for incremental RSForm construction, RSLang analysis, diagnostics, modeling, and evaluation. Wraps @rsconcept/domain with a deterministic session contract.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "IRBorisov",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"LICENSE"
|
|
52
52
|
],
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@rsconcept/domain": "1.
|
|
54
|
+
"@rsconcept/domain": "1.8.1"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@types/node": "^26.1.0",
|
|
@@ -71,11 +71,11 @@ auto определит `portal-details` или `portal-schema`. Явный kind
|
|
|
71
71
|
|
|
72
72
|
Когда нужно построить или существенно развить КС по тексту ПО, требованиям или предметному описанию. Правила редукции, слоёв и паттернов — [CONCEPTUAL-SCHEMA.md](../../docs/CONCEPTUAL-SCHEMA.md).
|
|
73
73
|
|
|
74
|
-
1. Собери словарь:
|
|
74
|
+
1. Собери словарь: неопределяемые понятия, ключевые отношения, сценарий синтеза.
|
|
75
75
|
2. Добавь неопределяемые понятия `X#`, `C#`, `S#` с конвенциями из источника (не копируй дословно).
|
|
76
|
-
3. Проверь независимость
|
|
76
|
+
3. Проверь независимость неопределяемых понятий — они не выводятся друг из друга.
|
|
77
77
|
Если отношение или множество выражается через уже введенные `X#`, `C#`, `S#`, оформляй его как `D#` / `F#` / `P#`.
|
|
78
|
-
4. Введи `F#` и `D#` для раскрытия проекций и функциональных связей в
|
|
78
|
+
4. Введи `F#` и `D#` для раскрытия проекций и функциональных связей в неопределяемых понятиях.
|
|
79
79
|
5. Добавь `A#` на структуры, выражающие ограничения предметной области. Возможно стоит ввести промежуточные производные термы и терм-функции.
|
|
80
80
|
6. Подбери промежуточные производные понятия `D#`, `F#`, `P#` так, чтобы выразить целевые понятия без использования не введенных в схеме понятий.
|
|
81
81
|
7. Перед каждым patch — `analyzeExpression`; при ошибках — [цикл диагностик](#цикл-диагностик).
|
|
@@ -153,6 +153,8 @@ auto определит `portal-details` или `portal-schema`. Явный kind
|
|
|
153
153
|
|
|
154
154
|
Имена конституент (`X1`, `S2`, `D3`) и формулы RSLang — часть схемы, их приводи как есть; лучше вместе с термином: «терм `D3` (родитель)». Названия методов упоминай, только если пользователь спрашивает про rstool как инструмент.
|
|
155
155
|
|
|
156
|
+
Словарь выше — про поля rstool. Для **понятий схемы** каноничный источник — [DOMAIN.md](../../docs/DOMAIN.md).
|
|
157
|
+
|
|
156
158
|
## Чеклисты
|
|
157
159
|
|
|
158
160
|
### Сессия и rstool
|
|
@@ -166,6 +168,7 @@ auto определит `portal-details` или `portal-schema`. Явный kind
|
|
|
166
168
|
- [ ] Схема проверена; ошибки исправлены.
|
|
167
169
|
- [ ] Диагностики обработаны до фиксации шага и экспорта.
|
|
168
170
|
- [ ] В тексте ответа нет английских имён полей и методов API — использованы термины из раздела [Язык ответа](#язык-ответа).
|
|
171
|
+
- [ ] Нет неофициальных ярлыков («базис», «базисный слой») — термины КС из [DOMAIN.md](../../docs/DOMAIN.md).
|
|
169
172
|
|
|
170
173
|
### Ревью концептуальной схемы
|
|
171
174
|
|
|
@@ -173,7 +176,7 @@ auto определит `portal-details` или `portal-schema`. Явный kind
|
|
|
173
176
|
|
|
174
177
|
- [ ] Атрибутивная и родоструктурная экспликации не смешаны без явного запроса.
|
|
175
178
|
- [ ] Нет избыточной проверки принадлежности к собственной типизации (`x∈X1`, если `x` уже в `X1`).
|
|
176
|
-
- [ ]
|
|
179
|
+
- [ ] Неопределяемые понятия независимы; производные отношения вынесены в `D#` / `F#` / `P#`, а не объявлены новыми структурами.
|
|
177
180
|
- [ ] Покрыты главные сущности, роли, отношения, утверждения.
|
|
178
181
|
- [ ] В текстовых определениях используются только понятия из схемы.
|
|
179
182
|
- [ ] Повторяющиеся части формальных определений вынесены в производные понятия `D#` и `F#`.
|
|
@@ -28,7 +28,7 @@ description: >-
|
|
|
28
28
|
|
|
29
29
|
## Язык ответа пользователю
|
|
30
30
|
|
|
31
|
-
В тексте для пользователя используй термины предметной области («формальное определение», «конституента», «диагностики»), а не английские имена полей и методов API (`definitionFormal`, `applySchemaPatch`). Идентификаторы API — только в коде, patch-ах и JSON. Словарь
|
|
31
|
+
В тексте для пользователя используй термины предметной области («формальное определение», «конституента», «диагностики»), а не английские имена полей и методов API (`definitionFormal`, `applySchemaPatch`). Идентификаторы API — только в коде, patch-ах и JSON. Словарь API → текст: раздел «Язык ответа» в GUIDE.md. Термины КС (базовые понятия, базисное множество, ядро) — только из `docs/DOMAIN.md`, раздел **«Термины: не путать»**.
|
|
32
32
|
|
|
33
33
|
## Portal (приложение)
|
|
34
34
|
|