@blockml/bom 0.9.4 → 0.9.5

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 (100) hide show
  1. package/blocks/org/blockml/bml/bom/Library.bml +20 -28
  2. package/blocks/org/blockml/bml/bom/README.bml +14 -21
  3. package/blocks/org/blockml/bml/bom/UrmodellType.bml +16 -20
  4. package/blocks/org/blockml/bml/bom/api/ParseOptions.bml +19 -20
  5. package/blocks/org/blockml/bml/bom/api/ParseResult.bml +22 -21
  6. package/blocks/org/blockml/bml/bom/api/SerializeOptions.bml +19 -20
  7. package/blocks/org/blockml/bml/bom/api/SerializeResult.bml +22 -21
  8. package/blocks/org/blockml/bml/bom/api/TypeRegistryReader.bml +13 -17
  9. package/blocks/org/blockml/bml/bom/api/ValidateOptions.bml +25 -22
  10. package/blocks/org/blockml/bml/bom/api/ValidateResult.bml +22 -21
  11. package/blocks/org/blockml/bml/bom/block/AliasEntry.bml +28 -23
  12. package/blocks/org/blockml/bml/bom/block/BlockDefinition.bml +142 -57
  13. package/blocks/org/blockml/bml/bom/block/ChangelogEntry.bml +25 -22
  14. package/blocks/org/blockml/bml/bom/block/DocumentationExample.bml +34 -25
  15. package/blocks/org/blockml/bml/bom/block/DocumentationProseEntry.bml +28 -23
  16. package/blocks/org/blockml/bml/bom/block/DocumentationReference.bml +52 -31
  17. package/blocks/org/blockml/bml/bom/block/GenericType.bml +22 -21
  18. package/blocks/org/blockml/bml/bom/block/KeywordEntry.bml +28 -23
  19. package/blocks/org/blockml/bml/bom/block/TypeReferenceEntityInstance.bml +22 -21
  20. package/blocks/org/blockml/bml/bom/capability/BomEquals.bml +22 -21
  21. package/blocks/org/blockml/bml/bom/capability/StripProvenance.bml +19 -20
  22. package/blocks/org/blockml/bml/bom/common/CharacterDataForm.bml +16 -19
  23. package/blocks/org/blockml/bml/bom/common/Diagnostic.bml +25 -22
  24. package/blocks/org/blockml/bml/bom/common/DiagnosticSeverity.bml +16 -19
  25. package/blocks/org/blockml/bml/bom/common/EmptyElementForm.bml +16 -19
  26. package/blocks/org/blockml/bml/bom/common/HostValue.bml +13 -17
  27. package/blocks/org/blockml/bml/bom/common/MemberSectionName.bml +16 -19
  28. package/blocks/org/blockml/bml/bom/common/MetadataElementTrivia.bml +16 -19
  29. package/blocks/org/blockml/bml/bom/common/SourceInfo.bml +35 -23
  30. package/blocks/org/blockml/bml/bom/common/SourceLocation.bml +28 -23
  31. package/blocks/org/blockml/bml/bom/common/UnknownXmlNode.bml +28 -23
  32. package/blocks/org/blockml/bml/bom/common/XmlNodeKind.bml +16 -19
  33. package/blocks/org/blockml/bml/bom/common/XmlRenderingBlock.bml +16 -19
  34. package/blocks/org/blockml/bml/bom/common/XmlRenderingMember.bml +25 -22
  35. package/blocks/org/blockml/bml/bom/common/XmlTrivia.bml +19 -20
  36. package/blocks/org/blockml/bml/bom/composition/BlockInstance.bml +55 -32
  37. package/blocks/org/blockml/bml/bom/composition/BlockInstanceNode.bml +25 -22
  38. package/blocks/org/blockml/bml/bom/composition/CompositionNode.bml +16 -19
  39. package/blocks/org/blockml/bml/bom/composition/CompositionTemplate.bml +28 -23
  40. package/blocks/org/blockml/bml/bom/composition/DirectiveAttribute.bml +16 -19
  41. package/blocks/org/blockml/bml/bom/composition/EachDirective.bml +25 -22
  42. package/blocks/org/blockml/bml/bom/composition/GenericsBinding.bml +26 -23
  43. package/blocks/org/blockml/bml/bom/composition/IfDirective.bml +19 -20
  44. package/blocks/org/blockml/bml/bom/composition/InstanceAggregationComposition.bml +22 -21
  45. package/blocks/org/blockml/bml/bom/composition/UnlessDirective.bml +19 -20
  46. package/blocks/org/blockml/bml/bom/composition/VirtualContainerNode.bml +28 -23
  47. package/blocks/org/blockml/bml/bom/composition/WithBinding.bml +19 -20
  48. package/blocks/org/blockml/bml/bom/composition/WithDirective.bml +19 -20
  49. package/blocks/org/blockml/bml/bom/document/BomDocument.bml +25 -23
  50. package/blocks/org/blockml/bml/bom/documentation/AbstractionPrinciple.bml +16 -21
  51. package/blocks/org/blockml/bml/bom/documentation/ArchitectureOverview.bml +16 -21
  52. package/blocks/org/blockml/bml/bom/documentation/AuthoredSurfaceTable.bml +14 -17
  53. package/blocks/org/blockml/bml/bom/documentation/CalibratorExample.bml +19 -24
  54. package/blocks/org/blockml/bml/bom/documentation/CompositionDirectives.bml +16 -21
  55. package/blocks/org/blockml/bml/bom/documentation/DesignDecisions.bml +25 -29
  56. package/blocks/org/blockml/bml/bom/documentation/InstanceIdRules.bml +18 -22
  57. package/blocks/org/blockml/bml/bom/documentation/Introduction.bml +16 -21
  58. package/blocks/org/blockml/bml/bom/documentation/LayerSeparation.bml +17 -22
  59. package/blocks/org/blockml/bml/bom/documentation/MemberValueSemantics.bml +17 -22
  60. package/blocks/org/blockml/bml/bom/documentation/PackageOwnership.bml +24 -28
  61. package/blocks/org/blockml/bml/bom/documentation/PublicApi.bml +24 -27
  62. package/blocks/org/blockml/bml/bom/documentation/RelatedDiagnostics.bml +15 -19
  63. package/blocks/org/blockml/bml/bom/documentation/ScopeExclusions.bml +16 -20
  64. package/blocks/org/blockml/bml/bom/documentation/SubBlockAndEmbeddedBlocks.bml +17 -21
  65. package/blocks/org/blockml/bml/bom/documentation/TypeExpressionsOverview.bml +17 -22
  66. package/blocks/org/blockml/bml/bom/documentation/ValidationResponsibilities.bml +16 -21
  67. package/blocks/org/blockml/bml/bom/documentation/VersionRules.bml +16 -20
  68. package/blocks/org/blockml/bml/bom/documentation/XmlComments.bml +17 -21
  69. package/blocks/org/blockml/bml/bom/member/AggregationDefinition.bml +34 -25
  70. package/blocks/org/blockml/bml/bom/member/AssociationDefinition.bml +22 -21
  71. package/blocks/org/blockml/bml/bom/member/CapabilityDefinition.bml +37 -26
  72. package/blocks/org/blockml/bml/bom/member/ConstrainableDefinition.bml +16 -19
  73. package/blocks/org/blockml/bml/bom/member/EmbeddedExpression.bml +22 -21
  74. package/blocks/org/blockml/bml/bom/member/ImplementationBlock.bml +28 -23
  75. package/blocks/org/blockml/bml/bom/member/MemberDefinition.bml +16 -19
  76. package/blocks/org/blockml/bml/bom/member/MemberDefinitionBase.bml +79 -40
  77. package/blocks/org/blockml/bml/bom/member/PropertyDefinition.bml +37 -26
  78. package/blocks/org/blockml/bml/bom/member/PropertyValueEntry.bml +18 -21
  79. package/blocks/org/blockml/bml/bom/type/AnonymousStructType.bml +19 -20
  80. package/blocks/org/blockml/bml/bom/type/GenericParameterReference.bml +19 -20
  81. package/blocks/org/blockml/bml/bom/type/GroupedTypeExpression.bml +22 -21
  82. package/blocks/org/blockml/bml/bom/type/InstanceConfiguration.bml +19 -20
  83. package/blocks/org/blockml/bml/bom/type/Multiplicity.bml +19 -20
  84. package/blocks/org/blockml/bml/bom/type/NamedTypeReference.bml +28 -23
  85. package/blocks/org/blockml/bml/bom/type/SelfTypeReference.bml +16 -19
  86. package/blocks/org/blockml/bml/bom/type/StructField.bml +19 -20
  87. package/blocks/org/blockml/bml/bom/type/TypeDescriptor.bml +14 -19
  88. package/blocks/org/blockml/bml/bom/type/TypeExpression.bml +16 -19
  89. package/blocks/org/blockml/bml/bom/type/UnionTypeExpression.bml +19 -20
  90. package/blocks/org/blockml/bml/bom/value/Address.bml +31 -24
  91. package/blocks/org/blockml/bml/bom/value/AddressValue.bml +19 -20
  92. package/blocks/org/blockml/bml/bom/value/ExpressionValue.bml +25 -22
  93. package/blocks/org/blockml/bml/bom/value/InterpolatedTextValue.bml +26 -22
  94. package/blocks/org/blockml/bml/bom/value/LiteralValue.bml +25 -22
  95. package/blocks/org/blockml/bml/bom/value/MemberValue.bml +16 -19
  96. package/dist/types/block-definition.d.ts +10 -0
  97. package/dist/types/block-definition.d.ts.map +1 -1
  98. package/dist/types/common.d.ts +6 -0
  99. package/dist/types/common.d.ts.map +1 -1
  100. package/package.json +2 -2
