@primmel/primmel 1.12.0 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/dist/src/check-rules.d.ts.map +1 -1
  2. package/dist/src/check-rules.js +115 -0
  3. package/dist/src/check-rules.js.map +1 -1
  4. package/dist/src/check.d.ts.map +1 -1
  5. package/dist/src/check.js +896 -0
  6. package/dist/src/check.js.map +1 -1
  7. package/dist/src/model-diff.d.ts.map +1 -1
  8. package/dist/src/model-diff.js +40 -0
  9. package/dist/src/model-diff.js.map +1 -1
  10. package/dist/src/ser-des/config/applicationDeclaration.d.ts +5 -0
  11. package/dist/src/ser-des/config/applicationDeclaration.d.ts.map +1 -0
  12. package/dist/src/ser-des/config/applicationDeclaration.js +102 -0
  13. package/dist/src/ser-des/config/applicationDeclaration.js.map +1 -0
  14. package/dist/src/ser-des/config/aspect.d.ts +5 -0
  15. package/dist/src/ser-des/config/aspect.d.ts.map +1 -0
  16. package/dist/src/ser-des/config/aspect.js +128 -0
  17. package/dist/src/ser-des/config/aspect.js.map +1 -0
  18. package/dist/src/ser-des/config/calculation.d.ts.map +1 -1
  19. package/dist/src/ser-des/config/calculation.js +134 -18
  20. package/dist/src/ser-des/config/calculation.js.map +1 -1
  21. package/dist/src/ser-des/config/calculationContext.d.ts +5 -0
  22. package/dist/src/ser-des/config/calculationContext.d.ts.map +1 -0
  23. package/dist/src/ser-des/config/calculationContext.js +62 -0
  24. package/dist/src/ser-des/config/calculationContext.js.map +1 -0
  25. package/dist/src/ser-des/config/certificateTemplate.d.ts +5 -0
  26. package/dist/src/ser-des/config/certificateTemplate.d.ts.map +1 -0
  27. package/dist/src/ser-des/config/certificateTemplate.js +195 -0
  28. package/dist/src/ser-des/config/certificateTemplate.js.map +1 -0
  29. package/dist/src/ser-des/config/commonTestCondition.d.ts +5 -0
  30. package/dist/src/ser-des/config/commonTestCondition.d.ts.map +1 -0
  31. package/dist/src/ser-des/config/commonTestCondition.js +75 -0
  32. package/dist/src/ser-des/config/commonTestCondition.js.map +1 -0
  33. package/dist/src/ser-des/config/evaluationDimension.d.ts +5 -0
  34. package/dist/src/ser-des/config/evaluationDimension.d.ts.map +1 -0
  35. package/dist/src/ser-des/config/evaluationDimension.js +128 -0
  36. package/dist/src/ser-des/config/evaluationDimension.js.map +1 -0
  37. package/dist/src/ser-des/config/evaluationProfile.d.ts +5 -0
  38. package/dist/src/ser-des/config/evaluationProfile.d.ts.map +1 -0
  39. package/dist/src/ser-des/config/evaluationProfile.js +61 -0
  40. package/dist/src/ser-des/config/evaluationProfile.js.map +1 -0
  41. package/dist/src/ser-des/config/formulaNote.d.ts +5 -0
  42. package/dist/src/ser-des/config/formulaNote.d.ts.map +1 -0
  43. package/dist/src/ser-des/config/formulaNote.js +66 -0
  44. package/dist/src/ser-des/config/formulaNote.js.map +1 -0
  45. package/dist/src/ser-des/config/identitySlot.d.ts +5 -0
  46. package/dist/src/ser-des/config/identitySlot.d.ts.map +1 -0
  47. package/dist/src/ser-des/config/identitySlot.js +120 -0
  48. package/dist/src/ser-des/config/identitySlot.js.map +1 -0
  49. package/dist/src/ser-des/config/index.d.ts.map +1 -1
  50. package/dist/src/ser-des/config/index.js +200 -0
  51. package/dist/src/ser-des/config/index.js.map +1 -1
  52. package/dist/src/ser-des/config/partAnnex.d.ts +5 -0
  53. package/dist/src/ser-des/config/partAnnex.d.ts.map +1 -0
  54. package/dist/src/ser-des/config/partAnnex.js +91 -0
  55. package/dist/src/ser-des/config/partAnnex.js.map +1 -0
  56. package/dist/src/ser-des/config/promiseSet.d.ts +5 -0
  57. package/dist/src/ser-des/config/promiseSet.d.ts.map +1 -0
  58. package/dist/src/ser-des/config/promiseSet.js +46 -0
  59. package/dist/src/ser-des/config/promiseSet.js.map +1 -0
  60. package/dist/src/ser-des/config/selectionRules.d.ts +9 -0
  61. package/dist/src/ser-des/config/selectionRules.d.ts.map +1 -0
  62. package/dist/src/ser-des/config/selectionRules.js +372 -0
  63. package/dist/src/ser-des/config/selectionRules.js.map +1 -0
  64. package/dist/src/ser-des/config/storyline.d.ts +7 -0
  65. package/dist/src/ser-des/config/storyline.d.ts.map +1 -0
  66. package/dist/src/ser-des/config/storyline.js +264 -0
  67. package/dist/src/ser-des/config/storyline.js.map +1 -0
  68. package/dist/src/ser-des/config/subject.d.ts +18 -1
  69. package/dist/src/ser-des/config/subject.d.ts.map +1 -1
  70. package/dist/src/ser-des/config/subject.js +270 -61
  71. package/dist/src/ser-des/config/subject.js.map +1 -1
  72. package/dist/src/ser-des/config/testReport.d.ts +7 -0
  73. package/dist/src/ser-des/config/testReport.d.ts.map +1 -0
  74. package/dist/src/ser-des/config/testReport.js +322 -0
  75. package/dist/src/ser-des/config/testReport.js.map +1 -0
  76. package/dist/src/ser-des/config/verificationPathway.d.ts +5 -0
  77. package/dist/src/ser-des/config/verificationPathway.d.ts.map +1 -0
  78. package/dist/src/ser-des/config/verificationPathway.js +361 -0
  79. package/dist/src/ser-des/config/verificationPathway.js.map +1 -0
  80. package/dist/src/ser-des/config/workflowConfig.d.ts +5 -0
  81. package/dist/src/ser-des/config/workflowConfig.d.ts.map +1 -0
  82. package/dist/src/ser-des/config/workflowConfig.js +129 -0
  83. package/dist/src/ser-des/config/workflowConfig.js.map +1 -0
  84. package/dist/src/ser-des/package.d.ts +10 -0
  85. package/dist/src/ser-des/package.d.ts.map +1 -1
  86. package/dist/src/ser-des/package.js +166 -12
  87. package/dist/src/ser-des/package.js.map +1 -1
  88. package/dist/src/ser-des/parse.d.ts.map +1 -1
  89. package/dist/src/ser-des/parse.js +29 -0
  90. package/dist/src/ser-des/parse.js.map +1 -1
  91. package/dist/src/ser-des/types.d.ts +37 -0
  92. package/dist/src/ser-des/types.d.ts.map +1 -1
  93. package/dist/src/types/ApplicationDeclaration.d.ts +23 -0
  94. package/dist/src/types/ApplicationDeclaration.d.ts.map +1 -0
  95. package/dist/src/types/ApplicationDeclaration.js +32 -0
  96. package/dist/src/types/ApplicationDeclaration.js.map +1 -0
  97. package/dist/src/types/Aspect.d.ts +30 -0
  98. package/dist/src/types/Aspect.d.ts.map +1 -0
  99. package/dist/src/types/Aspect.js +41 -0
  100. package/dist/src/types/Aspect.js.map +1 -0
  101. package/dist/src/types/Calculation.d.ts +35 -0
  102. package/dist/src/types/Calculation.d.ts.map +1 -1
  103. package/dist/src/types/CalculationContext.d.ts +17 -0
  104. package/dist/src/types/CalculationContext.d.ts.map +1 -0
  105. package/dist/src/types/CalculationContext.js +34 -0
  106. package/dist/src/types/CalculationContext.js.map +1 -0
  107. package/dist/src/types/CertificateTemplate.d.ts +46 -0
  108. package/dist/src/types/CertificateTemplate.d.ts.map +1 -0
  109. package/dist/src/types/CertificateTemplate.js +46 -0
  110. package/dist/src/types/CertificateTemplate.js.map +1 -0
  111. package/dist/src/types/CommonTestCondition.d.ts +15 -0
  112. package/dist/src/types/CommonTestCondition.d.ts.map +1 -0
  113. package/dist/src/types/CommonTestCondition.js +22 -0
  114. package/dist/src/types/CommonTestCondition.js.map +1 -0
  115. package/dist/src/types/EvaluationDimension.d.ts +32 -0
  116. package/dist/src/types/EvaluationDimension.d.ts.map +1 -0
  117. package/dist/src/types/EvaluationDimension.js +38 -0
  118. package/dist/src/types/EvaluationDimension.js.map +1 -0
  119. package/dist/src/types/EvaluationProfile.d.ts +10 -0
  120. package/dist/src/types/EvaluationProfile.d.ts.map +1 -0
  121. package/dist/src/types/EvaluationProfile.js +25 -0
  122. package/dist/src/types/EvaluationProfile.js.map +1 -0
  123. package/dist/src/types/IdentitySlot.d.ts +24 -0
  124. package/dist/src/types/IdentitySlot.d.ts.map +1 -0
  125. package/dist/src/types/IdentitySlot.js +34 -0
  126. package/dist/src/types/IdentitySlot.js.map +1 -0
  127. package/dist/src/types/PartAnnex.d.ts +18 -0
  128. package/dist/src/types/PartAnnex.d.ts.map +1 -0
  129. package/dist/src/types/PartAnnex.js +29 -0
  130. package/dist/src/types/PartAnnex.js.map +1 -0
  131. package/dist/src/types/PromiseSet.d.ts +8 -0
  132. package/dist/src/types/PromiseSet.d.ts.map +1 -0
  133. package/dist/src/types/PromiseSet.js +35 -0
  134. package/dist/src/types/PromiseSet.js.map +1 -0
  135. package/dist/src/types/SelectionRules.d.ts +73 -0
  136. package/dist/src/types/SelectionRules.d.ts.map +1 -0
  137. package/dist/src/types/SelectionRules.js +55 -0
  138. package/dist/src/types/SelectionRules.js.map +1 -0
  139. package/dist/src/types/Standard.d.ts +73 -0
  140. package/dist/src/types/Standard.d.ts.map +1 -1
  141. package/dist/src/types/Storyline.d.ts +62 -0
  142. package/dist/src/types/Storyline.d.ts.map +1 -0
  143. package/dist/src/types/Storyline.js +51 -0
  144. package/dist/src/types/Storyline.js.map +1 -0
  145. package/dist/src/types/Subject.d.ts +64 -1
  146. package/dist/src/types/Subject.d.ts.map +1 -1
  147. package/dist/src/types/Symbol.d.ts +17 -0
  148. package/dist/src/types/Symbol.d.ts.map +1 -1
  149. package/dist/src/types/TestReport.d.ts +71 -0
  150. package/dist/src/types/TestReport.d.ts.map +1 -0
  151. package/dist/src/types/TestReport.js +73 -0
  152. package/dist/src/types/TestReport.js.map +1 -0
  153. package/dist/src/types/VerificationPathway.d.ts +63 -0
  154. package/dist/src/types/VerificationPathway.d.ts.map +1 -0
  155. package/dist/src/types/VerificationPathway.js +56 -0
  156. package/dist/src/types/VerificationPathway.js.map +1 -0
  157. package/dist/src/types/WorkflowConfig.d.ts +34 -0
  158. package/dist/src/types/WorkflowConfig.d.ts.map +1 -0
  159. package/dist/src/types/WorkflowConfig.js +47 -0
  160. package/dist/src/types/WorkflowConfig.js.map +1 -0
  161. package/dist-browser/index.mjs +2391 -934
  162. package/dist-cli/primmel.mjs +9364 -5469
  163. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storyline.js","sourceRoot":"","sources":["../../../../src/ser-des/config/storyline.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { ParseContext } from '../types';
