@sigloch/contracts 10.0.0 → 10.2.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/dist/se/conformance-rules.d.ts +12 -0
- package/dist/se/conformance-rules.js +6 -6
- package/dist/se/evaluate-all.d.ts +1 -1
- package/dist/se/evaluate-all.js +21 -0
- package/dist/se/function-criticality.d.ts +75 -0
- package/dist/se/function-criticality.js +50 -0
- package/dist/se/grammar-snapshot.d.ts +5 -4
- package/dist/se/grammar-snapshot.js +92 -4
- package/dist/se/index.d.ts +9 -1
- package/dist/se/index.js +17 -1
- package/dist/se/policy.d.ts +4 -5
- package/dist/se/policy.js +37 -26
- package/dist/se/readiness.d.ts +22 -2
- package/dist/se/readiness.js +30 -6
- package/dist/se/rule-help.d.ts +52 -0
- package/dist/se/rule-help.js +350 -0
- package/dist/se/rules.js +229 -125
- package/package.json +3 -2
|
@@ -57,6 +57,18 @@ export interface ConformanceRuleDefinition {
|
|
|
57
57
|
id: string;
|
|
58
58
|
name: string;
|
|
59
59
|
severity: RuleSeverity;
|
|
60
|
+
/**
|
|
61
|
+
* CR-SM-305: die Grundgesamtheit, ueber die die Regel meldet — dieselbe Bedeutung wie an
|
|
62
|
+
* jeder Katalogregel (CR-SM-235), damit RC in `ALL_RULE_DEFS` stehen kann, ohne dass ein
|
|
63
|
+
* Feld erfunden werden muss.
|
|
64
|
+
*
|
|
65
|
+
* GEMESSEN, nicht gesetzt: RC-01 meldet 10x an FUNC, RC-04 4x an SCHEMA, RC-05 5x an MOD
|
|
66
|
+
* ueber fuenf Familien-Repos; RC-02/RC-03 sind dort still und ihr Typ ist aus der Schleife
|
|
67
|
+
* gelesen (`el.type !== 'TEST'` / `'SCHEMA'`). RC-06 laeuft ueber jedes Element mit
|
|
68
|
+
* `external` + `realRef`, und genau drei Typen duerfen diese Attribute tragen
|
|
69
|
+
* (`ELEMENT_ATTRIBUTES`): FUNC, MOD, SCHEMA.
|
|
70
|
+
*/
|
|
71
|
+
domain: readonly string[];
|
|
60
72
|
evaluate: (graph: OntologyGraph, facts: CodeFacts) => RuleViolation[];
|
|
61
73
|
}
|
|
62
74
|
/**
|
|
@@ -450,12 +450,12 @@ function externalRefMustNameDependency(graph, facts) {
|
|
|
450
450
|
}
|
|
451
451
|
/** All RC conformance rules — evaluated by executors that can supply CodeFacts. */
|
|
452
452
|
export const CODE_CONFORMANCE_RULES = [
|
|
453
|
-
{ id: 'RC-01', name: 'FUNC realRef resolves to a declared symbol', severity: 'error', evaluate: codeRefMustResolve },
|
|
454
|
-
{ id: 'RC-02', name: 'testRefs entries resolve to runnable tests', severity: 'error', evaluate: testRefMustResolve },
|
|
455
|
-
{ id: 'RC-03', name: 'SCHEMA realRef resolves to a declared export', severity: 'error', evaluate: schemaRefMustResolve },
|
|
456
|
-
{ id: 'RC-04', name: 'SCHEMA realRef is parsed at its interface', severity: 'warning', evaluate: schemaRefMustBeUsed },
|
|
457
|
-
{ id: 'RC-05', name: 'cross-module import drift', severity: 'warning', evaluate: importDriftConformance },
|
|
458
|
-
{ id: 'RC-06', name: 'external realRef names a declared dependency', severity: 'warning', evaluate: externalRefMustNameDependency },
|
|
453
|
+
{ id: 'RC-01', name: 'FUNC realRef resolves to a declared symbol', severity: 'error', domain: ['FUNC'], evaluate: codeRefMustResolve },
|
|
454
|
+
{ id: 'RC-02', name: 'testRefs entries resolve to runnable tests', severity: 'error', domain: ['TEST'], evaluate: testRefMustResolve },
|
|
455
|
+
{ id: 'RC-03', name: 'SCHEMA realRef resolves to a declared export', severity: 'error', domain: ['SCHEMA'], evaluate: schemaRefMustResolve },
|
|
456
|
+
{ id: 'RC-04', name: 'SCHEMA realRef is parsed at its interface', severity: 'warning', domain: ['SCHEMA'], evaluate: schemaRefMustBeUsed },
|
|
457
|
+
{ id: 'RC-05', name: 'cross-module import drift', severity: 'warning', domain: ['MOD'], evaluate: importDriftConformance },
|
|
458
|
+
{ id: 'RC-06', name: 'external realRef names a declared dependency', severity: 'warning', domain: ['FUNC', 'MOD', 'SCHEMA'], evaluate: externalRefMustNameDependency },
|
|
459
459
|
];
|
|
460
460
|
/** Run all RC rules against a graph + extracted code facts. */
|
|
461
461
|
export function evaluateConformanceRules(graph, facts) {
|
|
@@ -14,7 +14,7 @@ import type { MetricPolicy } from './policy.js';
|
|
|
14
14
|
* wenn es keine zweite gibt.
|
|
15
15
|
*/
|
|
16
16
|
/** Profile groupings — see CATALOGS. */
|
|
17
|
-
export type ProfileId = 'default' | 'se' | 'coding';
|
|
17
|
+
export type ProfileId = 'default' | 'se' | 'coding' | 'conformance';
|
|
18
18
|
export declare const ALL_RULE_DEFS: ReadonlyArray<{
|
|
19
19
|
id: string;
|
|
20
20
|
name: string;
|
package/dist/se/evaluate-all.js
CHANGED
|
@@ -11,6 +11,7 @@ import { ND_RULES, evaluateNDRules } from './near-duplicate-rules.js';
|
|
|
11
11
|
import { AO_RULES, evaluateAORules } from './ao-rules.js';
|
|
12
12
|
import { BQ_RULES, evaluateBQRules } from './quality-rules.js';
|
|
13
13
|
import { AF_RULES, evaluateAFRules } from './analysis-freshness-rules.js';
|
|
14
|
+
import { CODE_CONFORMANCE_RULES } from './conformance-rules.js';
|
|
14
15
|
/**
|
|
15
16
|
* CR-SM-285: das Profil haengt am KATALOG, nicht am ID-Praefix.
|
|
16
17
|
*
|
|
@@ -38,6 +39,26 @@ const CATALOGS = [
|
|
|
38
39
|
// Sprach-/Textqualitaet statt SE-Struktur — das ist die Trennlinie, die die Praefixliste meinte.
|
|
39
40
|
{ profile: 'coding', rules: BQ_RULES },
|
|
40
41
|
{ profile: 'coding', rules: ND_RULES },
|
|
42
|
+
/*
|
|
43
|
+
* CR-SM-305: die RC-Regeln stehen im Katalog — mit EIGENEM Profil, weil sie eine andere
|
|
44
|
+
* Signatur haben: `(graph, facts: CodeFacts)` statt `(graph, policy)`.
|
|
45
|
+
*
|
|
46
|
+
* Warum ueberhaupt: das Kongruenz-Urteil existierte, war getestet und erreichte KEINEN
|
|
47
|
+
* Produktionspfad. Gate (`harness.mutate`), Steuerung (fit-advisory, steering-snapshot) und
|
|
48
|
+
* `GET /api/graph/readiness` lesen alle `ALL_RULE_DEFS`; RC stand nicht darin, also ging jeder
|
|
49
|
+
* Modell-Zug, der die Bindung an den Code bricht, lautlos durch. Der einzige Aufrufer von
|
|
50
|
+
* `scoreReadinessWithConformance` war ein Test.
|
|
51
|
+
*
|
|
52
|
+
* Warum ein eigenes Profil und nicht `se`: das Profil traegt seit CR-SM-285 die
|
|
53
|
+
* AUSWERTBARKEIT mit. Stuende RC unter `se`, behauptete `getRuleDefsForProfile('se')` eine
|
|
54
|
+
* Auswertung, die ohne Repo-Wurzel gar nicht stattfinden kann.
|
|
55
|
+
*
|
|
56
|
+
* `evaluateAllRules` fuehrt sie NICHT aus — es kann es nicht, es hat keine `CodeFacts`. Genau
|
|
57
|
+
* diese Differenz ist das Signal: deklariert und nicht ausgewertet heisst NICHT GEPRUEFT, und
|
|
58
|
+
* die vorhandene Ableitung `ALL_RULE_DEFS minus ausgewertet` macht es von selbst laut. Kein
|
|
59
|
+
* zweiter Zweig — die ND-fail-open-Lehre aus CR-SM-286.
|
|
60
|
+
*/
|
|
61
|
+
{ profile: 'conformance', rules: CODE_CONFORMANCE_RULES },
|
|
41
62
|
];
|
|
42
63
|
export const ALL_RULE_DEFS = CATALOGS.flatMap(({ profile, rules }) => rules.map(r => ({ id: r.id, name: r.name, severity: r.severity, domain: r.domain, profile })));
|
|
43
64
|
export function getRuleDefsForProfile(profile) {
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CR-SM-314 — wie kritisch ist eine Funktion? Ketten und Use Cases, als ZAHL.
|
|
3
|
+
*
|
|
4
|
+
* Die Frage stammt aus dem Betrieb und hat drei Abnehmer, die bis hierher jeder fuer sich
|
|
5
|
+
* geraten haben: **Blast Radius** einer Aenderung, **Kritikalitaet** einer Funktion,
|
|
6
|
+
* **Rollout-Reihenfolge**. Alle drei fragen dasselbe: an wie vielen Wirkketten haengt dieses
|
|
7
|
+
* Stueck, und wie viele Use Cases stehen dahinter.
|
|
8
|
+
*
|
|
9
|
+
* ## Die Definition ist GELIEHEN, nicht neu
|
|
10
|
+
*
|
|
11
|
+
* "Eine FUNC ist in einer Kette" heisst hier woertlich, was R-30 darunter versteht: eine
|
|
12
|
+
* direkte `FCHAIN -compose-> FUNC`-Kante. Keine Vererbung ueber compose-Vorfahren.
|
|
13
|
+
*
|
|
14
|
+
* Der Rollup wurde GEMESSEN und VERWORFEN: ueber 17 Familiengraphen haetten Vorfahren-Ketten
|
|
15
|
+
* die Grundgesamtheit von 224 auf 227 FUNCs gehoben — drei Stueck. Er kauft nichts und waere
|
|
16
|
+
* eine ZWEITE Vorstellung davon, wozu eine Funktion gehoert, neben R-30s. Genau die Drift, gegen
|
|
17
|
+
* die `module-crossings.ts` gebaut wurde (CR-SM-276). Ein zerlegter Block misst deshalb 0, und
|
|
18
|
+
* das ist richtig: FC-03 verbietet ein Kettenglied mit verschachtelter Zerlegung, ein Block KANN
|
|
19
|
+
* die Kante gar nicht tragen.
|
|
20
|
+
*
|
|
21
|
+
* ## Diese Datei URTEILT NICHT
|
|
22
|
+
*
|
|
23
|
+
* Kein `infrastructure`-Flag, keine Schwelle, keine Severity. Ein Flag waere ein Urteil in der
|
|
24
|
+
* MESSUNG, und die Schwelle gehoert in `MetricPolicy` (`criticality.infrastructure`) — dieselbe
|
|
25
|
+
* Trennung, die `moduleMetrics` gegen MT-01/MT-02 haelt: die Zahl steht in jeder Zeile, ob eine
|
|
26
|
+
* Regel sie liest oder nicht.
|
|
27
|
+
*
|
|
28
|
+
* ## Warum sie nur `ontology` und `graph-index` importiert
|
|
29
|
+
*
|
|
30
|
+
* Damit `rules.ts` sie konsumieren darf. R-21 braucht dieselbe Kettenzahl fuer seine
|
|
31
|
+
* Infrastruktur-Ausnahme (CR-SM-313); rechnete die Regel sie selbst, haetten wir zwei
|
|
32
|
+
* Kettenbegriffe im selben Paket. EINE Rechnung, ZWEI Abnehmer — Vorbild `module-crossings.ts`,
|
|
33
|
+
* das aus demselben Grund keinen Regelcode importiert.
|
|
34
|
+
*
|
|
35
|
+
* ## Gemessen (17 Familiengraphen, 2026-09-12)
|
|
36
|
+
*
|
|
37
|
+
* 278 FUNCs liegen in mindestens einer Kette: 224 in genau einer, 37 in zwei, 6 in drei, 8 in
|
|
38
|
+
* vier, je eine in fuenf, sechs und elf. Ein duenner Schwanz ohne Plateau — aus der FORM dieser
|
|
39
|
+
* Verteilung ist keine Schwelle abzulesen (derselbe Befund wie bei `instability`, CR-SM-293).
|
|
40
|
+
* Ablesbar ist sie an ihrer WIRKUNG, und das steht bei `criticality` in der Policy.
|
|
41
|
+
*
|
|
42
|
+
* @author andreas@siglochconsulting
|
|
43
|
+
*/
|
|
44
|
+
import type { OntologyGraph } from './ontology.js';
|
|
45
|
+
/** Eine Zeile je FUNC — mit Schwelle oder ohne, wie `ModuleMetrics` je MOD (CR-SM-232). */
|
|
46
|
+
export interface FunctionCriticality {
|
|
47
|
+
funcId: string;
|
|
48
|
+
funcName: string;
|
|
49
|
+
/**
|
|
50
|
+
* Wirkketten, die diese FUNC komponieren — R-30s Definition: direkte
|
|
51
|
+
* `FCHAIN -compose-> FUNC`-Kante, keine Vererbung ueber Vorfahren.
|
|
52
|
+
*
|
|
53
|
+
* `0` ist eine AUSSAGE, kein fehlender Wert: bei einem Blatt ist es R-30s Befund, bei einem
|
|
54
|
+
* zerlegten Block der von FC-03 erzwungene Normalzustand. Wer die beiden unterscheiden muss,
|
|
55
|
+
* fragt `decomposedFuncs()` — diese Datei tut es bewusst nicht (sie waere sonst an `rules.ts`
|
|
56
|
+
* gebunden und fuer `rules.ts` nicht mehr importierbar).
|
|
57
|
+
*/
|
|
58
|
+
chains: number;
|
|
59
|
+
/**
|
|
60
|
+
* Use Cases, die ueber diese Ketten an der FUNC haengen (`UC -compose-> FCHAIN`).
|
|
61
|
+
*
|
|
62
|
+
* Nicht aus `chains` ableitbar und auch nicht dasselbe: eine FUNC in drei Ketten EINES Use
|
|
63
|
+
* Case ist etwas anderes als eine in drei Ketten dreier Use Cases. Gemessen an graphcode
|
|
64
|
+
* faellt die Zahl regelmaessig kleiner aus als `chains` (FUNC-mutate: 11 Ketten, 7 UCs).
|
|
65
|
+
*/
|
|
66
|
+
useCases: number;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Kritikalitaet je FUNC, kritischste zuerst.
|
|
70
|
+
*
|
|
71
|
+
* Die Rangfolge IST das Signal (wie bei `moduleMetrics`): absteigend nach Ketten, dann nach Use
|
|
72
|
+
* Cases, dann stabil nach `funcId`. Eine Zeile je FUNC — auch fuer die mit 0, sonst waere die
|
|
73
|
+
* Abwesenheit eines Wertes von der Abwesenheit der Funktion nicht zu unterscheiden.
|
|
74
|
+
*/
|
|
75
|
+
export declare function functionCriticality(graph: OntologyGraph): FunctionCriticality[];
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { indexOf } from './graph-index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Kritikalitaet je FUNC, kritischste zuerst.
|
|
4
|
+
*
|
|
5
|
+
* Die Rangfolge IST das Signal (wie bei `moduleMetrics`): absteigend nach Ketten, dann nach Use
|
|
6
|
+
* Cases, dann stabil nach `funcId`. Eine Zeile je FUNC — auch fuer die mit 0, sonst waere die
|
|
7
|
+
* Abwesenheit eines Wertes von der Abwesenheit der Funktion nicht zu unterscheiden.
|
|
8
|
+
*/
|
|
9
|
+
export function functionCriticality(graph) {
|
|
10
|
+
const idx = indexOf(graph);
|
|
11
|
+
const funcs = idx.elementsOfType('FUNC');
|
|
12
|
+
const typeOf = new Map(graph.elements.map((e) => [e.id, e.type]));
|
|
13
|
+
const funcIds = new Set(funcs.map((f) => f.id));
|
|
14
|
+
const compose = idx.tracesOfType('compose');
|
|
15
|
+
// FUNC -> seine Ketten. R-30s Fassung, woertlich.
|
|
16
|
+
const chainsOf = new Map();
|
|
17
|
+
for (const t of compose) {
|
|
18
|
+
if (typeOf.get(t.source) !== 'FCHAIN' || !funcIds.has(t.target))
|
|
19
|
+
continue;
|
|
20
|
+
let s = chainsOf.get(t.target);
|
|
21
|
+
if (!s) {
|
|
22
|
+
s = new Set();
|
|
23
|
+
chainsOf.set(t.target, s);
|
|
24
|
+
}
|
|
25
|
+
s.add(t.source);
|
|
26
|
+
}
|
|
27
|
+
// FCHAIN -> seine Use Cases.
|
|
28
|
+
const ucsOf = new Map();
|
|
29
|
+
for (const t of compose) {
|
|
30
|
+
if (typeOf.get(t.source) !== 'UC' || typeOf.get(t.target) !== 'FCHAIN')
|
|
31
|
+
continue;
|
|
32
|
+
let s = ucsOf.get(t.target);
|
|
33
|
+
if (!s) {
|
|
34
|
+
s = new Set();
|
|
35
|
+
ucsOf.set(t.target, s);
|
|
36
|
+
}
|
|
37
|
+
s.add(t.source);
|
|
38
|
+
}
|
|
39
|
+
const rows = funcs.map((fn) => {
|
|
40
|
+
const chains = chainsOf.get(fn.id) ?? new Set();
|
|
41
|
+
const ucs = new Set();
|
|
42
|
+
for (const ch of chains)
|
|
43
|
+
for (const uc of ucsOf.get(ch) ?? [])
|
|
44
|
+
ucs.add(uc);
|
|
45
|
+
return { funcId: fn.id, funcName: fn.name, chains: chains.size, useCases: ucs.size };
|
|
46
|
+
});
|
|
47
|
+
return rows.sort((a, b) => b.chains - a.chains ||
|
|
48
|
+
b.useCases - a.useCases ||
|
|
49
|
+
(a.funcId < b.funcId ? -1 : a.funcId > b.funcId ? 1 : 0));
|
|
50
|
+
}
|
|
@@ -13,15 +13,16 @@ export declare const GRAMMAR_SNAPSHOT: {
|
|
|
13
13
|
readonly versions: {
|
|
14
14
|
readonly ontology: "9.0.0";
|
|
15
15
|
readonly metaModel: "5.0.0";
|
|
16
|
-
readonly rules: "
|
|
16
|
+
readonly rules: "24.0.0";
|
|
17
17
|
};
|
|
18
18
|
readonly elementTypes: readonly ["ACTOR", "CR", "FCHAIN", "FLOW", "FUNC", "MOD", "MS", "REQ", "SCHEMA", "SYS", "TEST", "UC"];
|
|
19
19
|
readonly traceTypes: readonly ["allocate", "compose", "io", "relation", "satisfy", "verify"];
|
|
20
20
|
readonly patterns: readonly ["ACTOR -io-> FLOW", "CR -relation-> FUNC", "CR -relation-> MOD", "CR -relation-> MS", "CR -relation-> REQ", "CR -relation-> UC", "FCHAIN -compose-> FUNC [1..*]", "FCHAIN -satisfy-> REQ", "FLOW -io-> ACTOR", "FLOW -io-> FUNC", "FLOW -relation-> SCHEMA [1]", "FUNC -allocate-> MOD [0..1]", "FUNC -compose-> FUNC [0..*]", "FUNC -io-> FLOW", "FUNC -satisfy-> REQ where target.kinds in {functional,postcondition,precondition}", "MOD -compose-> MOD [0..*]", "MOD -satisfy-> REQ where target.kinds in {mitigation,non-functional,risk}", "MS -compose-> FUNC", "MS -compose-> REQ", "MS -compose-> UC", "MS -relation-> MS label=depends-on", "REQ -compose-> REQ [0..*]", "SYS -compose-> MOD [0..*]", "SYS -compose-> REQ [0..*]", "SYS -compose-> SYS [0..*]", "SYS -compose-> UC [1..*]", "SYS -satisfy-> REQ where target.kinds in {mitigation,non-functional,risk}", "TEST -verify-> REQ", "UC -compose-> FCHAIN [1..*]", "UC -compose-> REQ [1..*]"];
|
|
21
21
|
readonly elementColumns: readonly ["OntologyElement.attributes", "OntologyElement.created_at", "OntologyElement.description", "OntologyElement.id", "OntologyElement.kinds", "OntologyElement.method", "OntologyElement.name", "OntologyElement.status", "OntologyElement.type", "OntologyElement.updated_at", "Trace.attributes", "Trace.created_at", "Trace.label", "Trace.source", "Trace.target", "Trace.type", "Trace.verified_at", "Trace.weight"];
|
|
22
22
|
readonly attributes: readonly ["CR.rationale: string", "CR.spike: boolean", "CR.status: enum", "FLOW.protocol: string", "FLOW.qos: string", "FUNC.concept: boolean", "FUNC.external: boolean", "FUNC.measuredMs: number", "FUNC.realRef: object", "FUNC.safety_relevant: boolean", "FUNC.sourceFile: string", "FUNC.timingBudgetMs: number", "MOD.concept: boolean", "MOD.external: boolean", "MOD.kind: string", "MOD.path: string", "MOD.realRef: object", "REQ.detection: number", "REQ.occurrence: number", "REQ.severity: number", "SCHEMA.concept: boolean", "SCHEMA.contract: string", "SCHEMA.external: boolean", "SCHEMA.realRef: object", "TEST.concept: boolean", "TEST.sourceFile: string", "TEST.testRefs: array", "UC.operatingMode: string"];
|
|
23
|
-
readonly rules: readonly ["AF-01 (warning) domain=[graph]", "AF-02 (warning) domain=[graph]", "AF-03 (warning) domain=[graph]", "AF-04 (warning) domain=[graph]", "AF-05 (warning) domain=[graph]", "BQ-01 (warning) domain=[REQ]", "BQ-02 (warning) domain=[REQ]", "BQ-04 (warning) domain=[REQ]", "BQ-06 (warning) domain=[REQ]", "BQ-07 (warning) domain=[REQ]", "BW-02 (warning) domain=[FUNC]", "CL-01 (warning) domain=[ACTOR]", "CR-01 (warning) domain=[MOD]", "CR-R01 (error) domain=[CR]", "CR-R02 (error) domain=[CR]", "CR-R03 (warning) domain=[all]", "FC-02 (warning) domain=[UC]", "FC-03 (warning) domain=[FUNC]", "FC-04 (warning) domain=[FCHAIN]", "FM-01 (warning) domain=[REQ]", "FM-02 (warning) domain=[REQ]", "FM-03 (error) domain=[REQ]", "IO-01 (warning) domain=[FUNC]", "MS-01 (warning) domain=[MS]", "MS-02 (error) domain=[MS]", "MS-03 (info) domain=[CR]", "MT-01 (warning) domain=[MOD]", "MT-02 (info) domain=[MOD]", "ND-01 (error) domain=[FUNC]", "ND-02 (error) domain=[SCHEMA]", "NFR-01 (warning) domain=[FCHAIN,FUNC,MOD]", "R-01 (error) domain=[REQ]", "R-02 (warning) domain=[FUNC]", "R-04 (warning) domain=[MOD]", "R-05 (warning) domain=[TEST]", "R-08 (error) domain=[all]", "R-10 (warning) domain=[FLOW]", "R-12 (warning) domain=[FUNC]", "R-15 (warning) domain=[FCHAIN]", "R-16 (warning) domain=[ACTOR]", "R-17 (warning) domain=[SYS]", "R-18 (error) domain=[all]", "R-19 (warning) domain=[TEST]", "R-20 (warning) domain=[FUNC]", "R-21 (warning) domain=[FCHAIN]", "R-22 (warning) domain=[FUNC]", "R-23 (warning) domain=[MOD]", "R-26 (warning) domain=[SCHEMA]", "R-29 (error) domain=[TEST]", "R-30 (warning) domain=[FUNC]", "R-31 (warning) domain=[FUNC]", "RD-01 (warning) domain=[REQ]", "RD-02 (warning) domain=[REQ]", "RD-03 (info) domain=[REQ]", "RD-04 (warning) domain=[FUNC,MOD,SYS]", "SC-02 (warning) domain=[SCHEMA]", "UC-01 (error) domain=[UC]", "UC-02 (error) domain=[UC]", "UC-03 (warning) domain=[UC]", "UC-04 (warning) domain=[UC]", "UC-05 (info) domain=[UC]", "UC-06 (info) domain=[UC]", "VR-01 (info) domain=[TEST]"];
|
|
23
|
+
readonly rules: readonly ["AF-01 (warning) domain=[graph]", "AF-02 (warning) domain=[graph]", "AF-03 (warning) domain=[graph]", "AF-04 (warning) domain=[graph]", "AF-05 (warning) domain=[graph]", "BQ-01 (warning) domain=[REQ]", "BQ-02 (warning) domain=[REQ]", "BQ-04 (warning) domain=[REQ]", "BQ-06 (warning) domain=[REQ]", "BQ-07 (warning) domain=[REQ]", "BW-02 (warning) domain=[FUNC]", "CL-01 (warning) domain=[ACTOR]", "CR-01 (warning) domain=[MOD]", "CR-R01 (error) domain=[CR]", "CR-R02 (error) domain=[CR]", "CR-R03 (warning) domain=[all]", "FC-02 (warning) domain=[UC]", "FC-03 (warning) domain=[FUNC]", "FC-04 (warning) domain=[FCHAIN]", "FM-01 (warning) domain=[REQ]", "FM-02 (warning) domain=[REQ]", "FM-03 (error) domain=[REQ]", "IO-01 (warning) domain=[FUNC]", "IO-02 (error) domain=[FLOW]", "MS-01 (warning) domain=[MS]", "MS-02 (error) domain=[MS]", "MS-03 (info) domain=[CR]", "MT-01 (warning) domain=[MOD]", "MT-02 (info) domain=[MOD]", "ND-01 (error) domain=[FUNC]", "ND-02 (error) domain=[SCHEMA]", "NFR-01 (warning) domain=[FCHAIN,FUNC,MOD]", "R-01 (error) domain=[REQ]", "R-02 (warning) domain=[FUNC]", "R-04 (warning) domain=[MOD]", "R-05 (warning) domain=[TEST]", "R-08 (error) domain=[all]", "R-10 (warning) domain=[FLOW]", "R-12 (warning) domain=[FUNC]", "R-15 (warning) domain=[FCHAIN]", "R-16 (warning) domain=[ACTOR]", "R-17 (warning) domain=[SYS]", "R-18 (error) domain=[all]", "R-19 (warning) domain=[TEST]", "R-20 (warning) domain=[FUNC]", "R-21 (warning) domain=[FCHAIN,FUNC]", "R-22 (warning) domain=[FUNC]", "R-23 (warning) domain=[MOD]", "R-26 (warning) domain=[SCHEMA]", "R-29 (error) domain=[TEST]", "R-30 (warning) domain=[FUNC]", "R-31 (warning) domain=[FUNC]", "RC-01 (error) domain=[FUNC]", "RC-02 (error) domain=[TEST]", "RC-03 (error) domain=[SCHEMA]", "RC-04 (warning) domain=[SCHEMA]", "RC-05 (warning) domain=[MOD]", "RC-06 (warning) domain=[FUNC,MOD,SCHEMA]", "RD-01 (warning) domain=[REQ]", "RD-02 (warning) domain=[REQ]", "RD-03 (info) domain=[REQ]", "RD-04 (warning) domain=[FUNC,MOD,SYS]", "RD-05 (warning) domain=[FUNC,MOD,SYS]", "SC-02 (warning) domain=[SCHEMA]", "UC-01 (error) domain=[UC]", "UC-02 (error) domain=[UC]", "UC-03 (warning) domain=[UC]", "UC-04 (warning) domain=[UC]", "UC-05 (info) domain=[UC]", "UC-06 (info) domain=[UC]", "VR-01 (info) domain=[TEST]"];
|
|
24
24
|
readonly conformanceRules: readonly ["RC-01 (error)", "RC-02 (error)", "RC-03 (error)", "RC-04 (warning)", "RC-05 (warning)", "RC-06 (warning)"];
|
|
25
|
-
readonly policy: readonly ["apTable = null", "boundaryWidth = {warning:5}", "crossingFlows = {warning:3}", "decompositionBreadth = {warning:9}", "instability = null", "lcom4 = {info:4,warning:6}", "
|
|
26
|
-
readonly
|
|
25
|
+
readonly policy: readonly ["apTable = null", "boundaryWidth = {warning:5}", "criticality = {infrastructure:3}", "crossingFlows = {warning:3}", "decompositionBreadth = {min:3,warning:9}", "instability = null", "lcom4 = {info:4,warning:6}", "riskRpn = 100"];
|
|
26
|
+
readonly ruleHelp: readonly ["AF-01", "AF-02", "AF-03", "AF-04", "AF-05", "BQ-01", "BQ-02", "BQ-04", "BQ-06", "BQ-07", "BW-02", "CL-01", "CR-01", "CR-R01", "CR-R02", "CR-R03", "FC-02", "FC-03", "FC-04", "FM-01", "FM-02", "FM-03", "IO-01", "IO-02", "MS-01", "MS-02", "MS-03", "MT-01", "MT-02", "ND-01", "ND-02", "NFR-01", "R-01", "R-02", "R-04", "R-05", "R-08", "R-10", "R-12", "R-15", "R-16", "R-17", "R-18", "R-19", "R-20", "R-21", "R-22", "R-23", "R-26", "R-29", "R-30", "R-31", "RC-01", "RC-02", "RC-03", "RC-04", "RC-05", "RC-06", "RD-01", "RD-02", "RD-03", "RD-04", "RD-05", "SC-02", "UC-01", "UC-02", "UC-03", "UC-04", "UC-05", "UC-06", "VR-01"];
|
|
27
|
+
readonly exports: readonly ["AF_RULES", "ALL_RULE_DEFS", "AO_RULES", "ActionPriority", "AnalysisArtifactId", "AnalysisFreshnessStampSchema", "ApTableSchema", "BOUNDED_PATTERNS", "BQ_RULES", "CODE_CONFORMANCE_RULES", "CR_RULES", "CodeFactsSchema", "DEFAULT_METRIC_POLICY", "DIMENSION_READINESS_DELTA_NAME", "DIMENSION_READINESS_NAME", "ELEMENT_ATTRIBUTES", "ELEMENT_DESCRIPTIONS", "ElementType", "ElementUid", "FC_RULES", "FM_RULES", "FileFactsSchema", "ImportEdgeSchema", "MAX_SLUG_LENGTH", "META_MODEL_VERSION", "MODELING_ELEMENT_TYPES", "MT_RULES", "MetricPolicySchema", "ND_RULES", "ONTOLOGY_VERSION", "OntologyElement", "OntologyGraph", "PHASE_READINESS_NAME", "PhaseGate", "READINESS_SCORED_PROFILES", "REQUIRED_PATTERNS", "RULES_VERSION", "RULE_HELP", "RULE_TO_DIMENSION", "RULE_TO_PHASE", "ReadinessDimension", "ReadinessReport", "ReadinessScore", "RealRefSchema", "RepoRelativePathSchema", "ReqKind", "RuleSeverity", "RuleViolation", "SC_RULES", "TRACE_PATTERNS", "TestRefSchema", "TestRefsSchema", "TestResult", "Trace", "TraceType", "UC_RULES", "V3_RULES", "VIEW_RULES", "VerificationMethod", "ViolationCandidate", "ViolationContext", "actionPriority", "allocationCohesion", "apMethod", "attributeTypeOf", "bq01Unambiguous", "bq02Verifiable", "bq04Necessary", "bq06Conforming", "bq07Complete", "bw02WhiteboxWidth", "cl01ConopsCompleteness", "cr01CrossingFlowCount", "crossingContractCount", "decomposedFuncs", "evaluateAFRules", "evaluateAORules", "evaluateAllRules", "evaluateBQRules", "evaluateCRRules", "evaluateConformanceRules", "evaluateFCRules", "evaluateFMRules", "evaluateMTRules", "evaluateNDRules", "evaluateRules", "evaluateSCRules", "evaluateUCRules", "evaluateViewRules", "extractFormatE", "fc02LeafUcHasFchain", "fc03FchainFlat", "fc04ActorBounded", "fm01MissingFmeaAttributes", "fm02MissingMitigation", "fm03HighRiskUnverified", "funcSimilarity", "functionCriticality", "getRuleDefsForProfile", "hydrateAttrValue", "importCoverage", "indexOf", "io01CrossModuleCompleteness", "isElementUid", "isValidTrace", "jaccard", "maxOccurs", "minOccurs", "moduleCrossings", "moduleMetrics", "mt01Instability", "mt02Lcom4", "nd01FuncNearDuplicate", "nd02SchemaNearDuplicate", "nfr01BudgetOvershoot", "normalizeReqKinds", "pairsAbove", "parseElementUid", "parseFormatE", "sc02IsReferenced", "schemaSimilarity", "serializeToFormatE", "setBQ04SimilarityMatrix", "subtreeFuncs", "toElementUid", "toEvaluableGraph", "tokens", "traceRejection", "tryParseElementUid", "uc01HasRequirements", "uc02HasActor", "uc03HasScenario", "uc04GoalDefined", "uc05HasPostcondition", "uc06HasPrecondition", "vr01TestNoResult", "whiteboxContractCount"];
|
|
27
28
|
};
|
|
@@ -13,7 +13,7 @@ export const GRAMMAR_SNAPSHOT = {
|
|
|
13
13
|
versions: {
|
|
14
14
|
ontology: "9.0.0",
|
|
15
15
|
metaModel: "5.0.0",
|
|
16
|
-
rules: "
|
|
16
|
+
rules: "24.0.0",
|
|
17
17
|
},
|
|
18
18
|
elementTypes: [
|
|
19
19
|
"ACTOR",
|
|
@@ -143,6 +143,7 @@ export const GRAMMAR_SNAPSHOT = {
|
|
|
143
143
|
"FM-02 (warning) domain=[REQ]",
|
|
144
144
|
"FM-03 (error) domain=[REQ]",
|
|
145
145
|
"IO-01 (warning) domain=[FUNC]",
|
|
146
|
+
"IO-02 (error) domain=[FLOW]",
|
|
146
147
|
"MS-01 (warning) domain=[MS]",
|
|
147
148
|
"MS-02 (error) domain=[MS]",
|
|
148
149
|
"MS-03 (info) domain=[CR]",
|
|
@@ -164,17 +165,24 @@ export const GRAMMAR_SNAPSHOT = {
|
|
|
164
165
|
"R-18 (error) domain=[all]",
|
|
165
166
|
"R-19 (warning) domain=[TEST]",
|
|
166
167
|
"R-20 (warning) domain=[FUNC]",
|
|
167
|
-
"R-21 (warning) domain=[FCHAIN]",
|
|
168
|
+
"R-21 (warning) domain=[FCHAIN,FUNC]",
|
|
168
169
|
"R-22 (warning) domain=[FUNC]",
|
|
169
170
|
"R-23 (warning) domain=[MOD]",
|
|
170
171
|
"R-26 (warning) domain=[SCHEMA]",
|
|
171
172
|
"R-29 (error) domain=[TEST]",
|
|
172
173
|
"R-30 (warning) domain=[FUNC]",
|
|
173
174
|
"R-31 (warning) domain=[FUNC]",
|
|
175
|
+
"RC-01 (error) domain=[FUNC]",
|
|
176
|
+
"RC-02 (error) domain=[TEST]",
|
|
177
|
+
"RC-03 (error) domain=[SCHEMA]",
|
|
178
|
+
"RC-04 (warning) domain=[SCHEMA]",
|
|
179
|
+
"RC-05 (warning) domain=[MOD]",
|
|
180
|
+
"RC-06 (warning) domain=[FUNC,MOD,SCHEMA]",
|
|
174
181
|
"RD-01 (warning) domain=[REQ]",
|
|
175
182
|
"RD-02 (warning) domain=[REQ]",
|
|
176
183
|
"RD-03 (info) domain=[REQ]",
|
|
177
184
|
"RD-04 (warning) domain=[FUNC,MOD,SYS]",
|
|
185
|
+
"RD-05 (warning) domain=[FUNC,MOD,SYS]",
|
|
178
186
|
"SC-02 (warning) domain=[SCHEMA]",
|
|
179
187
|
"UC-01 (error) domain=[UC]",
|
|
180
188
|
"UC-02 (error) domain=[UC]",
|
|
@@ -195,13 +203,86 @@ export const GRAMMAR_SNAPSHOT = {
|
|
|
195
203
|
policy: [
|
|
196
204
|
"apTable = null",
|
|
197
205
|
"boundaryWidth = {warning:5}",
|
|
206
|
+
"criticality = {infrastructure:3}",
|
|
198
207
|
"crossingFlows = {warning:3}",
|
|
199
|
-
"decompositionBreadth = {warning:9}",
|
|
208
|
+
"decompositionBreadth = {min:3,warning:9}",
|
|
200
209
|
"instability = null",
|
|
201
210
|
"lcom4 = {info:4,warning:6}",
|
|
202
|
-
"moduleSize = {coupled:7,crossings:2,large:9}",
|
|
203
211
|
"riskRpn = 100",
|
|
204
212
|
],
|
|
213
|
+
ruleHelp: [
|
|
214
|
+
"AF-01",
|
|
215
|
+
"AF-02",
|
|
216
|
+
"AF-03",
|
|
217
|
+
"AF-04",
|
|
218
|
+
"AF-05",
|
|
219
|
+
"BQ-01",
|
|
220
|
+
"BQ-02",
|
|
221
|
+
"BQ-04",
|
|
222
|
+
"BQ-06",
|
|
223
|
+
"BQ-07",
|
|
224
|
+
"BW-02",
|
|
225
|
+
"CL-01",
|
|
226
|
+
"CR-01",
|
|
227
|
+
"CR-R01",
|
|
228
|
+
"CR-R02",
|
|
229
|
+
"CR-R03",
|
|
230
|
+
"FC-02",
|
|
231
|
+
"FC-03",
|
|
232
|
+
"FC-04",
|
|
233
|
+
"FM-01",
|
|
234
|
+
"FM-02",
|
|
235
|
+
"FM-03",
|
|
236
|
+
"IO-01",
|
|
237
|
+
"IO-02",
|
|
238
|
+
"MS-01",
|
|
239
|
+
"MS-02",
|
|
240
|
+
"MS-03",
|
|
241
|
+
"MT-01",
|
|
242
|
+
"MT-02",
|
|
243
|
+
"ND-01",
|
|
244
|
+
"ND-02",
|
|
245
|
+
"NFR-01",
|
|
246
|
+
"R-01",
|
|
247
|
+
"R-02",
|
|
248
|
+
"R-04",
|
|
249
|
+
"R-05",
|
|
250
|
+
"R-08",
|
|
251
|
+
"R-10",
|
|
252
|
+
"R-12",
|
|
253
|
+
"R-15",
|
|
254
|
+
"R-16",
|
|
255
|
+
"R-17",
|
|
256
|
+
"R-18",
|
|
257
|
+
"R-19",
|
|
258
|
+
"R-20",
|
|
259
|
+
"R-21",
|
|
260
|
+
"R-22",
|
|
261
|
+
"R-23",
|
|
262
|
+
"R-26",
|
|
263
|
+
"R-29",
|
|
264
|
+
"R-30",
|
|
265
|
+
"R-31",
|
|
266
|
+
"RC-01",
|
|
267
|
+
"RC-02",
|
|
268
|
+
"RC-03",
|
|
269
|
+
"RC-04",
|
|
270
|
+
"RC-05",
|
|
271
|
+
"RC-06",
|
|
272
|
+
"RD-01",
|
|
273
|
+
"RD-02",
|
|
274
|
+
"RD-03",
|
|
275
|
+
"RD-04",
|
|
276
|
+
"RD-05",
|
|
277
|
+
"SC-02",
|
|
278
|
+
"UC-01",
|
|
279
|
+
"UC-02",
|
|
280
|
+
"UC-03",
|
|
281
|
+
"UC-04",
|
|
282
|
+
"UC-05",
|
|
283
|
+
"UC-06",
|
|
284
|
+
"VR-01",
|
|
285
|
+
],
|
|
205
286
|
exports: [
|
|
206
287
|
"AF_RULES",
|
|
207
288
|
"ALL_RULE_DEFS",
|
|
@@ -237,8 +318,10 @@ export const GRAMMAR_SNAPSHOT = {
|
|
|
237
318
|
"OntologyGraph",
|
|
238
319
|
"PHASE_READINESS_NAME",
|
|
239
320
|
"PhaseGate",
|
|
321
|
+
"READINESS_SCORED_PROFILES",
|
|
240
322
|
"REQUIRED_PATTERNS",
|
|
241
323
|
"RULES_VERSION",
|
|
324
|
+
"RULE_HELP",
|
|
242
325
|
"RULE_TO_DIMENSION",
|
|
243
326
|
"RULE_TO_PHASE",
|
|
244
327
|
"ReadinessDimension",
|
|
@@ -274,6 +357,7 @@ export const GRAMMAR_SNAPSHOT = {
|
|
|
274
357
|
"bw02WhiteboxWidth",
|
|
275
358
|
"cl01ConopsCompleteness",
|
|
276
359
|
"cr01CrossingFlowCount",
|
|
360
|
+
"crossingContractCount",
|
|
277
361
|
"decomposedFuncs",
|
|
278
362
|
"evaluateAFRules",
|
|
279
363
|
"evaluateAORules",
|
|
@@ -297,6 +381,7 @@ export const GRAMMAR_SNAPSHOT = {
|
|
|
297
381
|
"fm02MissingMitigation",
|
|
298
382
|
"fm03HighRiskUnverified",
|
|
299
383
|
"funcSimilarity",
|
|
384
|
+
"functionCriticality",
|
|
300
385
|
"getRuleDefsForProfile",
|
|
301
386
|
"hydrateAttrValue",
|
|
302
387
|
"importCoverage",
|
|
@@ -307,6 +392,7 @@ export const GRAMMAR_SNAPSHOT = {
|
|
|
307
392
|
"jaccard",
|
|
308
393
|
"maxOccurs",
|
|
309
394
|
"minOccurs",
|
|
395
|
+
"moduleCrossings",
|
|
310
396
|
"moduleMetrics",
|
|
311
397
|
"mt01Instability",
|
|
312
398
|
"mt02Lcom4",
|
|
@@ -321,6 +407,7 @@ export const GRAMMAR_SNAPSHOT = {
|
|
|
321
407
|
"schemaSimilarity",
|
|
322
408
|
"serializeToFormatE",
|
|
323
409
|
"setBQ04SimilarityMatrix",
|
|
410
|
+
"subtreeFuncs",
|
|
324
411
|
"toElementUid",
|
|
325
412
|
"toEvaluableGraph",
|
|
326
413
|
"tokens",
|
|
@@ -333,5 +420,6 @@ export const GRAMMAR_SNAPSHOT = {
|
|
|
333
420
|
"uc05HasPostcondition",
|
|
334
421
|
"uc06HasPrecondition",
|
|
335
422
|
"vr01TestNoResult",
|
|
423
|
+
"whiteboxContractCount",
|
|
336
424
|
],
|
|
337
425
|
};
|
package/dist/se/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/** Ontology schema version (element types + trace types). */
|
|
6
6
|
export declare const ONTOLOGY_VERSION = "9.0.0";
|
|
7
7
|
/** Rules engine version (validation rules incl. RC conformance). */
|
|
8
|
-
export declare const RULES_VERSION = "
|
|
8
|
+
export declare const RULES_VERSION = "24.0.0";
|
|
9
9
|
/** Meta-model version (trace pattern constraints + format-e parser). */
|
|
10
10
|
export declare const META_MODEL_VERSION = "5.0.0";
|
|
11
11
|
export * from './ontology.js';
|
|
@@ -23,6 +23,14 @@ export * from './cr-quality-rules.js';
|
|
|
23
23
|
export * from './near-duplicate-rules.js';
|
|
24
24
|
export * from './similarity.js';
|
|
25
25
|
export * from './ao-rules.js';
|
|
26
|
+
export * from './rule-help.js';
|
|
27
|
+
export * from './module-crossings.js';
|
|
28
|
+
/**
|
|
29
|
+
* CR-SM-314: Kritikalitaet je FUNC (Ketten + Use Cases). Wie `module-crossings` eine reine
|
|
30
|
+
* Rechnung ohne Regelcode — deshalb darf `rules.ts` sie importieren (R-21s Infrastruktur-
|
|
31
|
+
* Ausnahme, CR-SM-313) und es gibt nur EINEN Kettenbegriff im Paket.
|
|
32
|
+
*/
|
|
33
|
+
export * from './function-criticality.js';
|
|
26
34
|
export * from './quality-rules.js';
|
|
27
35
|
export * from './analysis-freshness-rules.js';
|
|
28
36
|
export * from './evaluate-all.js';
|