@@ -1,12 +1,6 @@
1
- <!--
2
- BOM Urmodell — BomDocument
3
- FQN: org.blockml.bml.bom.document.BomDocument
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
- "
1
+ <!--BOM Urmodell — BomDocument
2
+ FQN: org.blockml.bml.bom.document.BomDocument-->
3
+ <bomdoc:BomDocument xmlns="http://blockml.org/bml"
10
4
  xmlns:blockml="org.blockml.bml"
11
5
  xmlns:bom="org.blockml.bml.bom"
12
6
  xmlns:bomapi="org.blockml.bml.bom.api"
@@ -23,27 +17,35 @@
23
17
  xmlns:def="org.blockml.bml.definition"
24
18
  xmlns:type="org.blockml.bml.type">
25
19
 
26
- <name>BomDocument</name>
27
- <type>bomdoc:BomDocument</type>
28
- <baseType>bom:UrmodellType</baseType>
29
- <is>Root Urmodell document — every parsed BML file</is>
30
-
31
- <documentation>Immutable after parse or BomBuilder.seal(). kind is always "block" in V1.</documentation>
32
-
20
+ <baseType>
21
+ bom:UrmodellType
22
+ </baseType>
23
+ <is>
24
+ Root Urmodell document — every parsed BML file
25
+ </is>
26
+ <documentation>
27
+ Immutable after parse or BomBuilder.seal(). kind is always "block" in V1.
28
+ </documentation>
33
29
  <examples>
