@metaobjectsdev/metadata 0.24.0-rc.1 → 0.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/dist/attr-schema-validate.d.ts.map +1 -1
  2. package/dist/attr-schema-validate.js +17 -2
  3. package/dist/attr-schema-validate.js.map +1 -1
  4. package/dist/core/field/field-constants.d.ts +18 -5
  5. package/dist/core/field/field-constants.d.ts.map +1 -1
  6. package/dist/core/field/field-constants.js +21 -5
  7. package/dist/core/field/field-constants.js.map +1 -1
  8. package/dist/core/field/field-definition.embedded.d.ts.map +1 -1
  9. package/dist/core/field/field-definition.embedded.js +8 -3
  10. package/dist/core/field/field-definition.embedded.js.map +1 -1
  11. package/dist/core/field/validate-field-mutability.d.ts +22 -0
  12. package/dist/core/field/validate-field-mutability.d.ts.map +1 -0
  13. package/dist/core/field/validate-field-mutability.js +208 -0
  14. package/dist/core/field/validate-field-mutability.js.map +1 -0
  15. package/dist/core/identity/identity-constants.d.ts +12 -0
  16. package/dist/core/identity/identity-constants.d.ts.map +1 -1
  17. package/dist/core/identity/identity-constants.js +15 -0
  18. package/dist/core/identity/identity-constants.js.map +1 -1
  19. package/dist/core/identity/identity-definition.embedded.js +2 -2
  20. package/dist/core/identity/identity-definition.embedded.js.map +1 -1
  21. package/dist/core/index/index-definition.embedded.js +2 -2
  22. package/dist/core/index/index-definition.embedded.js.map +1 -1
  23. package/dist/core/object/object-definition.embedded.js +2 -2
  24. package/dist/core/object/object-definition.embedded.js.map +1 -1
  25. package/dist/core/requirement/meta-requirement.d.ts +1 -2
  26. package/dist/core/requirement/meta-requirement.d.ts.map +1 -1
  27. package/dist/core/requirement/meta-requirement.js +2 -6
  28. package/dist/core/requirement/meta-requirement.js.map +1 -1
  29. package/dist/core/requirement/requirement-constants.d.ts +3 -8
  30. package/dist/core/requirement/requirement-constants.d.ts.map +1 -1
  31. package/dist/core/requirement/requirement-constants.js +2 -9
  32. package/dist/core/requirement/requirement-constants.js.map +1 -1
  33. package/dist/core/requirement/requirement-definition.embedded.d.ts.map +1 -1
  34. package/dist/core/requirement/requirement-definition.embedded.js +8 -46
  35. package/dist/core/requirement/requirement-definition.embedded.js.map +1 -1
  36. package/dist/core/requirement/resolve-claim.d.ts +37 -0
  37. package/dist/core/requirement/resolve-claim.d.ts.map +1 -0
  38. package/dist/core/requirement/resolve-claim.js +83 -0
  39. package/dist/core/requirement/resolve-claim.js.map +1 -0
  40. package/dist/core/vocabulary-rewrite-yaml.d.ts +21 -0
  41. package/dist/core/vocabulary-rewrite-yaml.d.ts.map +1 -0
  42. package/dist/core/vocabulary-rewrite-yaml.js +245 -0
  43. package/dist/core/vocabulary-rewrite-yaml.js.map +1 -0
  44. package/dist/core-types.d.ts.map +1 -1
  45. package/dist/core-types.js +10 -10
  46. package/dist/core-types.js.map +1 -1
  47. package/dist/errors.d.ts +2 -2
  48. package/dist/errors.d.ts.map +1 -1
  49. package/dist/errors.js +37 -4
  50. package/dist/errors.js.map +1 -1
  51. package/dist/index.d.ts +7 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +13 -1
  54. package/dist/index.js.map +1 -1
  55. package/dist/library/library-sources.d.ts +11 -0
  56. package/dist/library/library-sources.d.ts.map +1 -1
  57. package/dist/library/library-sources.js +13 -0
  58. package/dist/library/library-sources.js.map +1 -1
  59. package/dist/loader/meta-data-loader.d.ts.map +1 -1
  60. package/dist/loader/meta-data-loader.js +14 -10
  61. package/dist/loader/meta-data-loader.js.map +1 -1
  62. package/dist/loader/validation-passes.d.ts +1 -0
  63. package/dist/loader/validation-passes.d.ts.map +1 -1
  64. package/dist/loader/validation-passes.js +263 -45
  65. package/dist/loader/validation-passes.js.map +1 -1
  66. package/dist/naming-refs.d.ts.map +1 -1
  67. package/dist/naming-refs.js +2 -3
  68. package/dist/naming-refs.js.map +1 -1
  69. package/dist/parser-core.d.ts.map +1 -1
  70. package/dist/parser-core.js +22 -5
  71. package/dist/parser-core.js.map +1 -1
  72. package/dist/persistence/origin/meta-origin.d.ts +0 -10
  73. package/dist/persistence/origin/meta-origin.d.ts.map +1 -1
  74. package/dist/persistence/origin/meta-origin.js +1 -15
  75. package/dist/persistence/origin/meta-origin.js.map +1 -1
  76. package/dist/persistence/origin/origin-constants.d.ts +2 -4
  77. package/dist/persistence/origin/origin-constants.d.ts.map +1 -1
  78. package/dist/persistence/origin/origin-constants.js +9 -7
  79. package/dist/persistence/origin/origin-constants.js.map +1 -1
  80. package/dist/persistence/origin/origin-definition.embedded.d.ts.map +1 -1
  81. package/dist/persistence/origin/origin-definition.embedded.js +5 -21
  82. package/dist/persistence/origin/origin-definition.embedded.js.map +1 -1
  83. package/dist/registry-manifest.d.ts +9 -4
  84. package/dist/registry-manifest.d.ts.map +1 -1
  85. package/dist/registry-manifest.js +9 -4
  86. package/dist/registry-manifest.js.map +1 -1
  87. package/dist/retired-vocabulary.d.ts +92 -0
  88. package/dist/retired-vocabulary.d.ts.map +1 -0
  89. package/dist/retired-vocabulary.js +204 -0
  90. package/dist/retired-vocabulary.js.map +1 -0
  91. package/dist/super-resolve.d.ts +33 -0
  92. package/dist/super-resolve.d.ts.map +1 -1
  93. package/dist/super-resolve.js +56 -1
  94. package/dist/super-resolve.js.map +1 -1
  95. package/dist/template/prompt-definition.embedded.js +1 -1
  96. package/dist/template/prompt-definition.embedded.js.map +1 -1
  97. package/dist/template/template-constants.d.ts +6 -0
  98. package/dist/template/template-constants.d.ts.map +1 -1
  99. package/dist/template/template-constants.js +24 -1
  100. package/dist/template/template-constants.js.map +1 -1
  101. package/dist/template/template-definition.embedded.d.ts.map +1 -1
  102. package/dist/template/template-definition.embedded.js +34 -21
  103. package/dist/template/template-definition.embedded.js.map +1 -1
  104. package/dist/vocabulary-rewrite.d.ts +33 -0
  105. package/dist/vocabulary-rewrite.d.ts.map +1 -0
  106. package/dist/vocabulary-rewrite.js +314 -0
  107. package/dist/vocabulary-rewrite.js.map +1 -0
  108. package/package.json +11 -1
  109. package/src/attr-schema-validate.ts +17 -2
  110. package/src/core/field/field-constants.ts +24 -5
  111. package/src/core/field/field-definition.embedded.ts +8 -3
  112. package/src/core/field/validate-field-mutability.ts +259 -0
  113. package/src/core/identity/identity-constants.ts +16 -0
  114. package/src/core/identity/identity-definition.embedded.ts +2 -2
  115. package/src/core/index/index-definition.embedded.ts +2 -2
  116. package/src/core/object/object-definition.embedded.ts +2 -2
  117. package/src/core/requirement/meta-requirement.ts +1 -7
  118. package/src/core/requirement/requirement-constants.ts +2 -9
  119. package/src/core/requirement/requirement-definition.embedded.ts +8 -46
  120. package/src/core/requirement/resolve-claim.ts +98 -0
  121. package/src/core/vocabulary-rewrite-yaml.ts +267 -0
  122. package/src/core-types.ts +9 -10
  123. package/src/errors.ts +37 -4
  124. package/src/index.ts +29 -1
  125. package/src/library/library-sources.ts +14 -0
  126. package/src/loader/meta-data-loader.ts +15 -10
  127. package/src/loader/validation-passes.ts +323 -50
  128. package/src/naming-refs.ts +1 -3
  129. package/src/parser-core.ts +27 -5
  130. package/src/persistence/origin/meta-origin.ts +0 -16
  131. package/src/persistence/origin/origin-constants.ts +9 -8
  132. package/src/persistence/origin/origin-definition.embedded.ts +5 -21
  133. package/src/registry-manifest.ts +9 -4
  134. package/src/retired-vocabulary.ts +280 -0
  135. package/src/super-resolve.ts +59 -1
  136. package/src/template/prompt-definition.embedded.ts +1 -1
  137. package/src/template/template-constants.ts +27 -1
  138. package/src/template/template-definition.embedded.ts +34 -21
  139. package/src/vocabulary-rewrite.ts +350 -0
  140. package/dist/core/field/validate-field-readonly.d.ts +0 -9
  141. package/dist/core/field/validate-field-readonly.d.ts.map +0 -1
  142. package/dist/core/field/validate-field-readonly.js +0 -128
  143. package/dist/core/field/validate-field-readonly.js.map +0 -1
  144. package/src/core/field/validate-field-readonly.ts +0 -154
