@blockml/validator 0.1.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.
@@ -0,0 +1,82 @@
1
+ <!--
2
+ BlockML Validator Library Descriptor
3
+ FQN: org.blockml.bml.compiler.validator.Library
4
+ -->
5
+ <block
6
+ xmlns="http://blockml.org/bml"
7
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8
+ xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
9
+ "
10
+ xmlns:blockml="org.blockml.bml"
11
+ xmlns:bom="org.blockml.bml.bom"
12
+ xmlns:bomapi="org.blockml.bml.bom.api"
13
+ xmlns:bomcommon="org.blockml.bml.bom.common"
14
+ xmlns:bomdoc="org.blockml.bml.bom.document"
15
+ xmlns:core="org.blockml.bml.core"
16
+ xmlns:def="org.blockml.bml.definition"
17
+ xmlns:framework="org.blockml.bml.framework"
18
+ xmlns:fwcap="org.blockml.bml.framework.capability"
19
+ xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
20
+ xmlns:type="org.blockml.bml.type"
21
+ xmlns:validator="org.blockml.bml.compiler.validator"
22
+ xmlns:valcap="org.blockml.bml.compiler.validator.capability"
23
+ xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
24
+ xmlns:bomdocumentation="org.blockml.bml.bom.documentation"
25
+ xmlns:fwdocumentation="org.blockml.bml.framework.documentation">
26
+
27
+ <name>Library</name>
28
+ <type>validator:Library</type>
29
+ <baseType>core:BlockLibrary</baseType>
30
+ <is>The BlockML Validator compiler package library catalog</is>
31
+
32
+ <documentation>
33
+ Canonical validator specification for BlockML Stage-2 — validate() orchestration
34
+ on BomDocument using @blockml/framework utilities. TypeScript in packages/validator/src/
35
+ implements this library. Urmodell and API types live in org.blockml.bml.bom.*
36
+ (@blockml/bom). Membership is defined exclusively by this blocks list.
37
+ </documentation>
38
+
39
+ <version>0.1.0</version>
40
+
41
+ <language>
42
+ <English />
43
+ </language>
44
+
45
+ <properties>
46
+ <description>
47
+ <value>BlockML Validator library</value>
48
+ </description>
49
+ </properties>
50
+
51
+ <aggregations>
52
+ <readMe>
53
+ <composition>
54
+ <validator:README />
55
+ </composition>
56
+ </readMe>
57
+ <dependencies>
58
+ <composition>
59
+ <blockml:Library />
60
+ </composition>
61
+ <composition>
62
+ <bom:Library />
63
+ </composition>
64
+ <composition>
65
+ <framework:Library />
66
+ </composition>
67
+ </dependencies>
68
+ <blocks>
69
+ <composition><validator:ValidatorType /></composition>
70
+ <composition><valcap:Validate /></composition>
71
+ <composition><valdocumentation:Introduction /></composition>
72
+ <composition><valdocumentation:LayerSeparation /></composition>
73
+ <composition><valdocumentation:ValidationPipeline /></composition>
74
+ <composition><valdocumentation:PublicApi /></composition>
75
+ <composition><valdocumentation:Diagnostics /></composition>
76
+ <composition><valdocumentation:PackageOwnership /></composition>
77
+ <composition><valdocumentation:ScopeExclusions /></composition>
78
+ <composition><valdocumentation:DesignDecisions /></composition>
79
+ </blocks>
80
+ </aggregations>
81
+
82
+ </block>
@@ -0,0 +1,60 @@
1
+ <!--
2
+ BlockML Validator — README
3
+ FQN: org.blockml.bml.compiler.validator.README
4
+ -->
5
+ <block
6
+ xmlns="http://blockml.org/bml"
7
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8
+ xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
9
+ "
10
+ xmlns:blockml="org.blockml.bml"
11
+ xmlns:bom="org.blockml.bml.bom"
12
+ xmlns:bomapi="org.blockml.bml.bom.api"
13
+ xmlns:bomcommon="org.blockml.bml.bom.common"
14
+ xmlns:bomdoc="org.blockml.bml.bom.document"
15
+ xmlns:core="org.blockml.bml.core"
16
+ xmlns:def="org.blockml.bml.definition"
17
+ xmlns:framework="org.blockml.bml.framework"
18
+ xmlns:fwcap="org.blockml.bml.framework.capability"
19
+ xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
20
+ xmlns:type="org.blockml.bml.type"
21
+ xmlns:validator="org.blockml.bml.compiler.validator"
22
+ xmlns:valcap="org.blockml.bml.compiler.validator.capability"
23
+ xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
24
+ xmlns:bomdocumentation="org.blockml.bml.bom.documentation"
25
+ xmlns:fwdocumentation="org.blockml.bml.framework.documentation">
26
+
27
+ <name>README</name>
28
+ <type>blockml:README</type>
29
+ <baseType>core:ReadMe</baseType>
30
+ <is>Reading entry for the Validator compiler library</is>
31
+
32
+ <documentation>
33
+ The @blockml/validator package validates BomDocument (Urmodell) and returns
34
+ diagnostics plus an optional pragmatic model fork.
35
+
36
+ This library (org.blockml.bml.compiler.validator.*) is the SSOT; TypeScript in
37
+ packages/validator/src/ implements it. Parity tests in packages/validator/test/
38
+ verify BML ↔ TS alignment.
39
+
40
+ Start reading at org.blockml.bml.compiler.validator.documentation.Introduction (ReadNext chain).
41
+
42
+ Layer separation:
43
+ • org.blockml.bml.bom.* (@blockml/bom) — Urmodell types and ValidateOptions/ValidateResult
44
+ • org.blockml.bml.framework.* (@blockml/framework) — TypeRegistry, validation utilities
45
+ • org.blockml.bml.compiler.validator.* (this library) — validate() orchestration
46
+
47
+ Modules: documentation (narrative specs), capability (validate entry point).
48
+
49
+ Not in this library: validateTypes/validateConstraints implementation (@blockml/framework);
50
+ parse()/serialize() entry points.
51
+ </documentation>
52
+
53
+ <references>
54
+ <see type="valdocumentation:Introduction" relation="ReadFirst" />
55
+ <see type="valdocumentation:PublicApi" relation="SeeAlso" />
56
+ <see type="bomdocumentation:PublicApi" relation="SeeAlso" />
57
+ <see type="fwdocumentation:Introduction" relation="SeeAlso" />
58
+ </references>
59
+
60
+ </block>
@@ -0,0 +1,38 @@
1
+ <!--
2
+ Validator — ValidatorType
3
+ FQN: org.blockml.bml.compiler.validator.ValidatorType
4
+ -->
5
+ <block
6
+ xmlns="http://blockml.org/bml"
7
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8
+ xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
9
+ "
10
+ xmlns:blockml="org.blockml.bml"
11
+ xmlns:bom="org.blockml.bml.bom"
12
+ xmlns:bomapi="org.blockml.bml.bom.api"
13
+ xmlns:bomcommon="org.blockml.bml.bom.common"
14
+ xmlns:bomdoc="org.blockml.bml.bom.document"
15
+ xmlns:core="org.blockml.bml.core"
16
+ xmlns:def="org.blockml.bml.definition"
17
+ xmlns:framework="org.blockml.bml.framework"
18
+ xmlns:fwcap="org.blockml.bml.framework.capability"
19
+ xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
20
+ xmlns:type="org.blockml.bml.type"
21
+ xmlns:validator="org.blockml.bml.compiler.validator"
22
+ xmlns:valcap="org.blockml.bml.compiler.validator.capability"
23
+ xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation">
24
+
25
+ <name>ValidatorType</name>
26
+ <type>validator:ValidatorType</type>
27
+ <baseType>core:Entity</baseType>
28
+ <is>Abstract marker for validator implementation data-structure blocks</is>
29
+
30
+ <documentation>Reserved for future validator-internal types. Distinct from bom:UrmodellType and core:Capability.</documentation>
31
+
32
+ <references>
33
+ <see type="bom:UrmodellType" relation="SeeAlso" />
34
+ </references>
35
+
36
+ <abstract>true</abstract>
37
+
38
+ </block>
@@ -0,0 +1,54 @@
1
+ <!--
2
+ Validator Capability — Validate
3
+ FQN: org.blockml.bml.compiler.validator.capability.Validate
4
+ -->
5
+ <block
6
+ xmlns="http://blockml.org/bml"
7
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8
+ xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
9
+ "
10
+ xmlns:blockml="org.blockml.bml"
11
+ xmlns:bom="org.blockml.bml.bom"
12
+ xmlns:bomapi="org.blockml.bml.bom.api"
13
+ xmlns:bomcommon="org.blockml.bml.bom.common"
14
+ xmlns:bomdoc="org.blockml.bml.bom.document"
15
+ xmlns:core="org.blockml.bml.core"
16
+ xmlns:def="org.blockml.bml.definition"
17
+ xmlns:framework="org.blockml.bml.framework"
18
+ xmlns:fwcap="org.blockml.bml.framework.capability"
19
+ xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
20
+ xmlns:type="org.blockml.bml.type"
21
+ xmlns:validator="org.blockml.bml.compiler.validator"
22
+ xmlns:valcap="org.blockml.bml.compiler.validator.capability"
23
+ xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation">
24
+
25
+ <name>Validate</name>
26
+ <type>valcap:Validate</type>
27
+ <baseType>core:Capability</baseType>
28
+ <is>Public entry: BomDocument → ValidateResult (B26)</is>
29
+
30
+ <documentation>Orchestrates TypeRegistry bootstrap/injection, forkBom, validateTypes, and validateConstraints. Does not mutate input Urmodell.</documentation>
31
+
32
+ <references>
33
+ <see type="valdocumentation:PublicApi" relation="SeeAlso" />
34
+ <see type="bomapi:ValidateOptions" relation="SeeAlso" />
35
+ <see type="bomapi:ValidateResult" relation="SeeAlso" />
36
+ <see type="fwcap:ForkBom" relation="SeeAlso" />
37
+ <see type="fwcap:ValidateTypes" relation="SeeAlso" />
38
+ <see type="fwcap:ValidateConstraints" relation="SeeAlso" />
39
+ <see type="fwcap:BootstrapTypeRegistry" relation="SeeAlso" />
40
+ </references>
41
+
42
+ <properties>
43
+ <document type="bomdoc:BomDocument">
44
+ <documentation>document. TS type: bomdoc:BomDocument. (required)</documentation>
45
+ </document>
46
+ <options type="bomapi:ValidateOptions">
47
+ <documentation>Default continueOnError=true. (optional)</documentation>
48
+ </options>
49
+ <result type="bomapi:ValidateResult">
50
+ <documentation>result. TS type: bomapi:ValidateResult. (required)</documentation>
51
+ </result>
52
+ </properties>
53
+
54
+ </block>
@@ -0,0 +1,53 @@
1
+ <!--
2
+ Validator Documentation — DesignDecisions
3
+ FQN: org.blockml.bml.compiler.validator.documentation.DesignDecisions
4
+ -->
5
+ <block
6
+ xmlns="http://blockml.org/bml"
7
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8
+ xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
9
+ "
10
+ xmlns:blockml="org.blockml.bml"
11
+ xmlns:bom="org.blockml.bml.bom"
12
+ xmlns:bomapi="org.blockml.bml.bom.api"
13
+ xmlns:bomcommon="org.blockml.bml.bom.common"
14
+ xmlns:bomdoc="org.blockml.bml.bom.document"
15
+ xmlns:core="org.blockml.bml.core"
16
+ xmlns:def="org.blockml.bml.definition"
17
+ xmlns:framework="org.blockml.bml.framework"
18
+ xmlns:fwcap="org.blockml.bml.framework.capability"
19
+ xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
20
+ xmlns:type="org.blockml.bml.type"
21
+ xmlns:validator="org.blockml.bml.compiler.validator"
22
+ xmlns:valcap="org.blockml.bml.compiler.validator.capability"
23
+ xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
24
+ xmlns:doc="org.blockml.bml.documentation">
25
+
26
+ <name>DesignDecisions</name>
27
+ <type>valdocumentation:DesignDecisions</type>
28
+ <baseType>core:Documentation</baseType>
29
+ <is>Normative validator design decisions</is>
30
+
31
+ <documentation>Pragmatic model (default fork): validate() always forks via forkBom before checks.
32
+ Urmodell input is never mutated.
33
+
34
+ continueOnError (default true): when false and validation fails, return diagnostics
35
+ without pragmaticModel — host can abort before downstream work.
36
+
37
+ TypeRegistry injection: hosts with pre-built registry skip bootstrap; supports
38
+ LSP and incremental validation scenarios.
39
+
40
+ success semantics: false when any diagnostic has severity === "error"; warnings
41
+ alone do not fail success.
42
+
43
+ Bootstrap modes: bootstrapPaths (corpus flat scan) or libraryPaths (Library.bml graph).
44
+ validateVersions runs after validateTypes and before validateConstraints.
45
+
46
+ No throw on validation failure — aligns with B26 sync diagnostic API across parser,
47
+ serializer, validator, and compiler.</documentation>
48
+
49
+ <references>
50
+ <see type="valdocumentation:Diagnostics" relation="ReadNext"></see>
51
+ </references>
52
+
53
+ </block>
@@ -0,0 +1,47 @@
1
+ <!--
2
+ Validator Documentation — Diagnostics
3
+ FQN: org.blockml.bml.compiler.validator.documentation.Diagnostics
4
+ -->
5
+ <block
6
+ xmlns="http://blockml.org/bml"
7
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8
+ xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
9
+ "
10
+ xmlns:blockml="org.blockml.bml"
11
+ xmlns:bom="org.blockml.bml.bom"
12
+ xmlns:bomapi="org.blockml.bml.bom.api"
13
+ xmlns:bomcommon="org.blockml.bml.bom.common"
14
+ xmlns:bomdoc="org.blockml.bml.bom.document"
15
+ xmlns:core="org.blockml.bml.core"
16
+ xmlns:def="org.blockml.bml.definition"
17
+ xmlns:framework="org.blockml.bml.framework"
18
+ xmlns:fwcap="org.blockml.bml.framework.capability"
19
+ xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
20
+ xmlns:type="org.blockml.bml.type"
21
+ xmlns:validator="org.blockml.bml.compiler.validator"
22
+ xmlns:valcap="org.blockml.bml.compiler.validator.capability"
23
+ xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
24
+ xmlns:doc="org.blockml.bml.documentation">
25
+
26
+ <name>Diagnostics</name>
27
+ <type>valdocumentation:Diagnostics</type>
28
+ <baseType>core:Documentation</baseType>
29
+ <is>Validator diagnostics and host abort policy</is>
30
+
31
+ <documentation>The validator aggregates diagnostics from framework utilities (validateTypes,
32
+ validateConstraints) and bootstrap (when TypeRegistry is built inline).
33
+
34
+ Diagnostic type: org.blockml.bml.bom.common.Diagnostic (shared across toolchain).
35
+
36
+ Host policy: CLI, IDE, and other orchestrators decide whether error diagnostics
37
+ block serialize, compile, or other downstream steps. The validator package does
38
+ not enforce abort-on-error — it reports diagnostics and success flag only.
39
+
40
+ Cross-ref diagnostic codes: org.blockml.bml.framework.config.FrameworkDiagnosticCodes</documentation>
41
+
42
+ <references>
43
+ <see type="fwconfig:FrameworkDiagnosticCodes" relation="SeeAlso"></see>
44
+ <see type="valdocumentation:PackageOwnership" relation="ReadNext"></see>
45
+ </references>
46
+
47
+ </block>
@@ -0,0 +1,49 @@
1
+ <!--
2
+ Validator Documentation — Introduction
3
+ FQN: org.blockml.bml.compiler.validator.documentation.Introduction
4
+ -->
5
+ <block
6
+ xmlns="http://blockml.org/bml"
7
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8
+ xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
9
+ "
10
+ xmlns:blockml="org.blockml.bml"
11
+ xmlns:bom="org.blockml.bml.bom"
12
+ xmlns:bomapi="org.blockml.bml.bom.api"
13
+ xmlns:bomcommon="org.blockml.bml.bom.common"
14
+ xmlns:bomdoc="org.blockml.bml.bom.document"
15
+ xmlns:core="org.blockml.bml.core"
16
+ xmlns:def="org.blockml.bml.definition"
17
+ xmlns:framework="org.blockml.bml.framework"
18
+ xmlns:fwcap="org.blockml.bml.framework.capability"
19
+ xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
20
+ xmlns:type="org.blockml.bml.type"
21
+ xmlns:validator="org.blockml.bml.compiler.validator"
22
+ xmlns:valcap="org.blockml.bml.compiler.validator.capability"
23
+ xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
24
+ xmlns:doc="org.blockml.bml.documentation">
25
+
26
+ <name>Introduction</name>
27
+ <type>valdocumentation:Introduction</type>
28
+ <baseType>core:Documentation</baseType>
29
+ <is>Purpose and scope of the Validator package</is>
30
+
31
+ <documentation>The @blockml/validator package provides Stage-2 semantic validation on BomDocument.
32
+ It orchestrates @blockml/framework utilities on a pragmatic fork of the Urmodell.
33
+
34
+ This library (org.blockml.bml.compiler.validator.*) is the SSOT. TypeScript in
35
+ packages/validator/src/ implements it. Parity tests in packages/validator/test/
36
+ verify BML ↔ TS alignment.
37
+
38
+ Pipeline placement: BomDocument ← Parser | BomBuilder → Validator → diagnostics +
39
+ optional pragmaticModel. Consumed by @blockml/cli, @blockml/lsp (V2), and hosts.
40
+
41
+ Validator never mutates the input Urmodell. Abort-on-error is a host concern — not
42
+ enforced inside the validator package.</documentation>
43
+
44
+ <references>
45
+ <see type="valdocumentation:LayerSeparation" relation="ReadNext"></see>
46
+ <see type="bomdocumentation:Introduction" relation="SeeAlso"></see>
47
+ </references>
48
+
49
+ </block>
@@ -0,0 +1,51 @@
1
+ <!--
2
+ Validator Documentation — LayerSeparation
3
+ FQN: org.blockml.bml.compiler.validator.documentation.LayerSeparation
4
+ -->
5
+ <block
6
+ xmlns="http://blockml.org/bml"
7
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8
+ xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
9
+ "
10
+ xmlns:blockml="org.blockml.bml"
11
+ xmlns:bom="org.blockml.bml.bom"
12
+ xmlns:bomapi="org.blockml.bml.bom.api"
13
+ xmlns:bomcommon="org.blockml.bml.bom.common"
14
+ xmlns:bomdoc="org.blockml.bml.bom.document"
15
+ xmlns:core="org.blockml.bml.core"
16
+ xmlns:def="org.blockml.bml.definition"
17
+ xmlns:framework="org.blockml.bml.framework"
18
+ xmlns:fwcap="org.blockml.bml.framework.capability"
19
+ xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
20
+ xmlns:type="org.blockml.bml.type"
21
+ xmlns:validator="org.blockml.bml.compiler.validator"
22
+ xmlns:valcap="org.blockml.bml.compiler.validator.capability"
23
+ xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
24
+ xmlns:doc="org.blockml.bml.documentation">
25
+
26
+ <name>LayerSeparation</name>
27
+ <type>valdocumentation:LayerSeparation</type>
28
+ <baseType>core:Documentation</baseType>
29
+ <is>Validator vs framework vs BOM vs parser</is>
30
+
31
+ <documentation>Four layers relevant to validation:
32
+
33
+ org.blockml.bml.bom.* (@blockml/bom) — Urmodell types (BomDocument, …).
34
+ ValidateOptions, ValidateResult, TypeRegistryReader (B26) live here.
35
+
36
+ org.blockml.bml.framework.* (@blockml/framework) — TypeRegistry, forkBom,
37
+ validateTypes, validateConstraints, bootstrapTypeRegistry. Validator calls these;
38
+ does not reimplement them.
39
+
40
+ org.blockml.bml.compiler.validator.* (this package) — validate() orchestration
41
+ and Stage-2 entry point contract only.
42
+
43
+ org.blockml.bml.compiler.parser.* (@blockml/parser) — BML → BomDocument (Stage 1).
44
+ Validator consumes parser output; does not call parse() directly (bootstrap is via framework).</documentation>
45
+
46
+ <references>
47
+ <see type="valdocumentation:ValidationPipeline" relation="ReadNext"></see>
48
+ <see type="fwdocumentation:Introduction" relation="SeeAlso"></see>
49
+ </references>
50
+
51
+ </block>
@@ -0,0 +1,48 @@
1
+ <!--
2
+ Validator Documentation — PackageOwnership
3
+ FQN: org.blockml.bml.compiler.validator.documentation.PackageOwnership
4
+ -->
5
+ <block
6
+ xmlns="http://blockml.org/bml"
7
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8
+ xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
9
+ "
10
+ xmlns:blockml="org.blockml.bml"
11
+ xmlns:bom="org.blockml.bml.bom"
12
+ xmlns:bomapi="org.blockml.bml.bom.api"
13
+ xmlns:bomcommon="org.blockml.bml.bom.common"
14
+ xmlns:bomdoc="org.blockml.bml.bom.document"
15
+ xmlns:core="org.blockml.bml.core"
16
+ xmlns:def="org.blockml.bml.definition"
17
+ xmlns:framework="org.blockml.bml.framework"
18
+ xmlns:fwcap="org.blockml.bml.framework.capability"
19
+ xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
20
+ xmlns:type="org.blockml.bml.type"
21
+ xmlns:validator="org.blockml.bml.compiler.validator"
22
+ xmlns:valcap="org.blockml.bml.compiler.validator.capability"
23
+ xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
24
+ xmlns:doc="org.blockml.bml.documentation">
25
+
26
+ <name>PackageOwnership</name>
27
+ <type>valdocumentation:PackageOwnership</type>
28
+ <baseType>core:Documentation</baseType>
29
+ <is>Toolchain package responsibilities for validation</is>
30
+
31
+ <documentation>@blockml/validator — validate() orchestration; ValidateResult assembly. Owns this BML library.
32
+
33
+ @blockml/bom — Urmodell types, ValidateOptions/ValidateResult (B26), Diagnostic.
34
+ Validator consumes; does not redefine.
35
+
36
+ @blockml/framework — TypeRegistry, forkBom, validateTypes, validateConstraints,
37
+ bootstrapTypeRegistry. Validator delegates all semantic work here.
38
+
39
+ @blockml/parser — BML → BomDocument; used indirectly via framework bootstrap.
40
+
41
+ @blockml/cli — validate command host; may inject TypeRegistry or bootstrap paths.</documentation>
42
+
43
+ <references>
44
+ <see type="valdocumentation:ScopeExclusions" relation="ReadNext"></see>
45
+ <see type="bomdocumentation:PackageOwnership" relation="SeeAlso"></see>
46
+ </references>
47
+
48
+ </block>
@@ -0,0 +1,52 @@
1
+ <!--
2
+ Validator Documentation — PublicApi
3
+ FQN: org.blockml.bml.compiler.validator.documentation.PublicApi
4
+ -->
5
+ <block
6
+ xmlns="http://blockml.org/bml"
7
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8
+ xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
9
+ "
10
+ xmlns:blockml="org.blockml.bml"
11
+ xmlns:bom="org.blockml.bml.bom"
12
+ xmlns:bomapi="org.blockml.bml.bom.api"
13
+ xmlns:bomcommon="org.blockml.bml.bom.common"
14
+ xmlns:bomdoc="org.blockml.bml.bom.document"
15
+ xmlns:core="org.blockml.bml.core"
16
+ xmlns:def="org.blockml.bml.definition"
17
+ xmlns:framework="org.blockml.bml.framework"
18
+ xmlns:fwcap="org.blockml.bml.framework.capability"
19
+ xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
20
+ xmlns:type="org.blockml.bml.type"
21
+ xmlns:validator="org.blockml.bml.compiler.validator"
22
+ xmlns:valcap="org.blockml.bml.compiler.validator.capability"
23
+ xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
24
+ xmlns:doc="org.blockml.bml.documentation">
25
+
26
+ <name>PublicApi</name>
27
+ <type>valdocumentation:PublicApi</type>
28
+ <baseType>core:Documentation</baseType>
29
+ <is>validate() entry point (B26)</is>
30
+
31
+ <documentation>validate(document: BomDocument, options?: ValidateOptions): ValidateResult
32
+
33
+ ValidateOptions (owned by @blockml/bom):
34
+ • typeRegistry — pre-built TypeRegistryReader / TypeRegistry instance (optional)
35
+ • bootstrapPaths — corpus roots when bootstrapping (optional)
36
+ • continueOnError — default true; when false, omit pragmaticModel on failure
37
+
38
+ ValidateResult (owned by @blockml/bom):
39
+ • pragmaticModel — forked BomDocument when validation completes or continueOnError
40
+ • diagnostics — Diagnostic[]
41
+ • success — false if any error-severity diagnostic
42
+
43
+ Sync only; does not throw on validation errors. Host decides abort policy.</documentation>
44
+
45
+ <references>
46
+ <see type="bomapi:ValidateOptions" relation="Defines"></see>
47
+ <see type="bomapi:ValidateResult" relation="Defines"></see>
48
+ <see type="valcap:Validate" relation="Defines"></see>
49
+ <see type="valdocumentation:DesignDecisions" relation="ReadNext"></see>
50
+ </references>
51
+
52
+ </block>
@@ -0,0 +1,49 @@
1
+ <!--
2
+ Validator Documentation — ScopeExclusions
3
+ FQN: org.blockml.bml.compiler.validator.documentation.ScopeExclusions
4
+ -->
5
+ <block
6
+ xmlns="http://blockml.org/bml"
7
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8
+ xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
9
+ "
10
+ xmlns:blockml="org.blockml.bml"
11
+ xmlns:bom="org.blockml.bml.bom"
12
+ xmlns:bomapi="org.blockml.bml.bom.api"
13
+ xmlns:bomcommon="org.blockml.bml.bom.common"
14
+ xmlns:bomdoc="org.blockml.bml.bom.document"
15
+ xmlns:core="org.blockml.bml.core"
16
+ xmlns:def="org.blockml.bml.definition"
17
+ xmlns:framework="org.blockml.bml.framework"
18
+ xmlns:fwcap="org.blockml.bml.framework.capability"
19
+ xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
20
+ xmlns:type="org.blockml.bml.type"
21
+ xmlns:validator="org.blockml.bml.compiler.validator"
22
+ xmlns:valcap="org.blockml.bml.compiler.validator.capability"
23
+ xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
24
+ xmlns:doc="org.blockml.bml.documentation">
25
+
26
+ <name>ScopeExclusions</name>
27
+ <type>valdocumentation:ScopeExclusions</type>
28
+ <baseType>core:Documentation</baseType>
29
+ <is>Explicit out-of-scope for the validator package</is>
30
+
31
+ <documentation>Out of scope for @blockml/validator:
32
+
33
+ • TypeRegistry implementation — @blockml/framework
34
+ • Individual validation rules — @blockml/framework (validateTypes, validateEmbeddedBlocks,
35
+ validateInstances, validatePresets, validateVisibility, validateReadOnly, validateConstraints)
36
+ • SCAD / MachineBlocks Stage-3 render validation
37
+ • MemberGroups axis constraints (Category / AiUsage) — MachineBlocks-only; see docs/TODOs
38
+ • parse() / serialize() — @blockml/parser / @blockml/serializer
39
+ • Render target emit / compile — @blockml/compiler
40
+ • CLI file I/O — @blockml/cli
41
+ • Language BML corpus — @blockml/core (npm)
42
+
43
+ In scope: validate() orchestration on BomDocument with framework utilities.</documentation>
44
+
45
+ <references>
46
+ <see type="valdocumentation:Introduction" relation="SeeAlso"></see>
47
+ </references>
48
+
49
+ </block>
@@ -0,0 +1,58 @@
1
+ <!--
2
+ Validator Documentation — ValidationPipeline
3
+ FQN: org.blockml.bml.compiler.validator.documentation.ValidationPipeline
4
+ -->
5
+ <block
6
+ xmlns="http://blockml.org/bml"
7
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8
+ xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
9
+ "
10
+ xmlns:blockml="org.blockml.bml"
11
+ xmlns:bom="org.blockml.bml.bom"
12
+ xmlns:bomapi="org.blockml.bml.bom.api"
13
+ xmlns:bomcommon="org.blockml.bml.bom.common"
14
+ xmlns:bomdoc="org.blockml.bml.bom.document"
15
+ xmlns:core="org.blockml.bml.core"
16
+ xmlns:def="org.blockml.bml.definition"
17
+ xmlns:framework="org.blockml.bml.framework"
18
+ xmlns:fwcap="org.blockml.bml.framework.capability"
19
+ xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
20
+ xmlns:type="org.blockml.bml.type"
21
+ xmlns:validator="org.blockml.bml.compiler.validator"
22
+ xmlns:valcap="org.blockml.bml.compiler.validator.capability"
23
+ xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
24
+ xmlns:doc="org.blockml.bml.documentation">
25
+
26
+ <name>ValidationPipeline</name>
27
+ <type>valdocumentation:ValidationPipeline</type>
28
+ <baseType>core:Documentation</baseType>
29
+ <is>validate() orchestration steps</is>
30
+
31
+ <documentation>validate(document, options?) pipeline (packages/validator/src/validate.ts):
32
+
33
+ 1. Resolve TypeRegistry — options.typeRegistry if instanceof TypeRegistry,
34
+ else bootstrapTypeRegistry({ paths, libraryPaths, rootDir })
35
+ 2. forkBom(document) → pragmaticModel (structuredClone working copy)
36
+ 3. validateTypes(pragmaticModel, registry) → diagnostics[]
37
+ 4. validateEmbeddedBlocks(pragmaticModel) → append diagnostics
38
+ 5. validateVersions(pragmaticModel, registry) → append diagnostics
39
+ 6. validateInstances(pragmaticModel, registry) → append diagnostics
40
+ 7. validatePresets(pragmaticModel, registry) → append diagnostics
41
+ 8. validateVisibility(pragmaticModel, registry) → append diagnostics
42
+ 9. validateReadOnly(pragmaticModel, registry) → append diagnostics
43
+ 10. validateConstraints(pragmaticModel, registry) → append diagnostics
44
+ 11. success = no diagnostic with severity === "error"
45
+ 12. Return ValidateResult { pragmaticModel?, diagnostics, success }
46
+
47
+ When continueOnError === false and success === false, pragmaticModel is omitted
48
+ from the result (early return with diagnostics only).
49
+
50
+ Out of scope in this pipeline: SCAD/MachineBlocks Stage-3 render validation;
51
+ MemberGroups axis constraints (MB-only).</documentation>
52
+
53
+ <references>
54
+ <see type="valdocumentation:PublicApi" relation="ReadNext"></see>
55
+ <see type="valcap:Validate" relation="Defines"></see>
56
+ </references>
57
+
58
+ </block>
@@ -0,0 +1,2 @@
1
+ export { validate } from "./validate.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { validate } from "./validate.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BomDocument, ValidateOptions, ValidateResult } from "@blockml/bom";
2
+ export declare function validate(document: BomDocument, options?: ValidateOptions): ValidateResult;
3
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAc,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA+B7F,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,WAAW,EACrB,OAAO,GAAE,eAAoB,GAC5B,cAAc,CA4ChB"}
@@ -0,0 +1,47 @@
1
+ import { bootstrapTypeRegistry, forkBom, validateConstraints, validateEmbeddedBlocks, validateInstances, validatePresets, validateReadOnly, validateTypes, validateVersions, validateVisibility, TypeRegistry, } from "@blockml/framework";
2
+ /** Bootstrap scan diagnostics apply to the corpus, not the document under validation. */
3
+ function libraryBootstrapDiagnostics(bootstrap, options) {
4
+ if (!options.libraryPaths?.length) {
5
+ return [];
6
+ }
7
+ return bootstrap.diagnostics.filter((d) => d.code === "BML_LIBRARY_RESOLVE_ERROR" ||
8
+ d.code === "BML_LIBRARY_NESTING_VIOLATION");
9
+ }
10
+ export function validate(document, options = {}) {
11
+ const continueOnError = options.continueOnError !== false;
12
+ let registry;
13
+ let bootstrapDiagnostics = [];
14
+ if (options.typeRegistry instanceof TypeRegistry) {
15
+ registry = options.typeRegistry;
16
+ }
17
+ else {
18
+ const bootstrapOptions = { rootDir: process.cwd() };
19
+ if (options.bootstrapPaths) {
20
+ bootstrapOptions.paths = options.bootstrapPaths;
21
+ }
22
+ if (options.libraryPaths) {
23
+ bootstrapOptions.libraryPaths = options.libraryPaths;
24
+ }
25
+ const bootstrap = bootstrapTypeRegistry(bootstrapOptions);
26
+ registry = bootstrap.registry;
27
+ bootstrapDiagnostics = libraryBootstrapDiagnostics(bootstrap, options);
28
+ }
29
+ const pragmaticModel = forkBom(document);
30
+ const diagnostics = [
31
+ ...bootstrapDiagnostics,
32
+ ...validateTypes(pragmaticModel, registry),
33
+ ...validateEmbeddedBlocks(pragmaticModel),
34
+ ...validateVersions(pragmaticModel, registry),
35
+ ...validateInstances(pragmaticModel, registry),
36
+ ...validatePresets(pragmaticModel, registry),
37
+ ...validateVisibility(pragmaticModel, registry),
38
+ ...validateReadOnly(pragmaticModel, registry),
39
+ ...validateConstraints(pragmaticModel, registry),
40
+ ];
41
+ const success = !diagnostics.some((d) => d.severity === "error");
42
+ if (!continueOnError && !success) {
43
+ return { diagnostics, success };
44
+ }
45
+ return { pragmaticModel, diagnostics, success };
46
+ }
47
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,OAAO,EACP,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,GAEb,MAAM,oBAAoB,CAAC;AAE5B,yFAAyF;AACzF,SAAS,2BAA2B,CAClC,SAA0B,EAC1B,OAAwB;IAExB,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;QAClC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,SAAS,CAAC,WAAW,CAAC,MAAM,CACjC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,2BAA2B;QACtC,CAAC,CAAC,IAAI,KAAK,+BAA+B,CAC7C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,QAAqB,EACrB,UAA2B,EAAE;IAE7B,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,KAAK,KAAK,CAAC;IAC1D,IAAI,QAAsB,CAAC;IAC3B,IAAI,oBAAoB,GAAiB,EAAE,CAAC;IAE5C,IAAI,OAAO,CAAC,YAAY,YAAY,YAAY,EAAE,CAAC;QACjD,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,MAAM,gBAAgB,GAIlB,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,gBAAgB,CAAC,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC;QAClD,CAAC;QACD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,gBAAgB,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACvD,CAAC;QACD,MAAM,SAAS,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;QAC1D,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QAC9B,oBAAoB,GAAG,2BAA2B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG;QAClB,GAAG,oBAAoB;QACvB,GAAG,aAAa,CAAC,cAAc,EAAE,QAAQ,CAAC;QAC1C,GAAG,sBAAsB,CAAC,cAAc,CAAC;QACzC,GAAG,gBAAgB,CAAC,cAAc,EAAE,QAAQ,CAAC;QAC7C,GAAG,iBAAiB,CAAC,cAAc,EAAE,QAAQ,CAAC;QAC9C,GAAG,eAAe,CAAC,cAAc,EAAE,QAAQ,CAAC;QAC5C,GAAG,kBAAkB,CAAC,cAAc,EAAE,QAAQ,CAAC;QAC/C,GAAG,gBAAgB,CAAC,cAAc,EAAE,QAAQ,CAAC;QAC7C,GAAG,mBAAmB,CAAC,cAAc,EAAE,QAAQ,CAAC;KACjD,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAEjE,IAAI,CAAC,eAAe,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAClC,CAAC;IAED,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;AAClD,CAAC"}
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@blockml/validator",
3
+ "version": "0.1.0",
4
+ "description": "BlockML validator — semantic validation of BOM documents",
5
+ "license": "Apache-2.0",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/pks5/blockml-toolchain.git",
9
+ "directory": "packages/validator"
10
+ },
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "type": "module",
15
+ "sideEffects": false,
16
+ "blockml": {
17
+ "library": "./blocks/org/blockml/bml/compiler/validator/Library.bml"
18
+ },
19
+ "exports": {
20
+ ".": {
21
+ "types": "./dist/index.d.ts",
22
+ "import": "./dist/index.js"
23
+ }
24
+ },
25
+ "files": [
26
+ "dist",
27
+ "blocks"
28
+ ],
29
+ "scripts": {
30
+ "build": "tsc --build",
31
+ "prepublishOnly": "npm run build",
32
+ "test": "vitest run packages/validator/test"
33
+ },
34
+ "dependencies": {
35
+ "@blockml/bom": "^0.1.0",
36
+ "@blockml/core": "^1.0.3",
37
+ "@blockml/framework": "^0.1.0"
38
+ },
39
+ "engines": {
40
+ "node": ">=20"
41
+ }
42
+ }