34
- <example title="Calibrator reference shape">Reference BomDocument from com.machineblocks.bml.calibration.Calibrator. Root BlockDefinition with declared members, subBlocks (Utils, Base, StudDiameter, …), and compositions from _utils/_parts aggregations. Inherited native properties are NOT in members[].</example>
30
+ <example title="Calibrator reference shape">
31
+ Reference BomDocument from com.machineblocks.bml.calibration.Calibrator. Root BlockDefinition with declared members, subBlocks (Utils, Base, StudDiameter, …), and compositions from _utils/_parts aggregations. Inherited native properties are NOT in members[].
32
+ </example>
35
33
  </examples>
36
-
37
34
  <properties>
38
35
  <kind type="type:Text">
39
- <documentation>V1: always "block". (required)</documentation>
36
+ <documentation>
37
+ V1: always "block". (required)
38
+ </documentation>
40
39
  </kind>
41
40
  <source type="bomcommon:SourceInfo">
42
- <documentation>source (required). TS type: bomcommon:SourceInfo.</documentation>
41
+ <documentation>
42
+ source (required). TS type: bomcommon:SourceInfo.
43
+ </documentation>
43
44
  </source>
44
45
  <block type="bomblock:BlockDefinition">
45
- <documentation>block (required). TS type: bomblock:BlockDefinition.</documentation>
46
+ <documentation>
47
+ block (required). TS type: bomblock:BlockDefinition.
48
+ </documentation>
46
49
  </block>
47
50
  </properties>
48
-
49
- </block>
51
+ </bomdoc:BomDocument>
@@ -1,12 +1,6 @@
1
- <!--
2
- BOM Documentation — AbstractionPrinciple
3
- FQN: org.blockml.bml.bom.documentation.AbstractionPrinciple
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
- "
1
+ <!--BOM Documentation — AbstractionPrinciple
2
+ FQN: org.blockml.bml.bom.documentation.AbstractionPrinciple-->
3
+ <bomdocumentation:AbstractionPrinciple xmlns="http://blockml.org/bml"
10
4
  xmlns:blockml="org.blockml.bml"
11
5
  xmlns:bom="org.blockml.bml.bom"
12
6
  xmlns:bomapi="org.blockml.bml.bom.api"
@@ -24,23 +18,24 @@
24
18
  xmlns:type="org.blockml.bml.type"
25
19
  xmlns:doc="org.blockml.bml.documentation">
26
20
 
27
- <name>AbstractionPrinciple</name>
28
- <type>bomdocumentation:AbstractionPrinciple</type>
29
- <baseType>core:Documentation</baseType>
30
- <is>Lossless representation and roundtrip guarantee</is>
31
-
32
- <documentation>A BOM document is a lossless representation of BML source. It preserves authored
21
+ <baseType>
22
+ core:Documentation
23
+ </baseType>
24
+ <is>
25
+ Lossless representation and roundtrip guarantee
26
+ </is>
27
+ <documentation>
28
+ A BOM document is a lossless representation of BML source. It preserves authored
33
29
  structure and values — directives, aggregation declarations, literal syntax, unresolved
34
30
  type references, namespace bindings, and bml:xml metadata. BOM makes no statement about
35
31
  directive expansion, aggregation interpretation, or block rendering.
36
-
32
+
37
33
  Maximum authored surface: render targets and the serializer must read as much of the