@@ -1 +1 @@
1
- {"version":3,"file":"identity-definition.embedded.js","sourceRoot":"","sources":["../../../src/core/identity/identity-definition.embedded.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,mBAAmB,GAAuB;IACrD,UAAU,EAAE,wBAAwB;IACpC,OAAO,EAAE;QACP;YACE,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,SAAS;YACpB,aAAa,EAAE,gGAAgG;YAC/G,WAAW,EAAE,oHAAoH;YACjI,WAAW,EAAE,CAAC;YACd,aAAa,EAAE,SAAS;YACxB,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,4GAA4G;iBAC5H;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,YAAY;oBACpB,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,eAAe,EAAE;wBACf,WAAW;wBACX,MAAM;wBACN,UAAU;qBACX;oBACD,aAAa,EAAE,+GAA+G;iBAC/H;aACF;SACF;QACD;YACE,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,WAAW;YACtB,aAAa,EAAE,yIAAyI;YACxJ,WAAW,EAAE,+IAA+I;YAC5J,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,kIAAkI;iBAClJ;aACF;SACF;QACD;YACE,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,WAAW;YACtB,aAAa,EAAE,iGAAiG;YAChH,WAAW,EAAE,2JAA2J;YACxK,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,4GAA4G;iBAC5H;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,YAAY;oBACpB,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,2MAA2M;iBAC3N;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,SAAS;oBACpB,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,kQAAkQ;iBAClR;aACF;SACF;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"identity-definition.embedded.js","sourceRoot":"","sources":["../../../src/core/identity/identity-definition.embedded.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,mBAAmB,GAAuB;IACrD,UAAU,EAAE,wBAAwB;IACpC,OAAO,EAAE;QACP;YACE,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,SAAS;YACpB,aAAa,EAAE,gGAAgG;YAC/G,WAAW,EAAE,oHAAoH;YACjI,WAAW,EAAE,CAAC;YACd,aAAa,EAAE,SAAS;YACxB,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,4GAA4G;iBAC5H;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,YAAY;oBACpB,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,eAAe,EAAE;wBACf,WAAW;wBACX,MAAM;wBACN,UAAU;qBACX;oBACD,aAAa,EAAE,+GAA+G;iBAC/H;aACF;SACF;QACD;YACE,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,WAAW;YACtB,aAAa,EAAE,yIAAyI;YACxJ,WAAW,EAAE,+IAA+I;YAC5J,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,mSAAmS;iBACnT;aACF;SACF;QACD;YACE,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,WAAW;YACtB,aAAa,EAAE,iGAAiG;YAChH,WAAW,EAAE,2JAA2J;YACxK,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,4GAA4G;iBAC5H;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,YAAY;oBACpB,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,2MAA2M;iBAC3N;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,SAAS;oBACpB,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,kQAAkQ;iBAClR;aACF;SACF;KACF;CACF,CAAC"}
@@ -12,9 +12,9 @@ export const INDEX_DEFINITION = {
12
12
  "subType": "string",
13
13
  "name": "fields",
14
14
  "isArray": true,
15
- "min": 1,
15
+ "min": 0,
16
16
  "max": 1,
17
- "description": "The field name(s) this index covers (at least one). When @expr is present, it is the key expression derived from these fields."
17
+ "description": "The field name(s) this index covers. Required UNLESS @expr is present an index keys off plain columns (@fields) or a key expression (@expr), never both; declaring both is ERR_INVALID_INDEX."
18
18
  }
19
19
  ]
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index-definition.embedded.js","sourceRoot":"","sources":["../../../src/core/index/index-definition.embedded.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,gBAAgB,GAAuB;IAClD,UAAU,EAAE,wBAAwB;IACpC,OAAO,EAAE;QACP;YACE,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,QAAQ;YACnB,aAAa,EAAE,gLAAgL;YAC/L,WAAW,EAAE,+MAA+M;YAC5N,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,gIAAgI;iBAChJ;aACF;SACF;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"index-definition.embedded.js","sourceRoot":"","sources":["../../../src/core/index/index-definition.embedded.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,gBAAgB,GAAuB;IAClD,UAAU,EAAE,wBAAwB;IACpC,OAAO,EAAE;QACP;YACE,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,QAAQ;YACnB,aAAa,EAAE,gLAAgL;YAC/L,WAAW,EAAE,+MAA+M;YAC5N,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,iMAAiM;iBACjN;aACF;SACF;KACF;CACF,CAAC"}
@@ -96,7 +96,7 @@ export const OBJECT_DEFINITION = {
96
96
  "extendsBase": true,
97
97
  "description": "A value object — pure shape with NO identity and NO source, ever. Constructed (by caller / embedding), never populated from a store. May `extends` an entity's fields to reuse shape. Equality is by content.",
98
98
  "whenToUse": "You need a reusable typed shape with NO identity and NO table — an embedded value, a DTO, a prompt/response payload. Constructed in memory, never persisted on its own.",
99
- "rules": "object.value is pure shape: it NEVER declares an identity and NEVER declares a source, in any role. It is constructed — by a caller or by embedding — and is never populated from a backing store. A value-hosted field may carry origin.passthrough (FR-015 parameter lineage) but NEVER an assembly origin (origin.aggregate / origin.computed / origin.collection / origin.first) — passthrough on a value is lineage; assembly origins live on object.projection (#210). It may `extends` an entity's fields to reuse their shape. @normalize is the object-level default ASCII normalization mode applied to this value's enum fields' tolerant extract (each field may still override per-field). See ADR-0028 (object taxonomy, value purity).",
99
+ "rules": "object.value is pure shape: it NEVER declares an identity and NEVER declares a source, in any role. It is constructed — by a caller or by embedding — and is never populated from a backing store. A value-hosted field may carry origin.passthrough (FR-015 parameter lineage) but NEVER an assembly origin (origin.aggregate / origin.computed / origin.first) — passthrough on a value is lineage; assembly origins live on object.projection (#210). It may `extends` an entity's fields to reuse their shape. @normalize is the object-level default ASCII normalization mode applied to this value's enum fields' tolerant extract (each field may still override per-field). See ADR-0028 (object taxonomy, value purity).",
100
100
  "children": [
101
101
  {
102
102
  "type": "relationship",
@@ -113,7 +113,7 @@ export const OBJECT_DEFINITION = {
113
113
  "extendsBase": true,
114
114
  "description": "A derived read-only representation of entities. Its fields are extends-bound / origin-derived / self-declared-under-external-assembly, all read-only at the subtype level. Identity is optional and MUST extend an entity identity; sources are restricted to read-only @kinds. The declared field set IS the exposure (inclusive, fail-closed).",
115
115
  "whenToUse": "You need a derived, read-only view over entities — a report, summary, or joined/aggregated read model. Declare it (with origin.* children) instead of hand-writing the SELECT/joins; it stays read-only and regenerates.",
116
- "rules": "object.projection is a derived read-only representation: every field is extends-bound, origin-derived, or self-declared-under-external-assembly, and all are read-only at the subtype level. Identity is optional and, when present, MUST extend an entity identity. Sources are restricted to read-only @kinds. The declared field set IS the exposure — an inclusive list, fail-closed. A projection NEVER declares relationships (derivation is expressed via @via, not a relationship child) and NEVER co-locates templates — hence its child set omits both relationship and template. The assembly origins (origin.aggregate / origin.computed / origin.collection / origin.first) live HERE, not on object.value; a SOURCELESS projection is the legal shape for a wire-assembled read model, and a template-level @payloadRef/@responseRef may target one (#210). See ADR-0028 (object taxonomy, projection).",
116
+ "rules": "object.projection is a derived read-only representation: every field is extends-bound, origin-derived, or self-declared-under-external-assembly, and all are read-only at the subtype level. Identity is optional and, when present, MUST extend an entity identity. Sources are restricted to read-only @kinds. The declared field set IS the exposure — an inclusive list, fail-closed. A projection NEVER declares relationships (derivation is expressed via @via, not a relationship child) and NEVER co-locates templates — hence its child set omits both relationship and template. The assembly origins (origin.aggregate / origin.computed / origin.first) live HERE, not on object.value; a SOURCELESS projection is the legal shape for a wire-assembled read model, and a template-level @payloadRef/@responseRef may target one (#210). See ADR-0028 (object taxonomy, projection).",
117
117
  "children": [
118
118
  {
119
119
  "type": "attr",
@@ -1 +1 @@
1
- {"version":3,"file":"object-definition.embedded.js","sourceRoot":"","sources":["../../../src/core/object/object-definition.embedded.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,iBAAiB,GAAuB;IACnD,UAAU,EAAE,wBAAwB;IACpC,OAAO,EAAE;QACP;YACE,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,MAAM;YACjB,aAAa,EAAE,kZAAkZ;YACja,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,OAAO;oBACf,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,MAAM,EAAE,UAAU;oBAClB,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,MAAM,EAAE,WAAW;oBACnB,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,MAAM,EAAE,OAAO;oBACf,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,IAAI;iBACZ;aACF;SACF;QACD;YACE,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,QAAQ;YACnB,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,kOAAkO;YACjP,WAAW,EAAE,4HAA4H;YACzI,OAAO,EAAE,wYAAwY;YACjZ,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,cAAc;oBACtB,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,MAAM,EAAE,UAAU;oBAClB,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,eAAe;oBACvB,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,mUAAmU;iBACnV;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,oBAAoB;oBAC5B,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,iUAAiU;iBACjV;aACF;SACF;QACD;YACE,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,OAAO;YAClB,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,+MAA+M;YAC9N,WAAW,EAAE,yKAAyK;YACtL,OAAO,EAAE,utBAAutB;YAChuB,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,cAAc;oBACtB,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,IAAI;iBACZ;aACF;SACF;QACD;YACE,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,YAAY;YACvB,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,kVAAkV;YACjW,WAAW,EAAE,0NAA0N;YACvO,OAAO,EAAE,u3BAAu3B;YACh4B,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,QAAQ;oBAChB,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,8VAA8V;iBAC9W;aACF;SACF;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"object-definition.embedded.js","sourceRoot":"","sources":["../../../src/core/object/object-definition.embedded.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,iBAAiB,GAAuB;IACnD,UAAU,EAAE,wBAAwB;IACpC,OAAO,EAAE;QACP;YACE,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,MAAM;YACjB,aAAa,EAAE,kZAAkZ;YACja,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,OAAO;oBACf,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,MAAM,EAAE,UAAU;oBAClB,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,MAAM,EAAE,WAAW;oBACnB,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,MAAM,EAAE,OAAO;oBACf,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,IAAI;iBACZ;aACF;SACF;QACD;YACE,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,QAAQ;YACnB,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,kOAAkO;YACjP,WAAW,EAAE,4HAA4H;YACzI,OAAO,EAAE,wYAAwY;YACjZ,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,cAAc;oBACtB,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,MAAM,EAAE,UAAU;oBAClB,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,eAAe;oBACvB,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,mUAAmU;iBACnV;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,oBAAoB;oBAC5B,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,iUAAiU;iBACjV;aACF;SACF;QACD;YACE,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,OAAO;YAClB,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,+MAA+M;YAC9N,WAAW,EAAE,yKAAyK;YACtL,OAAO,EAAE,msBAAmsB;YAC5sB,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,cAAc;oBACtB,SAAS,EAAE,GAAG;oBACd,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,IAAI;iBACZ;aACF;SACF;QACD;YACE,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,YAAY;YACvB,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,kVAAkV;YACjW,WAAW,EAAE,0NAA0N;YACvO,OAAO,EAAE,m2BAAm2B;YAC52B,UAAU,EAAE;gBACV;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,QAAQ;oBAChB,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,8VAA8V;iBAC9W;aACF;SACF;KACF;CACF,CAAC"}
@@ -23,7 +23,6 @@ export declare class MetaRequirement extends MetaData {
23
23
  /** True when there is outstanding work, so a `@disposition` says something. */
24
24
  hasOutstandingWork(): boolean;
25
25
  implementedBy(): string[];
26
- verifiedBy(): string[];
27
26
  /** True when this requirement is permitted to reference the model at all.
28
27
  *
29
28
  * An UNLEVELLED architectural requirement always may — its claim set is the
@@ -34,7 +33,7 @@ export declare class MetaRequirement extends MetaData {
34
33
  * the floor unconditionally would have broken every existing flat policy. */
35
34
  mayReferenceModel(): boolean;
36
35
  /** True when a dangling `@implementedBy` is an ERROR rather than expected.
37
- * An abandoned or superseded requirement's nodes are supposed to be gone. */
36
+ * `planned` is the only exemption — there the nodes do not exist YET. */
38
37
  requiresLiveNodes(): boolean;
39
38
  }
40
39
  //# sourceMappingURL=meta-requirement.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"meta-requirement.d.ts","sourceRoot":"","sources":["../../../src/core/requirement/meta-requirement.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAaL,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AAEpC,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,+DAA+D;IAC/D,YAAY,IAAI,OAAO;IAIvB,iFAAiF;IACjF,eAAe,IAAI,OAAO;IAI1B;;;mFAG+E;IAC/E,KAAK,IAAI,MAAM,GAAG,SAAS;IAK3B,MAAM,IAAI,iBAAiB,GAAG,SAAS;IAKvC;+DAC2D;IAC3D,WAAW,IAAI,sBAAsB,GAAG,SAAS;IAKjD,kFAAkF;IAClF,SAAS,IAAI,MAAM,EAAE;IAKrB;;qEAEiE;IACjE,SAAS,IAAI,OAAO;IAIpB,+EAA+E;IAC/E,kBAAkB,IAAI,OAAO;IAK7B,aAAa,IAAI,MAAM,EAAE;IAKzB,UAAU,IAAI,MAAM,EAAE;IAKtB;;;;;;;kFAO8E;IAC9E,iBAAiB,IAAI,OAAO;IAM5B;kFAC8E;IAC9E,iBAAiB,IAAI,OAAO;CAI7B"}
1
+ {"version":3,"file":"meta-requirement.d.ts","sourceRoot":"","sources":["../../../src/core/requirement/meta-requirement.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAYL,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AAEpC,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,+DAA+D;IAC/D,YAAY,IAAI,OAAO;IAIvB,iFAAiF;IACjF,eAAe,IAAI,OAAO;IAI1B;;;mFAG+E;IAC/E,KAAK,IAAI,MAAM,GAAG,SAAS;IAK3B,MAAM,IAAI,iBAAiB,GAAG,SAAS;IAKvC;+DAC2D;IAC3D,WAAW,IAAI,sBAAsB,GAAG,SAAS;IAKjD,kFAAkF;IAClF,SAAS,IAAI,MAAM,EAAE;IAKrB;;qEAEiE;IACjE,SAAS,IAAI,OAAO;IAIpB,+EAA+E;IAC/E,kBAAkB,IAAI,OAAO;IAK7B,aAAa,IAAI,MAAM,EAAE;IAKzB;;;;;;;kFAO8E;IAC9E,iBAAiB,IAAI,OAAO;IAM5B;8EAC0E;IAC1E,iBAAiB,IAAI,OAAO;CAI7B"}
@@ -4,7 +4,7 @@
4
4
  // Accessors are RESOLVING (ADR-0039) so a requirement that `extends` an
5
5
  // abstract parent inherits its properties.
6
6
  import { MetaData } from "../../shared/meta-data.js";
7
- import { REQUIREMENT_SUBTYPE_FUNCTIONAL, REQUIREMENT_SUBTYPE_ARCHITECTURAL, REQUIREMENT_ATTR_LEVEL, REQUIREMENT_ATTR_STATUS, REQUIREMENT_ATTR_DISPOSITION, REQUIREMENT_ATTR_TRACKED_BY, REQUIREMENT_ATTR_IMPLEMENTED_BY, REQUIREMENT_ATTR_VERIFIED_BY, REQUIREMENT_LINK_FLOOR_LEVEL, REQUIREMENT_STATUS_PLANNED, REQUIREMENT_STATUSES_REQUIRING_LIVE_NODES, REQUIREMENT_STATUSES_WITH_OUTSTANDING_WORK, } from "./requirement-constants.js";
7
+ import { REQUIREMENT_SUBTYPE_FUNCTIONAL, REQUIREMENT_SUBTYPE_ARCHITECTURAL, REQUIREMENT_ATTR_LEVEL, REQUIREMENT_ATTR_STATUS, REQUIREMENT_ATTR_DISPOSITION, REQUIREMENT_ATTR_TRACKED_BY, REQUIREMENT_ATTR_IMPLEMENTED_BY, REQUIREMENT_LINK_FLOOR_LEVEL, REQUIREMENT_STATUS_PLANNED, REQUIREMENT_STATUSES_REQUIRING_LIVE_NODES, REQUIREMENT_STATUSES_WITH_OUTSTANDING_WORK, } from "./requirement-constants.js";
8
8
  export class MetaRequirement extends MetaData {
9
9
  /** What the product does for a user — checked by EXISTENCE. */
10
10
  isFunctional() {
@@ -52,10 +52,6 @@ export class MetaRequirement extends MetaData {
52
52
  const v = this.attr(REQUIREMENT_ATTR_IMPLEMENTED_BY);
53
53
  return Array.isArray(v) ? v : [];
54
54
  }
55
- verifiedBy() {
56
- const v = this.attr(REQUIREMENT_ATTR_VERIFIED_BY);
57
- return Array.isArray(v) ? v : [];
58
- }
59
55
  /** True when this requirement is permitted to reference the model at all.
60
56
  *
61
57
  * An UNLEVELLED architectural requirement always may — its claim set is the
@@ -71,7 +67,7 @@ export class MetaRequirement extends MetaData {
71
67
  return lvl >= REQUIREMENT_LINK_FLOOR_LEVEL;
72
68
  }
73
69
  /** True when a dangling `@implementedBy` is an ERROR rather than expected.
74
- * An abandoned or superseded requirement's nodes are supposed to be gone. */
70
+ * `planned` is the only exemption — there the nodes do not exist YET. */
75
71
  requiresLiveNodes() {
76
72
  const s = this.status();
77
73
  return s !== undefined && REQUIREMENT_STATUSES_REQUIRING_LIVE_NODES.includes(s);
@@ -1 +1 @@
1
- {"version":3,"file":"meta-requirement.js","sourceRoot":"","sources":["../../../src/core/requirement/meta-requirement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"meta-requirement.js","sourceRoot":"","sources":["../../../src/core/requirement/meta-requirement.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,EAAE;AACF,wEAAwE;AACxE,wEAAwE;AACxE,2CAA2C;AAE3C,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EACL,8BAA8B,EAC9B,iCAAiC,EACjC,sBAAsB,EACtB,uBAAuB,EACvB,4BAA4B,EAC5B,2BAA2B,EAC3B,+BAA+B,EAC/B,4BAA4B,EAC5B,0BAA0B,EAC1B,yCAAyC,EACzC,0CAA0C,GAG3C,MAAM,4BAA4B,CAAC;AAEpC,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAC3C,+DAA+D;IAC/D,YAAY;QACV,OAAO,IAAI,CAAC,OAAO,KAAK,8BAA8B,CAAC;IACzD,CAAC;IAED,iFAAiF;IACjF,eAAe;QACb,OAAO,IAAI,CAAC,OAAO,KAAK,iCAAiC,CAAC;IAC5D,CAAC;IAED;;;mFAG+E;IAC/E,KAAK;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC5C,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;IAED,MAAM;QACJ,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,CAAuB,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,CAAC;IAED;+DAC2D;IAC3D,WAAW;QACT,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,CAA4B,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,CAAC;IAED,kFAAkF;IAClF,SAAS;QACP,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACjD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,CAAC;IAED;;qEAEiE;IACjE,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,0BAA0B,CAAC;IACtD,CAAC;IAED,+EAA+E;IAC/E,kBAAkB;QAChB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,SAAS,IAAI,0CAA0C,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,aAAa;QACX,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QACrD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,CAAC;IAED;;;;;;;kFAO8E;IAC9E,iBAAiB;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;QACrD,OAAO,GAAG,IAAI,4BAA4B,CAAC;IAC7C,CAAC;IAED;8EAC0E;IAC1E,iBAAiB;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,SAAS,IAAI,yCAAyC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;CACF"}
@@ -10,21 +10,16 @@ export declare const REQUIREMENT_ATTR_STATUS = "status";
10
10
  export declare const REQUIREMENT_ATTR_DISPOSITION = "disposition";
11
11
  export declare const REQUIREMENT_ATTR_TRACKED_BY = "trackedBy";
12
12
  export declare const REQUIREMENT_ATTR_STATEMENT = "statement";
13
- export declare const REQUIREMENT_ATTR_VIOLATION = "violation";
13
+ export declare const REQUIREMENT_ATTR_COUNTEREXAMPLE = "counterexample";
14
14
  export declare const REQUIREMENT_ATTR_IMPLEMENTED_BY = "implementedBy";
15
- export declare const REQUIREMENT_ATTR_VERIFIED_BY = "verifiedBy";
16
- export declare const REQUIREMENT_ATTR_SUPERSEDED_BY = "supersededBy";
17
15
  export declare const REQUIREMENT_STATUS_PLANNED = "planned";
18
16
  export declare const REQUIREMENT_STATUS_LIVE = "live";
19
17
  export declare const REQUIREMENT_STATUS_PARTIAL = "partial";
20
- export declare const REQUIREMENT_STATUS_ABANDONED = "abandoned";
21
- export declare const REQUIREMENT_STATUS_SUPERSEDED = "superseded";
22
- export declare const REQUIREMENT_STATUSES: readonly ["planned", "live", "partial", "abandoned", "superseded"];
18
+ export declare const REQUIREMENT_STATUSES: readonly ["planned", "live", "partial"];
23
19
  export type RequirementStatus = (typeof REQUIREMENT_STATUSES)[number];
24
20
  /** Statuses whose implementing nodes are supposed to still exist. A dangling
25
21
  * `@implementedBy` on one of these means the model moved and the requirement is
26
- * stale. On `planned` the nodes do not exist YET; on `abandoned`/`superseded`
27
- * they are supposed to be GONE — which is the whole point of those entries. */
22
+ * stale. `planned` is the only exemption — there the nodes do not exist YET. */
28
23
  export declare const REQUIREMENT_STATUSES_REQUIRING_LIVE_NODES: readonly RequirementStatus[];
29
24
  /** Statuses with outstanding work, so a `@disposition` is meaningful on them.
30
25
  * On any other status the decision IS the status, and recording a second one
@@ -1 +1 @@
1
- {"version":3,"file":"requirement-constants.d.ts","sourceRoot":"","sources":["../../../src/core/requirement/requirement-constants.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,WAAW,gBAAgB,CAAC;AASzC,eAAO,MAAM,8BAA8B,eAAe,CAAC;AAC3D,eAAO,MAAM,iCAAiC,kBAAkB,CAAC;AAEjE,eAAO,MAAM,oBAAoB,0CAGvB,CAAC;AACX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAMvE;gFACgF;AAChF,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAC9C,eAAO,MAAM,uBAAuB,WAAW,CAAC;AAChD,eAAO,MAAM,4BAA4B,gBAAgB,CAAC;AAC1D,eAAO,MAAM,2BAA2B,cAAc,CAAC;AACvD,eAAO,MAAM,0BAA0B,cAAc,CAAC;AACtD,eAAO,MAAM,0BAA0B,cAAc,CAAC;AACtD,eAAO,MAAM,+BAA+B,kBAAkB,CAAC;AAC/D,eAAO,MAAM,4BAA4B,eAAe,CAAC;AACzD,eAAO,MAAM,8BAA8B,iBAAiB,CAAC;AAS7D,eAAO,MAAM,0BAA0B,YAAY,CAAC;AACpD,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAC9C,eAAO,MAAM,0BAA0B,YAAY,CAAC;AACpD,eAAO,MAAM,4BAA4B,cAAc,CAAC;AACxD,eAAO,MAAM,6BAA6B,eAAe,CAAC;AAE1D,eAAO,MAAM,oBAAoB,oEAMvB,CAAC;AACX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE;;;gFAGgF;AAChF,eAAO,MAAM,yCAAyC,EAAE,SAAS,iBAAiB,EAGjF,CAAC;AAEF;;+CAE+C;AAC/C,eAAO,MAAM,0CAA0C,EAAE,SAAS,iBAAiB,EAGlF,CAAC;AASF,eAAO,MAAM,gCAAgC,aAAa,CAAC;AAC3D,eAAO,MAAM,gCAAgC,aAAa,CAAC;AAE3D,eAAO,MAAM,wBAAwB,mCAG3B,CAAC;AACX,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAM/E,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C;mDACmD;AACnD,eAAO,MAAM,4BAA4B,IAA2B,CAAC;AACrE,eAAO,MAAM,qBAAqB,IAA6B,CAAC;AAChE,eAAO,MAAM,qBAAqB,IAA2B,CAAC"}
1
+ {"version":3,"file":"requirement-constants.d.ts","sourceRoot":"","sources":["../../../src/core/requirement/requirement-constants.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,WAAW,gBAAgB,CAAC;AASzC,eAAO,MAAM,8BAA8B,eAAe,CAAC;AAC3D,eAAO,MAAM,iCAAiC,kBAAkB,CAAC;AAEjE,eAAO,MAAM,oBAAoB,0CAGvB,CAAC;AACX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAMvE;gFACgF;AAChF,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAC9C,eAAO,MAAM,uBAAuB,WAAW,CAAC;AAChD,eAAO,MAAM,4BAA4B,gBAAgB,CAAC;AAC1D,eAAO,MAAM,2BAA2B,cAAc,CAAC;AACvD,eAAO,MAAM,0BAA0B,cAAc,CAAC;AACtD,eAAO,MAAM,+BAA+B,mBAAmB,CAAC;AAChE,eAAO,MAAM,+BAA+B,kBAAkB,CAAC;AAS/D,eAAO,MAAM,0BAA0B,YAAY,CAAC;AACpD,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAC9C,eAAO,MAAM,0BAA0B,YAAY,CAAC;AAEpD,eAAO,MAAM,oBAAoB,yCAIvB,CAAC;AACX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE;;iFAEiF;AACjF,eAAO,MAAM,yCAAyC,EAAE,SAAS,iBAAiB,EAGjF,CAAC;AAEF;;+CAE+C;AAC/C,eAAO,MAAM,0CAA0C,EAAE,SAAS,iBAAiB,EAGlF,CAAC;AASF,eAAO,MAAM,gCAAgC,aAAa,CAAC;AAC3D,eAAO,MAAM,gCAAgC,aAAa,CAAC;AAE3D,eAAO,MAAM,wBAAwB,mCAG3B,CAAC;AACX,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAM/E,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C;mDACmD;AACnD,eAAO,MAAM,4BAA4B,IAA2B,CAAC;AACrE,eAAO,MAAM,qBAAqB,IAA6B,CAAC;AAChE,eAAO,MAAM,qBAAqB,IAA2B,CAAC"}
@@ -27,10 +27,8 @@ export const REQUIREMENT_ATTR_STATUS = "status";
27
27
  export const REQUIREMENT_ATTR_DISPOSITION = "disposition";
28
28
  export const REQUIREMENT_ATTR_TRACKED_BY = "trackedBy";
29
29
  export const REQUIREMENT_ATTR_STATEMENT = "statement";
30
- export const REQUIREMENT_ATTR_VIOLATION = "violation";
30
+ export const REQUIREMENT_ATTR_COUNTEREXAMPLE = "counterexample";
31
31
  export const REQUIREMENT_ATTR_IMPLEMENTED_BY = "implementedBy";
32
- export const REQUIREMENT_ATTR_VERIFIED_BY = "verifiedBy";
33
- export const REQUIREMENT_ATTR_SUPERSEDED_BY = "supersededBy";
34
32
  // ---------------------------------------------------------------------------
35
33
  // Status — a closed enum, enforced by the registry via `allowedValues`. This is
36
34
  // the one payload with controlled evidence behind it: model-only agents flagged
@@ -40,19 +38,14 @@ export const REQUIREMENT_ATTR_SUPERSEDED_BY = "supersededBy";
40
38
  export const REQUIREMENT_STATUS_PLANNED = "planned";
41
39
  export const REQUIREMENT_STATUS_LIVE = "live";
42
40
  export const REQUIREMENT_STATUS_PARTIAL = "partial";
43
- export const REQUIREMENT_STATUS_ABANDONED = "abandoned";
44
- export const REQUIREMENT_STATUS_SUPERSEDED = "superseded";
45
41
  export const REQUIREMENT_STATUSES = [
46
42
  REQUIREMENT_STATUS_PLANNED,
47
43
  REQUIREMENT_STATUS_LIVE,
48
44
  REQUIREMENT_STATUS_PARTIAL,
49
- REQUIREMENT_STATUS_ABANDONED,
50
- REQUIREMENT_STATUS_SUPERSEDED,
51
45
  ];
52
46
  /** Statuses whose implementing nodes are supposed to still exist. A dangling
53
47
  * `@implementedBy` on one of these means the model moved and the requirement is
54
- * stale. On `planned` the nodes do not exist YET; on `abandoned`/`superseded`
55
- * they are supposed to be GONE — which is the whole point of those entries. */
48
+ * stale. `planned` is the only exemption — there the nodes do not exist YET. */
56
49
  export const REQUIREMENT_STATUSES_REQUIRING_LIVE_NODES = [
57
50
  REQUIREMENT_STATUS_LIVE,
58
51
  REQUIREMENT_STATUS_PARTIAL,
@@ -1 +1 @@
1
- {"version":3,"file":"requirement-constants.js","sourceRoot":"","sources":["../../../src/core/requirement/requirement-constants.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,+EAA+E;AAC/E,2CAA2C;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AAEzC,8EAA8E;AAC9E,0EAA0E;AAC1E,wDAAwD;AACxD,oEAAoE;AACpE,oEAAoE;AACpE,8EAA8E;AAE9E,MAAM,CAAC,MAAM,8BAA8B,GAAG,YAAY,CAAC;AAC3D,MAAM,CAAC,MAAM,iCAAiC,GAAG,eAAe,CAAC;AAEjE,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,8BAA8B;IAC9B,iCAAiC;CACzB,CAAC;AAGX,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E;gFACgF;AAChF,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAC9C,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AAChD,MAAM,CAAC,MAAM,4BAA4B,GAAG,aAAa,CAAC;AAC1D,MAAM,CAAC,MAAM,2BAA2B,GAAG,WAAW,CAAC;AACvD,MAAM,CAAC,MAAM,0BAA0B,GAAG,WAAW,CAAC;AACtD,MAAM,CAAC,MAAM,0BAA0B,GAAG,WAAW,CAAC;AACtD,MAAM,CAAC,MAAM,+BAA+B,GAAG,eAAe,CAAC;AAC/D,MAAM,CAAC,MAAM,4BAA4B,GAAG,YAAY,CAAC;AACzD,MAAM,CAAC,MAAM,8BAA8B,GAAG,cAAc,CAAC;AAE7D,8EAA8E;AAC9E,gFAAgF;AAChF,gFAAgF;AAChF,+EAA+E;AAC/E,iDAAiD;AACjD,8EAA8E;AAE9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,SAAS,CAAC;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAC9C,MAAM,CAAC,MAAM,0BAA0B,GAAG,SAAS,CAAC;AACpD,MAAM,CAAC,MAAM,4BAA4B,GAAG,WAAW,CAAC;AACxD,MAAM,CAAC,MAAM,6BAA6B,GAAG,YAAY,CAAC;AAE1D,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,0BAA0B;IAC1B,uBAAuB;IACvB,0BAA0B;IAC1B,4BAA4B;IAC5B,6BAA6B;CACrB,CAAC;AAGX;;;gFAGgF;AAChF,MAAM,CAAC,MAAM,yCAAyC,GAAiC;IACrF,uBAAuB;IACvB,0BAA0B;CAC3B,CAAC;AAEF;;+CAE+C;AAC/C,MAAM,CAAC,MAAM,0CAA0C,GAAiC;IACtF,0BAA0B;IAC1B,0BAA0B;CAC3B,CAAC;AAEF,8EAA8E;AAC9E,2EAA2E;AAC3E,gFAAgF;AAChF,2EAA2E;AAC3E,4EAA4E;AAC5E,8EAA8E;AAE9E,MAAM,CAAC,MAAM,gCAAgC,GAAG,UAAU,CAAC;AAC3D,MAAM,CAAC,MAAM,gCAAgC,GAAG,UAAU,CAAC;AAE3D,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,gCAAgC;IAChC,gCAAgC;CACxB,CAAC;AAGX,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAE9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAC1C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C;mDACmD;AACnD,MAAM,CAAC,MAAM,4BAA4B,GAAG,wBAAwB,CAAC;AACrE,MAAM,CAAC,MAAM,qBAAqB,GAAG,0BAA0B,CAAC;AAChE,MAAM,CAAC,MAAM,qBAAqB,GAAG,wBAAwB,CAAC"}
1
+ {"version":3,"file":"requirement-constants.js","sourceRoot":"","sources":["../../../src/core/requirement/requirement-constants.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,+EAA+E;AAC/E,2CAA2C;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AAEzC,8EAA8E;AAC9E,0EAA0E;AAC1E,wDAAwD;AACxD,oEAAoE;AACpE,oEAAoE;AACpE,8EAA8E;AAE9E,MAAM,CAAC,MAAM,8BAA8B,GAAG,YAAY,CAAC;AAC3D,MAAM,CAAC,MAAM,iCAAiC,GAAG,eAAe,CAAC;AAEjE,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,8BAA8B;IAC9B,iCAAiC;CACzB,CAAC;AAGX,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E;gFACgF;AAChF,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAC9C,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AAChD,MAAM,CAAC,MAAM,4BAA4B,GAAG,aAAa,CAAC;AAC1D,MAAM,CAAC,MAAM,2BAA2B,GAAG,WAAW,CAAC;AACvD,MAAM,CAAC,MAAM,0BAA0B,GAAG,WAAW,CAAC;AACtD,MAAM,CAAC,MAAM,+BAA+B,GAAG,gBAAgB,CAAC;AAChE,MAAM,CAAC,MAAM,+BAA+B,GAAG,eAAe,CAAC;AAE/D,8EAA8E;AAC9E,gFAAgF;AAChF,gFAAgF;AAChF,+EAA+E;AAC/E,iDAAiD;AACjD,8EAA8E;AAE9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,SAAS,CAAC;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAC9C,MAAM,CAAC,MAAM,0BAA0B,GAAG,SAAS,CAAC;AAEpD,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,0BAA0B;IAC1B,uBAAuB;IACvB,0BAA0B;CAClB,CAAC;AAGX;;iFAEiF;AACjF,MAAM,CAAC,MAAM,yCAAyC,GAAiC;IACrF,uBAAuB;IACvB,0BAA0B;CAC3B,CAAC;AAEF;;+CAE+C;AAC/C,MAAM,CAAC,MAAM,0CAA0C,GAAiC;IACtF,0BAA0B;IAC1B,0BAA0B;CAC3B,CAAC;AAEF,8EAA8E;AAC9E,2EAA2E;AAC3E,gFAAgF;AAChF,2EAA2E;AAC3E,4EAA4E;AAC5E,8EAA8E;AAE9E,MAAM,CAAC,MAAM,gCAAgC,GAAG,UAAU,CAAC;AAC3D,MAAM,CAAC,MAAM,gCAAgC,GAAG,UAAU,CAAC;AAE3D,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,gCAAgC;IAChC,gCAAgC;CACxB,CAAC;AAGX,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAE9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAC1C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C;mDACmD;AACnD,MAAM,CAAC,MAAM,4BAA4B,GAAG,wBAAwB,CAAC;AACrE,MAAM,CAAC,MAAM,qBAAqB,GAAG,0BAA0B,CAAC;AAChE,MAAM,CAAC,MAAM,qBAAqB,GAAG,wBAAwB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"requirement-definition.embedded.d.ts","sourceRoot":"","sources":["../../../src/core/requirement/requirement-definition.embedded.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,eAAO,MAAM,sBAAsB,EAAE,kBAgNpC,CAAC"}
1
+ {"version":3,"file":"requirement-definition.embedded.d.ts","sourceRoot":"","sources":["../../../src/core/requirement/requirement-definition.embedded.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,eAAO,MAAM,sBAAsB,EAAE,kBA0KpC,CAAC"}
@@ -24,11 +24,9 @@ export const REQUIREMENT_DEFINITION = {
24
24
  "allowedValues": [
25
25
  "planned",
26
26
  "live",
27
- "partial",
28
- "abandoned",
29
- "superseded"
27
+ "partial"
30
28
  ],
31
- "description": "planned intended but not built yet; live implemented and in use; partial implemented with known gaps; abandoned built then deliberately retired; superseded replaced by a different mechanism. A dangling @implementedBy is an ERROR on live/partial (the model moved, the requirement is stale) and ALLOWED on planned/abandoned/superseded on planned the nodes do not exist YET, on the other two they are meant to be gone, and that is the entry doing its job. A planned requirement also never contributes to object coverage: planning a capability must not silence the warning that nothing implements it."
29
+ "description": "planned intended but not built yet; live implemented and in use; partial implemented with known gaps. A requirement is PRESCRIPTIVE — it states what SHOULD happen and is never a journal of what happened — so a capability that no longer applies is DELETED, not annotated as retired; the record of it having existed belongs to version control and to notes on the entries that survive. A dangling @implementedBy is an ERROR on live/partial (the model moved, the requirement is stale) and ALLOWED on planned, where the nodes do not exist YET. A planned requirement also never contributes to object coverage: planning a capability must not silence the warning that nothing implements it."
32
30
  },
33
31
  {
34
32
  "type": "attr",
@@ -49,7 +47,7 @@ export const REQUIREMENT_DEFINITION = {
49
47
  "isArray": true,
50
48
  "min": 0,
51
49
  "max": 1,
52
- "description": "Issue or ticket references for outstanding work — a URL, an owner/repo#123 shorthand, or a tracker key. Free-form and NOT resolved by verify, which does not reach the network; unlike @verifiedBy, nothing here is checked to exist. Its job is to stop a deferred gap becoming invisible, so verify warns when a deferred requirement names no ticket. Also the right place to link the ticket that a planned requirement will be built under."
50
+ "description": "Issue or ticket references for outstanding work — a URL, an owner/repo#123 shorthand, or a tracker key. Free-form and NOT resolved by verify, which does not reach the network; nothing here is checked to exist. Its job is to stop a deferred gap becoming invisible, so verify warns when a deferred requirement names no ticket. Also the right place to link the ticket that a planned requirement will be built under."
53
51
  },
54
52
  {
55
53
  "type": "attr",
@@ -62,10 +60,10 @@ export const REQUIREMENT_DEFINITION = {
62
60
  {
63
61
  "type": "attr",
64
62
  "subType": "string",
65
- "name": "violation",
63
+ "name": "counterexample",
66
64
  "min": 1,
67
65
  "max": 1,
68
- "description": "What breaking it looks like, in one sentence. A requirement MUST be violable: 'every entity has a uuid primary key' is (point at one with a composite string key); 'things are persisted' is not, and is a description rather than a requirement."
66
+ "description": "What breaking it looks like, in one sentence — a STATIC falsifiability test, authored once, never a state. A requirement MUST be violable: 'every entity has a uuid primary key' is (point at one with a composite string key); 'things are persisted' is not, and is a description rather than a requirement. Renamed from @violation in 0.24.0, which read as a status."
69
67
  },
70
68
  {
71
69
  "type": "attr",
@@ -76,23 +74,6 @@ export const REQUIREMENT_DEFINITION = {
76
74
  "max": 1,
77
75
  "description": "FQN references to the model nodes realising this requirement. Legal on level 4 (an object) and level 5 (a field, view or identity) only; an organisational level carrying it is ERR_REQUIREMENT_LINK_ABOVE_FLOOR. Many-to-many by construction — several requirements may name the same node."
78
76
  },
79
- {
80
- "type": "attr",
81
- "subType": "string",
82
- "name": "verifiedBy",
83
- "isArray": true,
84
- "min": 0,
85
- "max": 1,
86
- "description": "OPTIONAL — omit unless you have opened the test and read what it asserts. Names of tests that assert the behaviour. verify checks each name EXISTS and is not skipped; it never runs them, and it cannot tell whether the named test verifies this requirement — any occurrence in the test corpus satisfies it."
87
- },
88
- {
89
- "type": "attr",
90
- "subType": "string",
91
- "name": "supersededBy",
92
- "min": 0,
93
- "max": 1,
94
- "description": "The requirement that replaced this one. Expected on status=superseded."
95
- },
96
77
  {
97
78
  "type": "requirement",
98
79
  "subType": "*",
@@ -126,9 +107,7 @@ export const REQUIREMENT_DEFINITION = {
126
107
  "allowedValues": [
127
108
  "planned",
128
109
  "live",
129
- "partial",
130
- "abandoned",
131
- "superseded"
110
+ "partial"
132
111
  ],
133
112
  "description": "As on requirement.functional. A live or partial architectural requirement claimed by NOTHING is an error: a policy declared and applied to nothing. A planned one is exempt from that check — it is not applied yet by definition."
134
113
  },
@@ -164,10 +143,10 @@ export const REQUIREMENT_DEFINITION = {
164
143
  {
165
144
  "type": "attr",
166
145
  "subType": "string",
167
- "name": "violation",
146
+ "name": "counterexample",
168
147
  "min": 1,
169
148
  "max": 1,
170
- "description": "What breaking it looks like — the node that would contradict it. This is what makes universality checkable."
149
+ "description": "What breaking it looks like — the node that would contradict it. A STATIC falsifiability test, not a state. This is what makes universality checkable. Renamed from @violation in 0.24.0, which read as a status."
171
150
  },
172
151
  {
173
152
  "type": "attr",
@@ -178,23 +157,6 @@ export const REQUIREMENT_DEFINITION = {
178
157
  "max": 1,
179
158
  "description": "FQN references to the nodes applying this policy. High fan-out is normal and expected: one uuid-primary-key requirement is claimed by every entity."
180
159
  },
181
- {
182
- "type": "attr",
183
- "subType": "string",
184
- "name": "verifiedBy",
185
- "isArray": true,
186
- "min": 0,
187
- "max": 1,
188
- "description": "OPTIONAL — omit unless you have opened the test and read what it asserts. Names of tests that assert the policy holds. verify checks each name EXISTS and is not skipped; it never runs them, and it cannot tell whether the named test verifies this requirement — any occurrence in the test corpus satisfies it."
189
- },
190
- {
191
- "type": "attr",
192
- "subType": "string",
193
- "name": "supersededBy",
194
- "min": 0,
195
- "max": 1,
196
- "description": "The requirement that replaced this one. Expected on status=superseded."
197
- },
198
160
  {
199
161
  "type": "requirement",
200
162
  "subType": "*",
@@ -1 +1 @@
1
- {"version":3,"file":"requirement-definition.embedded.js","sourceRoot":"","sources":["../../../src/core/requirement/requirement-definition.embedded.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"requirement-definition.embedded.js","sourceRoot":"","sources":["../../../src/core/requirement/requirement-definition.embedded.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { MetaData } from "../../shared/meta-data.js";
2
+ /**
3
+ * Resolve the owner segment of an `@implementedBy` reference to the node it names.
4
+ *
5
+ * OBJECTS FIRST, through the loader's own resolver, so package-local binding stays the
6
+ * ADR-0042 contract and never a parallel name scan (#228).
7
+ *
8
+ * Then ROOT-LEVEL NON-OBJECT nodes — `template.prompt` and its siblings today. The
9
+ * attribute is documented as naming "the model nodes realising this requirement", and a
10
+ * declared prompt is one: it is the durable artifact a capability like "the game master
11
+ * is told what the party can see" actually lives in. Resolving only objects meant the
12
+ * prompt estate — the thing whose retirement is hardest to see in a model, since a
13
+ * removed prompt leaves no table behind — was the one part of a model that could not
14
+ * carry a status. So L4 means "a declared top-level model node", not "an object".
15
+ *
16
+ * Requirements themselves are excluded: hierarchy is nesting, and a requirement claiming
17
+ * a requirement would be a second, contradictory parent mechanism.
18
+ */
19
+ export declare function resolveClaimTarget(root: MetaData, owner: string, referrerPkg: string): MetaData | undefined;
20
+ /** Walk dotted member segments by CHILD NAME from an object node.
21
+ *
22
+ * Exported alongside `resolveClaimTarget` because the CLI's coverage pass needs the
23
+ * OWNER node's `resolutionKey()` while only using member resolution as a yes/no
24
+ * validity test. Composing them into `resolveClaim` there would key coverage on the
25
+ * member instead of the object — a silent behaviour change. */
26
+ export declare function resolveMember(obj: MetaData, path: string[]): MetaData | undefined;
27
+ /**
28
+ * Resolve a full `@implementedBy` reference — owner segment plus any dotted member
29
+ * segments — to the node it names, or undefined when it does not resolve.
30
+ *
31
+ * Resolution walks to the FULL depth of the reference, so `Council.slug.display`
32
+ * yields the view node rather than stopping at the field. FR-038's fan-out keys on
33
+ * the resolved node's type, and a resolver that stopped short would silently collapse
34
+ * two concerns into one.
35
+ */
36
+ export declare function resolveClaim(root: MetaData, ref: string, referrerPkg: string): MetaData | undefined;
37
+ //# sourceMappingURL=resolve-claim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-claim.d.ts","sourceRoot":"","sources":["../../../src/core/requirement/resolve-claim.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,QAAQ,GAAG,SAAS,CA6BtB;AAED;;;;;gEAKgE;AAChE,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,GAAG,SAAS,CAOjF;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,GAClB,QAAQ,GAAG,SAAS,CAKtB"}
@@ -0,0 +1,83 @@
1
+ // resolveClaim — resolve an `@implementedBy` reference to the node it names.
2
+ //
3
+ // Moved here from the CLI's requirement-check so `codegen-ts` can share ONE
4
+ // resolver (FR-038): the requirement-test generator has to know each claimed
5
+ // node's TYPE to fan out per concern, and a second implementation would fork the
6
+ // ADR-0042 package-local binding contract the loader already owns.
7
+ import { TYPE_OBJECT, TYPE_REQUIREMENT } from "../../shared/base-types.js";
8
+ import { PACKAGE_SEPARATOR } from "../../shared/structural.js";
9
+ import { resolveObjectRef } from "../../naming-refs.js";
10
+ /**
11
+ * Resolve the owner segment of an `@implementedBy` reference to the node it names.
12
+ *
13
+ * OBJECTS FIRST, through the loader's own resolver, so package-local binding stays the
14
+ * ADR-0042 contract and never a parallel name scan (#228).
15
+ *
16
+ * Then ROOT-LEVEL NON-OBJECT nodes — `template.prompt` and its siblings today. The
17
+ * attribute is documented as naming "the model nodes realising this requirement", and a
18
+ * declared prompt is one: it is the durable artifact a capability like "the game master
19
+ * is told what the party can see" actually lives in. Resolving only objects meant the
20
+ * prompt estate — the thing whose retirement is hardest to see in a model, since a
21
+ * removed prompt leaves no table behind — was the one part of a model that could not
22
+ * carry a status. So L4 means "a declared top-level model node", not "an object".
23
+ *
24
+ * Requirements themselves are excluded: hierarchy is nesting, and a requirement claiming
25
+ * a requirement would be a second, contradictory parent mechanism.
26
+ */
27
+ export function resolveClaimTarget(root, owner, referrerPkg) {
28
+ const { node } = resolveObjectRef(root, owner, referrerPkg);
29
+ if (node !== undefined)
30
+ return node;
31
+ const candidates = root
32
+ .children()
33
+ .filter((c) => c.type !== TYPE_OBJECT && c.type !== TYPE_REQUIREMENT);
34
+ // A fully-qualified reference binds exactly, like every other FQN in the model.
35
+ if (owner.includes(PACKAGE_SEPARATOR)) {
36
+ return candidates.find((c) => c.resolutionKey() === owner);
37
+ }
38
+ // A bare reference prefers the referrer's own package, then a root-level node of that
39
+ // bare name. An ambiguous bare name binds NOTHING — same fail-closed rule objects use,
40
+ // because silently picking one of two same-named nodes is how a claim ends up pointing
41
+ // at the wrong thing without anyone noticing.
42
+ const local = referrerPkg === ""
43
+ ? []
44
+ : candidates.filter((c) => c.resolutionKey() === `${referrerPkg}${PACKAGE_SEPARATOR}${owner}`);
45
+ if (local.length === 1)
46
+ return local[0];
47
+ // Root-level (unpackaged) only, matching resolveObjectRef's own bare fallback. A bare
48
+ // ref must not reach into an arbitrary package just because the name is unique there.
49
+ const bare = candidates.filter((c) => c.name === owner && c.resolutionKey() === owner);
50
+ return bare.length === 1 ? bare[0] : undefined;
51
+ }
52
+ /** Walk dotted member segments by CHILD NAME from an object node.
53
+ *
54
+ * Exported alongside `resolveClaimTarget` because the CLI's coverage pass needs the
55
+ * OWNER node's `resolutionKey()` while only using member resolution as a yes/no
56
+ * validity test. Composing them into `resolveClaim` there would key coverage on the
57
+ * member instead of the object — a silent behaviour change. */
58
+ export function resolveMember(obj, path) {
59
+ let cur = obj;
60
+ for (const seg of path) {
61
+ if (cur === undefined)
62
+ return undefined;
63
+ cur = cur.children().find((c) => c.name === seg);
64
+ }
65
+ return cur;
66
+ }
67
+ /**
68
+ * Resolve a full `@implementedBy` reference — owner segment plus any dotted member
69
+ * segments — to the node it names, or undefined when it does not resolve.
70
+ *
71
+ * Resolution walks to the FULL depth of the reference, so `Council.slug.display`
72
+ * yields the view node rather than stopping at the field. FR-038's fan-out keys on
73
+ * the resolved node's type, and a resolver that stopped short would silently collapse
74
+ * two concerns into one.
75
+ */
76
+ export function resolveClaim(root, ref, referrerPkg) {
77
+ const segs = ref.split(".");
78
+ const owner = resolveClaimTarget(root, segs[0] ?? "", referrerPkg);
79
+ if (owner === undefined || segs.length === 1)
80
+ return owner;
81
+ return resolveMember(owner, segs.slice(1));
82
+ }
83
+ //# sourceMappingURL=resolve-claim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-claim.js","sourceRoot":"","sources":["../../../src/core/requirement/resolve-claim.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { RewriteOpts, RewriteResult } from "../vocabulary-rewrite.js";
2
+ /**
3
+ * A rewrite result that can also report "I could not read this file".
4
+ *
5
+ * A YAML document that does not parse yields no changes and no refusals, which is
6
+ * indistinguishable from a clean one — and a fixer that reports a file it could not open as
7
+ * clean is the exact defect this arm was written to remove (#339). The flag makes the caller
8
+ * say so out loud.
9
+ */
10
+ export interface YamlRewriteResult extends RewriteResult {
11
+ readonly unparseable: boolean;
12
+ }
13
+ /**
14
+ * Rewrite retired vocabulary in one raw YAML metadata document.
15
+ *
16
+ * Pure: no filesystem, no loader, no registry. Mirrors `rewriteDocument`'s contract exactly —
17
+ * same result shape, same scoping rule, same refusal policy — so `meta upgrade` reports a
18
+ * YAML estate and a JSON estate identically.
19
+ */
20
+ export declare function rewriteYamlDocument(source: string, opts?: RewriteOpts): YamlRewriteResult;
21
+ //# sourceMappingURL=vocabulary-rewrite-yaml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vocabulary-rewrite-yaml.d.ts","sourceRoot":"","sources":["../../src/core/vocabulary-rewrite-yaml.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAiC,WAAW,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE1G;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAqHD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,iBAAiB,CA8F7F"}