@sigloch/se-engine 1.7.0 → 1.7.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/dist/fix-templates.js +27 -1
- package/package.json +3 -3
package/dist/fix-templates.js
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
* Element-Erzeugung braucht (FCHAIN, REQ-Pre/Postcondition, TEST), sind mit
|
|
35
35
|
* additiven Kanten prinzipiell nicht ausdrückbar — bewusst kein Template.
|
|
36
36
|
*/
|
|
37
|
-
import { isValidTrace, BOUNDED_PATTERNS, REQUIRED_PATTERNS, maxOccurs, schemaSimilarity } from '@sigloch/contracts/se';
|
|
37
|
+
import { isValidTrace, flowProducers, BOUNDED_PATTERNS, REQUIRED_PATTERNS, maxOccurs, schemaSimilarity } from '@sigloch/contracts/se';
|
|
38
38
|
function byId(g, id) {
|
|
39
39
|
return g.elements.find((e) => e.id === id);
|
|
40
40
|
}
|
|
@@ -139,6 +139,28 @@ function relationToMentioned(types) {
|
|
|
139
139
|
* von mehreren" wäre geraten — und ein falsch alloziertes FUNC verfälscht
|
|
140
140
|
* `coherence`/`modifiability`, also genau die Zahlen, auf denen das Ranking sitzt.
|
|
141
141
|
*/
|
|
142
|
+
/**
|
|
143
|
+
* Der vierte Waechter: wuerde diese Kante einen ZWEITEN Produzenten an einen FLOW haengen?
|
|
144
|
+
* (CR-SM-347)
|
|
145
|
+
*
|
|
146
|
+
* `isValidTrace` prueft die Grammatik, `retireFor` die Obergrenze aus `BOUNDED_PATTERNS` —
|
|
147
|
+
* IO-02 faellt durch beide: die vier io-Zeilen tragen kein `cardinality`-Feld, und
|
|
148
|
+
* Kardinalitaet begrenzt ohnehin die QUELL-, nicht die ZIEL-Seite. Ohne diesen Riegel schlug
|
|
149
|
+
* die R-31-Vorlage im Release 1.7.0 eine Kante vor, die das Gate mit `IO-02:error` abwies.
|
|
150
|
+
* Dieselbe Klasse wie der kinds-Riegel aus CR-SM-342, nur fuer eine Mengen- statt einer
|
|
151
|
+
* Grammatikregel.
|
|
152
|
+
*
|
|
153
|
+
* Das Praedikat kommt AUS der Regel (`flowProducers` in contracts), nicht aus einem Nachbau
|
|
154
|
+
* hier — zwei Fassungen derselben Mengenfrage waeren die zweite Wahrheit aus CR-SM-286/-302.
|
|
155
|
+
* Nur die Produzentenrichtung ist begrenzt: `FLOW -io-> FUNC` (ein weiterer Leser) bleibt
|
|
156
|
+
* frei, das ist die normale 1:n-Form.
|
|
157
|
+
*/
|
|
158
|
+
function wuerdeZweitenProduzentenSchaffen(g, source, target, traceType) {
|
|
159
|
+
if (traceType !== 'io' || target.type !== 'FLOW')
|
|
160
|
+
return false;
|
|
161
|
+
const producers = flowProducers(g).get(target.id);
|
|
162
|
+
return !!producers && producers.size >= 1 && !producers.has(source.id);
|
|
163
|
+
}
|
|
142
164
|
function edgeToMentioned(opts) {
|
|
143
165
|
return (v, g) => {
|
|
144
166
|
const el = byId(g, v.element_id);
|
|
@@ -164,6 +186,8 @@ function edgeToMentioned(opts) {
|
|
|
164
186
|
// entscheidet, ob der Edit ein Anhängen (kein retire), ein Umhängen
|
|
165
187
|
// (genau ein retire) oder nicht ausdrückbar ist ('blocked' → nächster
|
|
166
188
|
// Kandidat; Option C statt eines Edits, den das Gate sicher abweist).
|
|
189
|
+
if (wuerdeZweitenProduzentenSchaffen(g, source, target, opts.traceType))
|
|
190
|
+
continue;
|
|
167
191
|
const retire = retireFor(g, source, target, opts.traceType);
|
|
168
192
|
if (retire === 'blocked')
|
|
169
193
|
continue;
|
|
@@ -227,6 +251,8 @@ function edgeToCandidate(opts) {
|
|
|
227
251
|
sourceKinds: source.kinds, targetKinds: target.kinds,
|
|
228
252
|
}))
|
|
229
253
|
continue;
|
|
254
|
+
if (wuerdeZweitenProduzentenSchaffen(g, source, target, opts.traceType))
|
|
255
|
+
continue;
|
|
230
256
|
const retire = retireFor(g, source, target, opts.traceType);
|
|
231
257
|
if (retire === 'blocked')
|
|
232
258
|
continue;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sigloch/se-engine",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
"access": "public"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
|
-
"@sigloch/contracts": ">=10 <11"
|
|
45
|
+
"@sigloch/contracts": ">=10.8 <11"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@sigloch/contracts": ">=10 <11"
|
|
48
|
+
"@sigloch/contracts": ">=10.8 <11"
|
|
49
49
|
}
|
|
50
50
|
}
|