38
34
  original document as the Urmodell can carry. Prefer first-class fields over hidden side channels.
39
-
40
- BML → BOM → BML must always be possible.</documentation>
41
-
35
+
36
+ BML → BOM → BML must always be possible.
37
+ </documentation>
42
38
  <references>
43
39
  <see type="bomdocumentation:AuthoredSurfaceTable" relation="ReadNext" />
44
40
  </references>
45
-
46
- </block>
41
+ </bomdocumentation:AbstractionPrinciple>
@@ -1,12 +1,6 @@
1
- <!--
2
- BOM Documentation — ArchitectureOverview
3
- FQN: org.blockml.bml.bom.documentation.ArchitectureOverview
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
- "
1
+ <!--BOM Documentation — ArchitectureOverview
2
+ FQN: org.blockml.bml.bom.documentation.ArchitectureOverview-->
3
+ <bomdocumentation:ArchitectureOverview xmlns="http://blockml.org/bml"
10
4
  xmlns:blockml="org.blockml.bml"
11
5
  xmlns:bom="org.blockml.bml.bom"
12
6
  xmlns:bomapi="org.blockml.bml.bom.api"
@@ -24,26 +18,27 @@
24
18
  xmlns:type="org.blockml.bml.type"
25
19
  xmlns:doc="org.blockml.bml.documentation">
26
20
 
27
- <name>ArchitectureOverview</name>
28
- <type>bomdocumentation:ArchitectureOverview</type>
29
- <baseType>core:Documentation</baseType>
30
- <is>BML source to render pipeline</is>
31
-
32
- <documentation>Pipeline roles:
33
-
21
+ <baseType>
22
+ core:Documentation
23
+ </baseType>
24
+ <is>
25
+ BML source to render pipeline
26
+ </is>
27
+ <documentation>
28
+ Pipeline roles:
29
+
34
30
  BML source → universal authoring and interchange format
35
31
  Urmodell (BOM) → canonical, immutable, lossless parse/build result (SSOT, read-only)
36
32
  BomBuilder (V3) → planned writable session; seal() → Urmodell (same types)
37
33
  Pragmatic Model → validator default fork + optional renderer forks (resolve only)
38
34
  Framework Utilities → derived views / merges on forks — never mutate Urmodell
39
35
  Render Target → chooses Urmodell / pragmatic / own forks + optional target working model
40
-
36
+
41
37
  Block in BML is the mandatory input concept — not a uniform runtime object model.
42
38
  The parser must read block documents; validators walk baseType chains. Internal
43
- representation after parse is implementation freedom.</documentation>
44
-
39
+ representation after parse is implementation freedom.
40
+ </documentation>
45
41
  <references>
46
42
  <see type="bomdocumentation:AbstractionPrinciple" relation="ReadNext" />
47
43
  </references>
48
-
49
- </block>
44
+ </bomdocumentation:ArchitectureOverview>
@@ -1,12 +1,6 @@
1
- <!--
2
- BOM Documentation — AuthoredSurfaceTable
3
- FQN: org.blockml.bml.bom.documentation.AuthoredSurfaceTable
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
- "
1
+ <!--BOM Documentation — AuthoredSurfaceTable
2
+ FQN: org.blockml.bml.bom.documentation.AuthoredSurfaceTable-->
3
+ <bomdocumentation:AuthoredSurfaceTable xmlns="http://blockml.org/bml"
10
4
  xmlns:blockml="org.blockml.bml"
11
5
  xmlns:bom="org.blockml.bml.bom"
12
6
  xmlns:bomapi="org.blockml.bml.bom.api"
@@ -24,17 +18,21 @@
24
18
  xmlns:type="org.blockml.bml.type"
25
19
  xmlns:doc="org.blockml.bml.documentation">
26
20
 
27
- <name>AuthoredSurfaceTable</name>
28
- <type>bomdocumentation:AuthoredSurfaceTable</type>
29
- <baseType>core:Documentation</baseType>
30
- <is>What BOM stores vs what downstream interprets</is>
31
-
21
+ <baseType>
22
+ core:Documentation
23
+ </baseType>
24
+ <is>
25
+ What BOM stores vs what downstream interprets
26
+ </is>
32
27
  <documentation>
33
28
  # What BOM stores vs what downstream interprets
34
-
29
+
35
30
  - bml:each / bml:if / bml:with → directives[] unexpanded → Renderer expands
36
31
  - xmlns / xmlns:prefix → SourceInfo.namespaceBindings 1:1 authored → Serializer QName emit (B21)
37
32
  - xsi:schemaLocation / xsi:noNamespaceSchemaLocation → SourceInfo (B25) → re-emit on root
33
+ - document root tag → SourceInfo.rootForm ("block" | "type") → Serializer form-fidelity (doc:DocumentFormat)
34
+ - Sub-Block / embed wrapper tag → BlockDefinition.wrapperForm → Serializer form-fidelity
35
+ - child name / type elements on a definition → authoredNameChild / authoredTypeChild → style warnings (doc:DocumentFormat)
38
36
  - bml:xml → xmlRendering block+member — NOT directives[] → Serializer, FatBlock, XSD