2
- import type { AttributeDefinition, Behavior, Capability, ClassificationDimension, ConditionSet, Instrument, Subject } from '../../types/Subject';
2
+ import type { AttributeDefinition, Behavior, Capability, ClassificationDimension, ConditionSet, Instrument, Subject, SubjectPromise } from '../../types/Subject';
3
3
  export declare function parseDimension(id: string, block: string): ClassificationDimension;
4
4
  /**
5
5
  * Serialize one classification dimension at the given indent — the one
@@ -9,6 +9,14 @@ export declare function parseDimension(id: string, block: string): Classificatio
9
9
  * present; the unified typed refs (non-provenance) follow the values.
10
10
  */
11
11
  export declare function dumpDimension(d: ClassificationDimension, indent: string): string;
12
+ /**
13
+ * Read ONE rich promise entry body (`target … level … conditions …
14
+ * statement … verified_by { … } source { … } certificate { … }`).
15
+ * Exported for the promise_set register (config/promiseSet.ts, smart
16
+ * TODO.roadmap/40 batch 3), which reuses the promise sub-grammar
17
+ * verbatim.
18
+ */
19
+ export declare function readPromiseEntry(id: string, block: string): SubjectPromise;
12
20
  /**
13
21
  * Resolve a subject's `extends` chain: merge each subject with its
14
22
  * parent from ctx.subjects, recursively when the parent itself extends.
@@ -21,6 +29,15 @@ export declare function dumpDimension(d: ClassificationDimension, indent: string
21
29
  * always terminates.
22
30
  */