39
37
  - bml:generics → BlockInstance.generics (and illegal-host copies) — NOT directives[] → Validator binds genericTypes (open params required; defaultType may be overridden)
40
38
  - element|attribute dual placement → authoredPlacement (D9) → MUST roundtrip authored form
@@ -49,5 +47,4 @@
49
47
  - Capabilities → CapabilityDefinition in BOM → Renderer interprets (not invoked at parse)
50
48
  - XML comments → XmlTrivia on following element (B11) → Serializer re-emits
51
49
  </documentation>
52
-
53
- </block>
50
+ </bomdocumentation:AuthoredSurfaceTable>
@@ -1,12 +1,6 @@
1
- <!--
2
- BOM Documentation — CalibratorExample
3
- FQN: org.blockml.bml.bom.documentation.CalibratorExample
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
- "
1
+ <!--BOM Documentation — CalibratorExample
2
+ FQN: org.blockml.bml.bom.documentation.CalibratorExample-->
3
+ <bomdocumentation:CalibratorExample xmlns="http://blockml.org/bml"
10
4
  xmlns:blockml="org.blockml.bml"
11
5
  xmlns:bom="org.blockml.bml.bom"
12
6
  xmlns:bomapi="org.blockml.bml.bom.api"
@@ -24,30 +18,31 @@
24
18
  xmlns:type="org.blockml.bml.type"
25
19
  xmlns:doc="org.blockml.bml.documentation">
26
20
 
27
- <name>CalibratorExample</name>
28
- <type>bomdocumentation:CalibratorExample</type>
29
- <baseType>core:Documentation</baseType>
30
- <is>Reference BomDocument walkthrough</is>
31
-
32
- <documentation>Source: com.machineblocks.bml.calibration.Calibrator.bml
33
-
21
+ <baseType>
22
+ core:Documentation
23
+ </baseType>
24
+ <is>
25
+ Reference BomDocument walkthrough
26
+ </is>
27
+ <documentation>
28
+ Source: com.machineblocks.bml.calibration.Calibrator.bml
29
+
34
30
  BomDocument kind block → BlockDefinition Calibrator
35
31
  type com.machineblocks.bml.calibration.Calibrator, baseType CompositeBlock, version 1.0.0
36
-
32
+
37
33
  Declared members only (not inherited size, offset, baseColor):
38
34
  numberOfSamples, font, size (ExpressionValue), _utils aggregation (Utils bean context),
39
35
  _parts aggregation (4 calibration rows).
40
-
36
+
41
37
  subBlocks: Utils, Base, StudDiameter, BaseWallThickness, TubeDiameter, PinDiameter.
42
-
38
+
43
39
  compositions: _utils → Utils instance; _parts → Base, StudDiameter, Base (id=base_wall), …
44
-
40
+
45
41
  Observations: Sub-Block refs by short name resolved via subBlocks[] tree.
46
42
  @utils.formatValue and #math.* stored as ExpressionValue { raw }.
47
- Inherited native properties not in members[] — validator uses resolveEffectiveMembers().</documentation>
48
-
43
+ Inherited native properties not in members[] — validator uses resolveEffectiveMembers().
44
+ </documentation>
49
45
  <references>
50
46
  <see type="bomdoc:BomDocument" relation="SeeAlso" />
51
47
  </references>
52
-
53
- </block>
48
+ </bomdocumentation:CalibratorExample>
@@ -1,12 +1,6 @@
1
- <!--
2
- BOM Documentation — CompositionDirectives
3
- FQN: org.blockml.bml.bom.documentation.CompositionDirectives
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
- "
1
+ <!--BOM Documentation — CompositionDirectives
2
+ FQN: org.blockml.bml.bom.documentation.CompositionDirectives-->
3
+ <bomdocumentation:CompositionDirectives xmlns="http://blockml.org/bml"
10
4
  xmlns:blockml="org.blockml.bml"
11
5
  xmlns:bom="org.blockml.bml.bom"
12
6
  xmlns:bomapi="org.blockml.bml.bom.api"
@@ -24,13 +18,15 @@
24
18
  xmlns:type="org.blockml.bml.type"
25
19
  xmlns:doc="org.blockml.bml.documentation">
26
20
 
27
- <name>CompositionDirectives</name>
28
- <type>bomdocumentation:CompositionDirectives</type>
29
- <baseType>core:Documentation</baseType>
30
- <is>Directive placement and Thymeleaf model</is>
31
-
32
- <documentation>Directives follow Thymeleaf model — attributes on modified element, stored unexpanded.
33
-
21
+ <baseType>
22
+ core:Documentation
23
+ </baseType>
24
+ <is>
25
+ Directive placement and Thymeleaf model
26
+ </is>
27
+ <documentation>
28
+ Directives follow Thymeleaf model — attributes on modified element, stored unexpanded.
29
+
34
30
  bml:id, bml:version, bml:bean, bml:scope, bml:generics → BlockInstance fields (NOT directives[]).
35
31
  bml:generics binds genericTypes (attribute or child element; parentheses required).
36
32
  Open parameters require a binding; parameters with defaultType may omit it.
@@ -38,12 +34,11 @@
38
34
  Misplaced bml:generics is still stored so validate() can emit BML_GENERICS_DIRECTIVE_NOT_ALLOWED.
39
35
  bml:with → composition, aggregation, bml:container, block instances.
40
36
  bml:each, bml:if, bml:unless → bml:container, block instances.
41
-
37
+
42
38
  Dynamic ids: bml:id="${ 'val_' + i }" stored as ExpressionValue or literal on BlockInstance.id.
43
- Omitted bml:id stored absent — parser does not assign auto-IDs.</documentation>
44
-
39
+ Omitted bml:id stored absent — parser does not assign auto-IDs.
40
+ </documentation>
45
41
  <references>
46
42
  <see type="bomcomp:DirectiveAttribute" relation="Defines" />
47
43
  </references>
48
-
49
- </block>
44
+ </bomdocumentation:CompositionDirectives>
@@ -1,12 +1,6 @@
1
- <!--
2
- BOM Documentation — DesignDecisions
3
- FQN: org.blockml.bml.bom.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
- "
1
+ <!--BOM Documentation — DesignDecisions
2
+ FQN: org.blockml.bml.bom.documentation.DesignDecisions-->
3
+ <bomdocumentation:DesignDecisions xmlns="http://blockml.org/bml"
10
4
  xmlns:blockml="org.blockml.bml"
11
5
  xmlns:bom="org.blockml.bml.bom"
12
6
  xmlns:bomapi="org.blockml.bml.bom.api"
@@ -24,41 +18,43 @@
24
18
  xmlns:type="org.blockml.bml.type"
25
19
  xmlns:doc="org.blockml.bml.documentation">
26
20
 
27
- <name>DesignDecisions</name>
28
- <type>bomdocumentation:DesignDecisions</type>
29
- <baseType>core:Documentation</baseType>
30
- <is>Normative Urmodell design decisions</is>
31
-
32
- <documentation>Immutability: Urmodell (BomDocument) is immutable after parse or BomBuilder.seal().
21
+ <baseType>
22
+ core:Documentation
23
+ </baseType>
24
+ <is>
25
+ Normative Urmodell design decisions
26
+ </is>
27
+ <documentation>
28
+ Immutability: Urmodell (BomDocument) is immutable after parse or BomBuilder.seal().
33
29
  No utility or renderer writes derived data back. Validator/renderers use pragmatic forks.
34
-
30
+
35
31
  Builder / LSP reuse: construction-friendly, provenance-agnostic interfaces. Parser and
36
32
  BomBuilder produce the same graph. Source spans optional on types but populated by parser.
37
-
33
+
38
34
  Member inheritance: utility lookup only. BOM stores declared members per block.
39
35
  resolveEffectiveMembers() → EffectiveMemberSet — never flattened into BOM.
40
-
36
+
41
37
  Capabilities: stored in BOM; no synthetic getter/setter generation; renderer interprets.
42
-
38
+
43
39
  Member identity: uniqueness by resolved (namespace, name).
44
-
40
+
45
41
  Composition: nested inside aggregation on definitions only; instances open aggregations directly.
46
-
42
+
47
43
  Sub-Blocks: nested in BlockDefinition.subBlocks[]; FQN = parent.type + "." + name.
48
-
44
+
49
45
  Embedded Blocks: root embeddedBlocks[] only — virtual .bml files; FQN = type element.
50
-
46
+
51
47
  Directives: flow-control bml:* → directives[] unexpanded. bml:id/version → BlockInstance fields.
52
48
  bml:xml → first-class xmlRendering (not directives[]).
53
-
49
+
54
50
  XML comments (B11): bind to following element; trailing on next line + blank line (B22).
55
51
  Whitespace (B13): not on Urmodell. Dual placement (D9): store authoredPlacement.
56
52
  Visibility (B14): logical name in BOM; emit _/__ from visibility.
57
-
53
+
58
54
  Instance version: bml:version optional exact assert on external refs (BML_UNKNOWN_VERSION).
59
55
  Definition version: effectiveBlockVersion = own version | library.version | error.
60
56
  Instance id: bml:id only on BlockInstance.id; no auto-ID in BomDocument; bml:each requires id.