23
31
  export declare function resolveSubject(ctx: ParseContext, item: Subject): Subject;
32
+ /**
33
+ * Dump ONE rich promise entry at the given indent — shared by
34
+ * dumpSubjectPromises (is.promises) and the promise_set register
35
+ * (config/promiseSet.ts, smart TODO.roadmap/40 batch 3), which prefixes
36
+ * its entries with the `promise` keyword. Facet order is the byte
37
+ * contract: target, level, conditions, statement, verified_by, source,
38
+ * certificate.
39
+ */
40
+ export declare function dumpPromiseEntry(p: SubjectPromise, indent: string, keyword?: string): string;
24
41
  export declare const instrumentConstruct: {
25
42
  readonly keyword: "instrument";
26
43
  readonly field: "instruments";
@@ -1 +1 @@
1
- {"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../../../../src/ser-des/config/subject.ts"],"names":[],"mappings":"AA0IA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EACV,mBAAmB,EACnB,QAAQ,EACR,UAAU,EACV,uBAAuB,EAEvB,YAAY,EAEZ,UAAU,EAOV,OAAO,EAIR,MAAM,qBAAqB,CAAC;AAsU7B,wBAAgB,cAAc,CAC5B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,GACZ,uBAAuB,CAuDzB;AA+ED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EAAE,uBAAuB,EAC1B,MAAM,EAAE,MAAM,GACb,MAAM,CAuER;AAg1CD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAcxE;AAqPD,eAAO,MAAM,mBAAmB;;;;;0BA7iDO,UAAU,KAAG,MAAM;CAmjDhD,CAAC;AAEX,eAAO,MAAM,4BAA4B;;;;;uBAzwCI,mBAAmB,KAAG,MAAM;CA+wC/D,CAAC;AAEX,eAAO,MAAM,mBAAmB;;;;;uBAloCI,UAAU,KAAG,MAAM;CAwoC7C,CAAC;AAEX,eAAO,MAAM,iBAAiB;;;;;uBApjCI,QAAQ,KAAG,MAAM;CA0jCzC,CAAC;AAEX,eAAO,MAAM,qBAAqB;;;;;wBAx6BK,YAAY,KAAG,MAAM;CA86BlD,CAAC;AAEX,eAAO,MAAM,gBAAgB;;;;;sBAKA,KAAK;uBAxFD,OAAO,KAAG,MAAM;CA0FvC,CAAC"}
1
+ {"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../../../../src/ser-des/config/subject.ts"],"names":[],"mappings":"AA0IA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EACV,mBAAmB,EACnB,QAAQ,EACR,UAAU,EACV,uBAAuB,EAEvB,YAAY,EAEZ,UAAU,EASV,OAAO,EAEP,cAAc,EAEf,MAAM,qBAAqB,CAAC;AAsU7B,wBAAgB,cAAc,CAC5B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,GACZ,uBAAuB,CAuDzB;AA+ED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EAAE,uBAAuB,EAC1B,MAAM,EAAE,MAAM,GACb,MAAM,CAuER;AA4tCD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CA0C1E;AA+ND;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAcxE;AA6HD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,cAAc,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,SAAK,GACX,MAAM,CAsBR;AA8ID,eAAO,MAAM,mBAAmB;;;;;0BAjwDO,UAAU,KAAG,MAAM;CAuwDhD,CAAC;AAEX,eAAO,MAAM,4BAA4B;;;;;uBAx4CI,mBAAmB,KAAG,MAAM;CA84C/D,CAAC;AAEX,eAAO,MAAM,mBAAmB;;;;;uBA9vCI,UAAU,KAAG,MAAM;CAowC7C,CAAC;AAEX,eAAO,MAAM,iBAAiB;;;;;uBAhrCI,QAAQ,KAAG,MAAM;CAsrCzC,CAAC;AAEX,eAAO,MAAM,qBAAqB;;;;;wBApiCK,YAAY,KAAG,MAAM;CA0iClD,CAAC;AAEX,eAAO,MAAM,gBAAgB;;;;;sBAKA,KAAK;uBAxFD,OAAO,KAAG,MAAM;CA0FvC,CAAC"}
@@ -103,7 +103,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
103
103
  exports.subjectConstruct = exports.conditionSetConstruct = exports.behaviorConstruct = exports.capabilityConstruct = exports.attributeDefinitionConstruct = exports.instrumentConstruct = void 0;