61
-
62
- Property values: deep copy only — never linked. FQN::id cross-instance refs only on associations.</documentation>
63
-
64
- </block>
57
+
58
+ Property values: deep copy only — never linked. FQN::id cross-instance refs only on associations.
59
+ </documentation>
60
+ </bomdocumentation:DesignDecisions>
@@ -1,12 +1,6 @@
1
- <!--
2
- BOM Documentation — InstanceIdRules
3
- FQN: org.blockml.bml.bom.documentation.InstanceIdRules
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
- "
1
+ <!--BOM Documentation — InstanceIdRules
2
+ FQN: org.blockml.bml.bom.documentation.InstanceIdRules-->
3
+ <bomdocumentation:InstanceIdRules xmlns="http://blockml.org/bml"
10
4
  xmlns:blockml="org.blockml.bml"
11
5
  xmlns:bom="org.blockml.bml.bom"
12
6
  xmlns:bomapi="org.blockml.bml.bom.api"
@@ -24,22 +18,24 @@
24
18
  xmlns:type="org.blockml.bml.type"
25
19
  xmlns:doc="org.blockml.bml.documentation">
26
20
 
27
- <name>InstanceIdRules</name>
28
- <type>bomdocumentation:InstanceIdRules</type>
29
- <baseType>core:Documentation</baseType>
30
- <is>bml:id identity and cross-instance references</is>
31
-
32
- <documentation>bml:id identifies child within parent composition tree. No FQN fallback.
33
-
21
+ <baseType>
22
+ core:Documentation
23
+ </baseType>
24
+ <is>
25
+ bml:id identity and cross-instance references
26
+ </is>
27
+ <documentation>
28
+ bml:id identifies child within parent composition tree. No FQN fallback.
29
+
34
30
  Pipeline: Parse stores authored id → Validate cross-refs → Expand directives →
35
31
  Resolve/auto-ID static unreferenced children → Render.
36
-
32
+
37
33
  Auto-IDs NOT in BomDocument — only on expanded composition tree.
38
34
  Referenced instances and bml:each require explicit bml:id (BML_MISSING_ID).
39
-
35
+
40
36
  Auto-ID: hash(typeFqn, sibling index post-expansion, parent partId) → 6 hex chars.
41
-
37
+
42
38
  Qualified FQN::id: target in public aggregation, literal id, literal reference token.
43
- Same-document unqualified ids resolve within visible aggregations.</documentation>
44
-
45
- </block>
39
+ Same-document unqualified ids resolve within visible aggregations.
40
+ </documentation>
41
+ </bomdocumentation:InstanceIdRules>
@@ -1,12 +1,6 @@
1
- <!--
2
- BOM Documentation — Introduction
3
- FQN: org.blockml.bml.bom.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
- "
1
+ <!--BOM Documentation — Introduction
2
+ FQN: org.blockml.bml.bom.documentation.Introduction-->
3
+ <bomdocumentation:Introduction xmlns="http://blockml.org/bml"
10
4
  xmlns:blockml="org.blockml.bml"
11
5
  xmlns:bom="org.blockml.bml.bom"
12
6
  xmlns:bomapi="org.blockml.bml.bom.api"
@@ -24,27 +18,28 @@
24
18
  xmlns:type="org.blockml.bml.type"
25
19
  xmlns:doc="org.blockml.bml.documentation">
26
20
 
27
- <name>Introduction</name>
28
- <type>bomdocumentation:Introduction</type>
29
- <baseType>core:Documentation</baseType>
30
- <is>Purpose and scope of the BOM Urmodell package</is>
31
-
32
- <documentation>The @blockml/bom package defines the formal Block Object Model (Urmodell) — canonical,
21
+ <baseType>
22
+ core:Documentation
23
+ </baseType>
24
+ <is>
25
+ Purpose and scope of the BOM Urmodell package
26
+ </is>
27
+ <documentation>
28
+ The @blockml/bom package defines the formal Block Object Model (Urmodell) — canonical,
33
29
  immutable, lossless parse/build results produced by @blockml/parser (or V3 BomBuilder.seal())
34
30
  and consumed by serializer, validator, compiler, LSP, and render targets.
35
-
31
+
36
32
  This library (org.blockml.bml.bom.*) is the SSOT. TypeScript in packages/bom/src/ implements
37
33
  it. Parity tests in packages/bom/test/ verify BML ↔ TS alignment.
38
-
34
+
39
35
  Related reading outside this package:
40
36
  • Conceptual foundations — 01_bom_core.md
41
37
  • BML authoring syntax — org.blockml.bml.documentation.* (@blockml/core)
42
38
  • BML → BOM mapping — @blockml/parser (13_bml_to_bom_mapping.md)
43
- • Expression AST — 10_expression_language.md</documentation>
44
-
39
+ • Expression AST — 10_expression_language.md
40
+ </documentation>
45
41
  <references>
46
42
  <see type="bomdocumentation:LayerSeparation" relation="ReadNext" />
47
43
  <see type="bomdocumentation:ArchitectureOverview" relation="SeeAlso" />
48
44
  </references>