104
104
  exports.parseDimension = parseDimension;
105
105
  exports.dumpDimension = dumpDimension;
106
+ exports.readPromiseEntry = readPromiseEntry;
106
107
  exports.resolveSubject = resolveSubject;
108
+ exports.dumpPromiseEntry = dumpPromiseEntry;
107
109
  const tokenize_1 = require("../tokenize");
108
110
  const tokenize_2 = require("../tokenize");
109
111
  const parse_block_1 = require("../parse-block");
@@ -925,6 +927,92 @@ const dumpInstrument = function (inst) {
925
927
  return out;
926
928
  };
927
929
  // ── attribute_definition ─────────────────────────────────────────────
930
+ /**
931
+ * The `pair_list { … }` block (smart TODO.roadmap/40 batch 4): key /
932
+ * value / key_dimension scalar facets plus the repeatable two-token
933
+ * `component <id> { … }` entries (the segregation-block idiom — the
934
+ * block claims its sub-tokens manually).
935
+ */
936
+ function parsePairList(block) {
937
+ const decl = {
938
+ key: '',
939
+ value: '',
940
+ keyDimension: '',
941
+ components: [],
942
+ };
943
+ const t = (0, tokenize_1.default)(block);
944
+ let i = 0;
945
+ while (i < t.length) {
946
+ const cmd = t[i++];
947
+ if (i > t.length) {
948
+ break;
949
+ }
950
+ if (cmd === 'key') {
951
+ decl.key = (0, tokenize_2.stripWrapping)(t[i++]);
952
+ }
953
+ else if (cmd === 'value') {
954
+ decl.value = (0, tokenize_2.stripWrapping)(t[i++]);
955
+ }
956
+ else if (cmd === 'key_dimension') {
957
+ decl.keyDimension = (0, tokenize_2.stripWrapping)(t[i++]);
958
+ }
959
+ else if (cmd === 'component') {
960
+ const cid = (0, tokenize_2.stripWrapping)(t[i++]);
961
+ const component = { id: cid, name: '', source: null };
962
+ if (i < t.length && t[i].startsWith('{')) {
963
+ const et = (0, tokenize_1.default)((0, tokenize_2.unwrapBlock)(t[i++]));
964
+ let j = 0;
965
+ while (j < et.length) {
966
+ const ec = et[j++];
967
+ if (j >= et.length) {
968
+ break;
969
+ }
970
+ if (ec === 'name') {
971
+ component.name = (0, tokenize_2.stripWrapping)(et[j++]);
972
+ }
973
+ else if (ec === 'source') {
974
+ component.source = (0, field_parser_1.readSource)((0, tokenize_2.unwrapBlock)(et[j++]));
975
+ }
976
+ else {
977
+ (0, tokenize_2.unwrapBlock)(et[j++]);
978
+ }
979
+ }
980
+ }
981
+ decl.components.push(component);
982
+ }
983
+ else {
984
+ i = (0, parse_block_1.skipUnknownValue)(t, i, cmd);
985
+ }
986
+ }
987
+ return decl;
988
+ }
989
+ function dumpPairList(decl) {
990
+ let out = ' pair_list {\n';
991
+ out += ' key ' + (0, field_parser_1.dumpBareSafe)(decl.key) + '\n';
992
+ out += ' value ' + (0, field_parser_1.dumpBareSafe)(decl.value) + '\n';
993
+ if (decl.keyDimension) {
994
+ out += ' key_dimension ' + (0, field_parser_1.dumpBareSafe)(decl.keyDimension) + '\n';
995
+ }
996
+ for (const c of decl.components) {
997
+ out += ' component ' + (0, field_parser_1.dumpBareSafe)(c.id) + ' {\n';
998
+ if (c.name) {
999
+ out += ' name "' + (0, tokenize_2.escapeString)(c.name) + '"\n';
1000
+ }
1001
+ if (c.source && (c.source.doc || c.source.clause)) {
1002
+ out += ' source {\n';
1003
+ if (c.source.doc) {
1004
+ out += ' doc "' + (0, tokenize_2.escapeString)(c.source.doc) + '"\n';
1005
+ }
1006
+ if (c.source.clause) {
1007
+ out += ' clause "' + (0, tokenize_2.escapeString)(c.source.clause) + '"\n';
1008
+ }
1009
+ out += ' }\n';
1010
+ }
1011
+ out += ' }\n';
1012
+ }
1013
+ out += ' }\n';
1014
+ return out;
1015
+ }
928
1016
  const parseAttributeDefinition = function (id, data) {
929
1017
  const result = {
930
1018
  id,
@@ -978,6 +1066,10 @@ const parseAttributeDefinition = function (id, data) {
978
1066
  else if (cmd === 'value_type') {
979
1067
  result.valueType = (0, tokenize_2.stripWrapping)(t[i++]);
980
1068
  }
1069
+ else if (cmd === 'pair_list') {
1070
+ // The pair-list block (smart TODO.roadmap/40 batch 4).
1071
+ result.pairList = parsePairList((0, tokenize_2.unwrapBlock)(t[i++]));
1072
+ }
981
1073
  else if (cmd === 'origin') {
982
1074
  result.origin = (0, tokenize_2.stripWrapping)(t[i++]);
983
1075
  }
@@ -1066,6 +1158,9 @@ const dumpAttributeDefinition = function (a) {
1066
1158
  if (a.valueType) {
1067
1159
  out += ' value_type ' + a.valueType + '\n';
1068
1160
  }
1161
+ if (a.pairList) {
1162
+ out += dumpPairList(a.pairList);
1163
+ }
1069
1164
  if (a.origin) {
1070
1165
  out += ' origin ' + a.origin + '\n';
1071
1166
  }
@@ -1733,7 +1828,7 @@ function readPromiseLevel(t, i) {
1733
1828
  /**
1734
1829
  * Read is.promises entries (TODO.roadmap/08). Two entry forms:
1735
1830
  * - rich: `<id> { target … level … conditions … statement …
1736
- * verified_by { … } source { … } }`
1831
+ * verified_by { … } source { … } certificate { … } }`
1737
1832
  * - shorthand: a quoted phrase or a bare token NOT followed by a block —
1738
1833
  * the legacy string-list form, parsed as a statement-only promise
1739
1834
  * (empty id/target/conditions; the linter's C43 flags it as
@@ -1757,55 +1852,121 @@ function readPromises(block) {
1757
1852
  statement: (0, tokenize_2.stripWrapping)(tok),
1758
1853
  verifiedBy: [],
1759
1854
  source: null,
1855
+ certificate: null,
1760
1856
  });
1761
1857
  continue;
1762
1858
  }
1763
- const p = {
1764
- id: (0, field_parser_1.stripColon)(tok),
1765
- target: '',
1766
- level: null,
1767
- conditions: '',
1768
- statement: '',
1769
- verifiedBy: [],
1770
- source: null,
1771
- };
1772
- const inner = (0, tokenize_1.default)((0, tokenize_2.unwrapBlock)(t[i++]));
1773
- let j = 0;
1774
- while (j < inner.length) {
1775
- const cmd = inner[j++];
1776
- if (j >= inner.length) {
1777
- break;
1778
- }
1779
- if (cmd === 'target') {
1780
- p.target = (0, tokenize_2.stripWrapping)(inner[j++]);
1781
- }
1782
- else if (cmd === 'level') {
1783
- const read = readPromiseLevel(inner, j);
1784
- p.level = read.level;
1785
- j = read.next;
1786
- }
1787
- else if (cmd === 'conditions') {
1788
- // ocl{…} expressions reassemble across whitespace (readValueToken).
1789
- const read = (0, field_parser_1.readValueToken)(inner, j);
1790
- p.conditions = (0, tokenize_2.stripWrapping)(read.text);
1791
- j = read.next;
1792
- }
1793
- else if (cmd === 'statement') {
1794
- p.statement = (0, tokenize_2.stripWrapping)(inner[j++]);
1795
- }
1796
- else if (cmd === 'verified_by') {
1797
- p.verifiedBy = readIdList(inner[j++]);
1798
- }
1799
- else if (cmd === 'source') {
1800
- p.source = (0, field_parser_1.readSource)((0, tokenize_2.unwrapBlock)(inner[j++]));
1801
- }
1802
- else {
1803
- (0, tokenize_2.unwrapBlock)(inner[j++]);
1859
+ out.push(readPromiseEntry((0, field_parser_1.stripColon)(tok), (0, tokenize_2.unwrapBlock)(t[i++])));
1860
+ }
1861
+ return out;
1862
+ }
1863
+ /** The certificate print-projection obligation vocabulary (mandatory |
1864
+ * optional) — parse-enforced, the fail-closed precedent. */
1865
+ const PROMISE_CERTIFICATE_OBLIGATIONS = ['mandatory', 'optional'];
1866
+ /** Read a promise's `certificate { … }` block (smart TODO.roadmap/40
1867
+ * batch 3): the content-binding XOR (attribute | attributes | dimension
1868
+ * | none — the statement row) is check-enforced (C131); the obligation
1869
+ * vocabulary is parse-enforced. */
1870
+ function readPromiseCertificate(promiseId, block) {
1871
+ const cert = {
1872
+ attribute: '',
1873
+ attributes: [],
1874
+ dimension: '',
1875
+ type: '',
1876
+ label: '',
1877
+ obligation: '',
1878
+ };
1879
+ const t = (0, tokenize_1.default)(block);
1880
+ let i = 0;
1881
+ while (i < t.length) {
1882
+ const cmd = t[i++];
1883
+ if (i > t.length) {
1884
+ break;
1885
+ }
1886
+ if (cmd === 'attribute') {
1887
+ cert.attribute = (0, tokenize_2.stripWrapping)(t[i++]);
1888
+ }
1889
+ else if (cmd === 'attributes') {
1890
+ cert.attributes = readIdList(t[i++]);
1891
+ }
1892
+ else if (cmd === 'dimension') {
1893
+ cert.dimension = (0, tokenize_2.stripWrapping)(t[i++]);
1894
+ }
1895
+ else if (cmd === 'type') {
1896
+ cert.type = (0, tokenize_2.stripWrapping)(t[i++]);
1897
+ }
1898
+ else if (cmd === 'label') {
1899
+ cert.label = (0, tokenize_2.stripWrapping)(t[i++]);
1900
+ }
1901
+ else if (cmd === 'obligation') {
1902
+ const o = (0, tokenize_2.stripWrapping)(t[i++]);
1903
+ if (!PROMISE_CERTIFICATE_OBLIGATIONS.includes(o)) {
1904
+ throw new Error(`Parsing error: promise. ID ${promiseId}: Unknown certificate obligation "${o}" (valid: ${PROMISE_CERTIFICATE_OBLIGATIONS.join(', ')})`);
1804
1905
  }
1906
+ cert.obligation = o;
1907
+ }
1908
+ else {
1909
+ (0, tokenize_2.unwrapBlock)(t[i++]);
1805
1910
  }
1806
- out.push(p);
1807
1911
  }
1808
- return out;
1912
+ return cert;
1913
+ }
1914
+ /**
1915
+ * Read ONE rich promise entry body (`target … level … conditions …
1916
+ * statement … verified_by { … } source { … } certificate { … }`).
1917
+ * Exported for the promise_set register (config/promiseSet.ts, smart
1918
+ * TODO.roadmap/40 batch 3), which reuses the promise sub-grammar
1919
+ * verbatim.
1920
+ */
1921
+ function readPromiseEntry(id, block) {
1922
+ const p = {
1923
+ id,
1924
+ target: '',
1925
+ level: null,
1926
+ conditions: '',
1927
+ statement: '',
1928
+ verifiedBy: [],
1929
+ source: null,
1930
+ certificate: null,
1931
+ };
1932
+ const inner = (0, tokenize_1.default)(block);
1933
+ let j = 0;
1934
+ while (j < inner.length) {
1935
+ const cmd = inner[j++];
1936
+ if (j >= inner.length) {
1937
+ break;
1938
+ }
1939
+ if (cmd === 'target') {
1940
+ p.target = (0, tokenize_2.stripWrapping)(inner[j++]);
1941
+ }
1942
+ else if (cmd === 'level') {
1943
+ const read = readPromiseLevel(inner, j);
1944
+ p.level = read.level;
1945
+ j = read.next;
1946
+ }
1947
+ else if (cmd === 'conditions') {
1948
+ // ocl{…} expressions reassemble across whitespace (readValueToken).
1949
+ const read = (0, field_parser_1.readValueToken)(inner, j);
1950
+ p.conditions = (0, tokenize_2.stripWrapping)(read.text);
1951
+ j = read.next;
1952
+ }
1953
+ else if (cmd === 'statement') {
1954
+ p.statement = (0, tokenize_2.stripWrapping)(inner[j++]);
1955
+ }
1956
+ else if (cmd === 'verified_by') {
1957
+ p.verifiedBy = readIdList(inner[j++]);
1958
+ }
1959
+ else if (cmd === 'source') {
1960
+ p.source = (0, field_parser_1.readSource)((0, tokenize_2.unwrapBlock)(inner[j++]));
1961
+ }
1962
+ else if (cmd === 'certificate') {
1963
+ p.certificate = readPromiseCertificate(p.id, (0, tokenize_2.unwrapBlock)(inner[j++]));
1964
+ }
1965
+ else {
1966
+ (0, tokenize_2.unwrapBlock)(inner[j++]);
1967
+ }
1968
+ }
1969
+ return p;
1809
1970
  }
1810
1971
  /** A promise carrying nothing but its prose statement (the shorthand form). */
1811
1972
  function isStatementOnlyPromise(p) {
@@ -1814,7 +1975,8 @@ function isStatementOnlyPromise(p) {
1814
1975
  !p.level &&
1815
1976
  !p.conditions &&
1816
1977
  p.verifiedBy.length === 0 &&
1817
- !p.source);
1978
+ !p.source &&
1979
+ !p.certificate);
1818
1980
  }
1819
1981
  function parseSubjectIs(block, result) {
1820
1982
  const t = (0, tokenize_1.default)(block);
@@ -2131,6 +2293,68 @@ function dumpPromiseLevel(level) {
2131
2293
  }
2132
2294
  return (0, quantity_1.dumpQuantityBlock)(level.quantity ?? { value: '' });
2133
2295
  }
2296
+ /** Dump a promise's certificate print projection (smart TODO.roadmap/40
2297
+ * batch 3) — facet order is the byte contract: attribute | attributes |
2298
+ * dimension, then type, label, obligation. */
2299
+ function dumpPromiseCertificate(cert, indent) {
2300
+ const facet = indent + ' ';
2301
+ let out = indent + 'certificate {\n';
2302
+ if (cert.attribute) {
2303
+ out += facet + 'attribute ' + (0, field_parser_1.dumpBareSafe)(cert.attribute) + '\n';
2304
+ }
2305
+ if (cert.attributes.length > 0) {
2306
+ out +=
2307
+ facet +
2308
+ 'attributes { ' +
2309
+ cert.attributes.map(field_parser_1.dumpBareSafe).join(' ') +
2310
+ ' }\n';
2311
+ }
2312
+ if (cert.dimension) {
2313
+ out += facet + 'dimension ' + (0, field_parser_1.dumpBareSafe)(cert.dimension) + '\n';
2314
+ }
2315
+ if (cert.type) {
2316
+ out += facet + 'type ' + (0, field_parser_1.dumpBareSafe)(cert.type) + '\n';
2317
+ }
2318
+ if (cert.label) {
2319
+ out += facet + 'label "' + (0, tokenize_2.escapeString)(cert.label) + '"\n';
2320
+ }
2321
+ if (cert.obligation) {
2322
+ out += facet + 'obligation ' + (0, field_parser_1.dumpBareSafe)(cert.obligation) + '\n';
2323
+ }
2324
+ out += indent + '}\n';
2325
+ return out;
2326
+ }
2327
+ /**
2328
+ * Dump ONE rich promise entry at the given indent — shared by
2329
+ * dumpSubjectPromises (is.promises) and the promise_set register
2330
+ * (config/promiseSet.ts, smart TODO.roadmap/40 batch 3), which prefixes
2331
+ * its entries with the `promise` keyword. Facet order is the byte
2332
+ * contract: target, level, conditions, statement, verified_by, source,
2333
+ * certificate.
2334
+ */
2335
+ function dumpPromiseEntry(p, indent, keyword = '') {
2336
+ const facet = indent + ' ';
2337
+ let out = indent + keyword + (0, field_parser_1.dumpBareSafe)(p.id) + ' {\n';
2338
+ if (p.target) {
2339
+ out += facet + 'target ' + (0, field_parser_1.dumpBareSafe)(p.target) + '\n';
2340
+ }
2341
+ if (p.level) {
2342
+ out += facet + 'level ' + dumpPromiseLevel(p.level) + '\n';
2343
+ }
2344
+ if (p.conditions) {
2345
+ out += facet + 'conditions ' + dumpSubjectDerivation(p.conditions) + '\n';
2346
+ }
2347
+ if (p.statement) {
2348
+ out += facet + 'statement "' + (0, tokenize_2.escapeString)(p.statement) + '"\n';
2349
+ }
2350
+ out += dumpIdList('verified_by', p.verifiedBy, facet);
2351
+ out += dumpSource('source', p.source ?? null, facet);
2352
+ if (p.certificate) {
2353
+ out += dumpPromiseCertificate(p.certificate, facet);
2354
+ }
2355
+ out += indent + '}\n';
2356
+ return out;
2357
+ }
2134
2358
  /**
2135
2359
  * Dump is.promises (TODO.roadmap/08). Byte-compat with the legacy string
2136
2360
  * list: a block of statement-only entries keeps the single-line form
@@ -2153,22 +2377,7 @@ function dumpSubjectPromises(promises) {
2153
2377
  out += ' ' + (0, field_parser_1.dumpBareSafe)(p.statement) + '\n';
2154
2378
  continue;
2155
2379
  }
2156
- out += ' ' + (0, field_parser_1.dumpBareSafe)(p.id) + ' {\n';
2157
- if (p.target) {
2158
- out += ' target ' + (0, field_parser_1.dumpBareSafe)(p.target) + '\n';
2159
- }
2160
- if (p.level) {
2161
- out += ' level ' + dumpPromiseLevel(p.level) + '\n';
2162
- }
2163
- if (p.conditions) {
2164
- out += ' conditions ' + dumpSubjectDerivation(p.conditions) + '\n';
2165
- }
2166
- if (p.statement) {
2167
- out += ' statement "' + (0, tokenize_2.escapeString)(p.statement) + '"\n';
2168
- }
2169
- out += dumpIdList('verified_by', p.verifiedBy, ' ');
2170
- out += dumpSource('source', p.source ?? null, ' ');
2171
- out += ' }\n';
2380
+ out += dumpPromiseEntry(p, ' ');
2172
2381
  }
2173
2382
  out += ' }\n';
2174
2383
  return out;