49
-
50
- </block>
45
+ </bomdocumentation:Introduction>
@@ -1,12 +1,6 @@
1
- <!--
2
- BOM Documentation — LayerSeparation
3
- FQN: org.blockml.bml.bom.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
- "
1
+ <!--BOM Documentation — LayerSeparation
2
+ FQN: org.blockml.bml.bom.documentation.LayerSeparation-->
3
+ <bomdocumentation:LayerSeparation xmlns="http://blockml.org/bml"
10
4
  xmlns:blockml="org.blockml.bml"
11
5
  xmlns:bom="org.blockml.bml.bom"
12
6
  xmlns:bomapi="org.blockml.bml.bom.api"
@@ -24,24 +18,25 @@
24
18
  xmlns:type="org.blockml.bml.type"
25
19
  xmlns:doc="org.blockml.bml.documentation">
26
20
 
27
- <name>LayerSeparation</name>
28
- <type>bomdocumentation:LayerSeparation</type>
29
- <baseType>core:Documentation</baseType>
30
- <is>Urmodell types vs BML definition meta-model</is>
31
-
32
- <documentation>Two layers share names but differ in semantics:
33
-
21
+ <baseType>
22
+ core:Documentation
23
+ </baseType>
24
+ <is>
25
+ Urmodell types vs BML definition meta-model
26
+ </is>
27
+ <documentation>
28
+ Two layers share names but differ in semantics:
29
+
34
30
  org.blockml.bml.definition.* (@blockml/core) — BML meta-model. Describes what block
35
31
  definition documents mean (PropertyDefinition, BlockDefinition meta-type, …).
36
-
32
+
37
33
  org.blockml.bml.bom.* (this package) — Urmodell runtime. Parse-result data structures
38
34
  (BomDocument, BlockDefinition as TS interface, MemberDefinition, …).
39
-
35
+
40
36
  Example: org.blockml.bml.definition.BlockDefinition describes BML syntax; org.blockml.bml.bom.block.BlockDefinition
41
- describes the parser output shape. See 19_definition_blocks_and_bml_xml.md.</documentation>
42
-
37
+ describes the parser output shape. See 19_definition_blocks_and_bml_xml.md.
38
+ </documentation>
43
39
  <references>
44
40
  <see type="def:BlockDefinition" relation="SeeAlso" />
45
41
  </references>
46
-
47
- </block>
42
+ </bomdocumentation:LayerSeparation>
@@ -1,12 +1,6 @@
1
- <!--
2
- BOM Documentation — MemberValueSemantics
3
- FQN: org.blockml.bml.bom.documentation.MemberValueSemantics
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
- "
1
+ <!--BOM Documentation — MemberValueSemantics
2
+ FQN: org.blockml.bml.bom.documentation.MemberValueSemantics-->
3
+ <bomdocumentation:MemberValueSemantics xmlns="http://blockml.org/bml"
10
4
  xmlns:blockml="org.blockml.bml"
11
5
  xmlns:bom="org.blockml.bml.bom"
12
6
  xmlns:bomapi="org.blockml.bml.bom.api"
@@ -24,26 +18,27 @@
24
18
  xmlns:type="org.blockml.bml.type"
25
19
  xmlns:doc="org.blockml.bml.documentation">
26
20
 
27
- <name>MemberValueSemantics</name>
28
- <type>bomdocumentation:MemberValueSemantics</type>
29
- <baseType>core:Documentation</baseType>
30
- <is>Property value deep-copy rules</is>
31
-
32
- <documentation>Property values are never linked — always deep copies on instances and definitions.
21
+ <baseType>
22
+ core:Documentation
23
+ </baseType>
24
+ <is>
25
+ Property value deep-copy rules
26
+ </is>
27
+ <documentation>
28
+ Property values are never linked — always deep copies on instances and definitions.
33
29
  Cross-instance FQN::id references exist only on associations (basePresets, Step.part, …).
34
-
30
+
35
31
  EnumType tokens (Standard, FQN::id) are resolution keys — BOM stores id + typeFqn only.
36
32
  Struct/primitive literals stay inline in authored form — not normalized at parse time.
37
-
33
+
38
34
  LiteralValue: kind literal, opaque value, typeFqn, optional authoredPlacement (D9).
39
35
  ExpressionValue: kind expression, raw ${} text only in BOM; AST via parseExpression().
40
36
  InterpolatedTextValue: kind interpolated, full authored text with ${} holes; AST via parseInterpolatedText().
41
37
  AddressValue: parsed org.blockml.bml.type.Address shape.
42
-
43
- Preset/config merge copies into render-time view — never writes references back to BomDocument.</documentation>
44
-
38
+
39
+ Preset/config merge copies into render-time view — never writes references back to BomDocument.
40
+ </documentation>
45
41
  <references>
46
42
  <see type="bomvalue:MemberValue" relation="Defines" />
47
43
  </references>
48
-
49
- </block>
44
+ </bomdocumentation:MemberValueSemantics>