@3f-consulting/spec-controller-core 0.1.0-alpha.5 → 0.1.0-alpha.50

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 (245) hide show
  1. package/README.md +6 -4
  2. package/dist/assemble/evidenceReconciliationFromSources.d.ts +5 -40
  3. package/dist/assemble/evidenceReconciliationFromSources.d.ts.map +1 -1
  4. package/dist/assemble/evidenceReconciliationFromSources.js +31 -319
  5. package/dist/assemble/evidenceReconciliationFromSources.js.map +1 -1
  6. package/dist/assemble/renderInput.d.ts +6 -72
  7. package/dist/assemble/renderInput.d.ts.map +1 -1
  8. package/dist/assemble/renderInput.js +3 -45
  9. package/dist/assemble/renderInput.js.map +1 -1
  10. package/dist/census/evidenceObligations.d.ts +10 -46
  11. package/dist/census/evidenceObligations.d.ts.map +1 -1
  12. package/dist/census/evidenceObligations.js +15 -25
  13. package/dist/census/evidenceObligations.js.map +1 -1
  14. package/dist/domain/evidenceOrder.d.ts +3 -0
  15. package/dist/domain/evidenceOrder.d.ts.map +1 -0
  16. package/dist/domain/evidenceOrder.js +15 -0
  17. package/dist/domain/evidenceOrder.js.map +1 -0
  18. package/dist/domain/evidenceReconciliation.d.ts +16 -386
  19. package/dist/domain/evidenceReconciliation.d.ts.map +1 -1
  20. package/dist/domain/evidenceReconciliation.js +79 -375
  21. package/dist/domain/evidenceReconciliation.js.map +1 -1
  22. package/dist/domain/featureCode.d.ts +4 -0
  23. package/dist/domain/featureCode.d.ts.map +1 -0
  24. package/dist/domain/featureCode.js +12 -0
  25. package/dist/domain/featureCode.js.map +1 -0
  26. package/dist/domain/journal.d.ts +7 -392
  27. package/dist/domain/journal.d.ts.map +1 -1
  28. package/dist/domain/journal.js +6 -118
  29. package/dist/domain/journal.js.map +1 -1
  30. package/dist/domain/ledger.d.ts +4 -328
  31. package/dist/domain/ledger.d.ts.map +1 -1
  32. package/dist/domain/ledger.js +11 -317
  33. package/dist/domain/ledger.js.map +1 -1
  34. package/dist/domain/outcome.d.ts +3 -0
  35. package/dist/domain/outcome.d.ts.map +1 -0
  36. package/dist/domain/outcome.js +2 -0
  37. package/dist/domain/outcome.js.map +1 -0
  38. package/dist/domain/posting.d.ts +5 -102
  39. package/dist/domain/posting.d.ts.map +1 -1
  40. package/dist/domain/posting.js +3 -55
  41. package/dist/domain/posting.js.map +1 -1
  42. package/dist/domain/qualityCheckFault.d.ts +1 -41
  43. package/dist/domain/qualityCheckFault.d.ts.map +1 -1
  44. package/dist/domain/qualityCheckFault.js +0 -24
  45. package/dist/domain/qualityCheckFault.js.map +1 -1
  46. package/dist/domain/qualityCheckFaultMessages.d.ts +0 -35
  47. package/dist/domain/qualityCheckFaultMessages.d.ts.map +1 -1
  48. package/dist/domain/qualityCheckFaultMessages.js +0 -28
  49. package/dist/domain/qualityCheckFaultMessages.js.map +1 -1
  50. package/dist/domain/qualityCheckReconciliation.d.ts +5 -278
  51. package/dist/domain/qualityCheckReconciliation.d.ts.map +1 -1
  52. package/dist/domain/qualityCheckReconciliation.js +53 -453
  53. package/dist/domain/qualityCheckReconciliation.js.map +1 -1
  54. package/dist/domain/qualityCheckReconciliationFault.d.ts +0 -19
  55. package/dist/domain/qualityCheckReconciliationFault.d.ts.map +1 -1
  56. package/dist/domain/qualityCheckReconciliationFault.js +0 -23
  57. package/dist/domain/qualityCheckReconciliationFault.js.map +1 -1
  58. package/dist/domain/scenarioCodeError.d.ts +16 -0
  59. package/dist/domain/scenarioCodeError.d.ts.map +1 -0
  60. package/dist/domain/scenarioCodeError.js +4 -0
  61. package/dist/domain/scenarioCodeError.js.map +1 -0
  62. package/dist/domain/scenarioReconciliation.d.ts +0 -205
  63. package/dist/domain/scenarioReconciliation.d.ts.map +1 -1
  64. package/dist/domain/scenarioReconciliation.js +1 -98
  65. package/dist/domain/scenarioReconciliation.js.map +1 -1
  66. package/dist/domain/scnAllocation.d.ts +27 -0
  67. package/dist/domain/scnAllocation.d.ts.map +1 -0
  68. package/dist/domain/scnAllocation.js +33 -0
  69. package/dist/domain/scnAllocation.js.map +1 -0
  70. package/dist/domain/verdictCode.d.ts +10 -0
  71. package/dist/domain/verdictCode.d.ts.map +1 -0
  72. package/dist/domain/verdictCode.js +16 -0
  73. package/dist/domain/verdictCode.js.map +1 -0
  74. package/dist/index.d.ts +12 -38
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +6 -86
  77. package/dist/index.js.map +1 -1
  78. package/dist/internal.d.ts +3 -25
  79. package/dist/internal.d.ts.map +1 -1
  80. package/dist/internal.js +3 -93
  81. package/dist/internal.js.map +1 -1
  82. package/dist/lib/bareTerm.d.ts +0 -39
  83. package/dist/lib/bareTerm.d.ts.map +1 -1
  84. package/dist/lib/bareTerm.js +0 -39
  85. package/dist/lib/bareTerm.js.map +1 -1
  86. package/dist/lib/portablePath.d.ts.map +1 -1
  87. package/dist/lib/portablePath.js +0 -14
  88. package/dist/lib/portablePath.js.map +1 -1
  89. package/dist/lib/scnCitation.d.ts +0 -32
  90. package/dist/lib/scnCitation.d.ts.map +1 -1
  91. package/dist/lib/scnCitation.js +2 -42
  92. package/dist/lib/scnCitation.js.map +1 -1
  93. package/dist/model.d.ts +0 -23
  94. package/dist/model.d.ts.map +1 -1
  95. package/dist/model.js +0 -23
  96. package/dist/model.js.map +1 -1
  97. package/dist/parse/checkScriptsRunInCI.d.ts +3 -151
  98. package/dist/parse/checkScriptsRunInCI.d.ts.map +1 -1
  99. package/dist/parse/checkScriptsRunInCI.js +5 -143
  100. package/dist/parse/checkScriptsRunInCI.js.map +1 -1
  101. package/dist/parse/ciStepRecord.d.ts +2 -117
  102. package/dist/parse/ciStepRecord.d.ts.map +1 -1
  103. package/dist/parse/ciStepRecord.js +12 -218
  104. package/dist/parse/ciStepRecord.js.map +1 -1
  105. package/dist/parse/commandRuns.d.ts +0 -39
  106. package/dist/parse/commandRuns.d.ts.map +1 -1
  107. package/dist/parse/commandRuns.js +0 -58
  108. package/dist/parse/commandRuns.js.map +1 -1
  109. package/dist/parse/cucumber.d.ts +0 -52
  110. package/dist/parse/cucumber.d.ts.map +1 -1
  111. package/dist/parse/cucumber.js +37 -143
  112. package/dist/parse/cucumber.js.map +1 -1
  113. package/dist/parse/discoveryScope.d.ts +0 -45
  114. package/dist/parse/discoveryScope.d.ts.map +1 -1
  115. package/dist/parse/discoveryScope.js +0 -55
  116. package/dist/parse/discoveryScope.js.map +1 -1
  117. package/dist/parse/fitnessCitations.d.ts +1 -72
  118. package/dist/parse/fitnessCitations.d.ts.map +1 -1
  119. package/dist/parse/fitnessCitations.js +3 -55
  120. package/dist/parse/fitnessCitations.js.map +1 -1
  121. package/dist/parse/reconcilerSteps.d.ts +0 -46
  122. package/dist/parse/reconcilerSteps.d.ts.map +1 -1
  123. package/dist/parse/reconcilerSteps.js +0 -63
  124. package/dist/parse/reconcilerSteps.js.map +1 -1
  125. package/dist/parse/runningStaticChecks.d.ts +2 -118
  126. package/dist/parse/runningStaticChecks.d.ts.map +1 -1
  127. package/dist/parse/runningStaticChecks.js +14 -273
  128. package/dist/parse/runningStaticChecks.js.map +1 -1
  129. package/dist/parse/scenarioCodeErrors.d.ts +12 -0
  130. package/dist/parse/scenarioCodeErrors.d.ts.map +1 -0
  131. package/dist/parse/scenarioCodeErrors.js +88 -0
  132. package/dist/parse/scenarioCodeErrors.js.map +1 -0
  133. package/dist/parse/scenarios.d.ts +3 -228
  134. package/dist/parse/scenarios.d.ts.map +1 -1
  135. package/dist/parse/scenarios.js +11 -447
  136. package/dist/parse/scenarios.js.map +1 -1
  137. package/dist/parse/stepAccounting.d.ts +0 -46
  138. package/dist/parse/stepAccounting.d.ts.map +1 -1
  139. package/dist/parse/stepAccounting.js +0 -54
  140. package/dist/parse/stepAccounting.js.map +1 -1
  141. package/dist/parse/stepExclusions.d.ts +0 -47
  142. package/dist/parse/stepExclusions.d.ts.map +1 -1
  143. package/dist/parse/stepExclusions.js +0 -45
  144. package/dist/parse/stepExclusions.js.map +1 -1
  145. package/dist/parse/stepNames.d.ts +0 -27
  146. package/dist/parse/stepNames.d.ts.map +1 -1
  147. package/dist/parse/stepNames.js +0 -27
  148. package/dist/parse/stepNames.js.map +1 -1
  149. package/dist/parse/targetCorpus.d.ts +1 -78
  150. package/dist/parse/targetCorpus.d.ts.map +1 -1
  151. package/dist/parse/targetCorpus.js +4 -46
  152. package/dist/parse/targetCorpus.js.map +1 -1
  153. package/dist/parse/targetManifest.d.ts +8 -146
  154. package/dist/parse/targetManifest.d.ts.map +1 -1
  155. package/dist/parse/targetManifest.js +47 -198
  156. package/dist/parse/targetManifest.js.map +1 -1
  157. package/dist/parse/vitest.d.ts +0 -60
  158. package/dist/parse/vitest.d.ts.map +1 -1
  159. package/dist/parse/vitest.js +1 -81
  160. package/dist/parse/vitest.js.map +1 -1
  161. package/dist/provenance/provenance.d.ts +2 -110
  162. package/dist/provenance/provenance.d.ts.map +1 -1
  163. package/dist/provenance/provenance.js +2 -58
  164. package/dist/provenance/provenance.js.map +1 -1
  165. package/dist/render/behaviouralRunners.d.ts +0 -29
  166. package/dist/render/behaviouralRunners.d.ts.map +1 -1
  167. package/dist/render/behaviouralRunners.js +0 -64
  168. package/dist/render/behaviouralRunners.js.map +1 -1
  169. package/dist/render/configurationNotRead.d.ts +3 -0
  170. package/dist/render/configurationNotRead.d.ts.map +1 -0
  171. package/dist/render/configurationNotRead.js +17 -0
  172. package/dist/render/configurationNotRead.js.map +1 -0
  173. package/dist/render/discoveryScope.d.ts +0 -37
  174. package/dist/render/discoveryScope.d.ts.map +1 -1
  175. package/dist/render/discoveryScope.js +0 -37
  176. package/dist/render/discoveryScope.js.map +1 -1
  177. package/dist/render/evidenceGrid.d.ts +1 -35
  178. package/dist/render/evidenceGrid.d.ts.map +1 -1
  179. package/dist/render/evidenceGrid.js +18 -100
  180. package/dist/render/evidenceGrid.js.map +1 -1
  181. package/dist/render/excludedSteps.d.ts +0 -26
  182. package/dist/render/excludedSteps.d.ts.map +1 -1
  183. package/dist/render/excludedSteps.js +0 -29
  184. package/dist/render/excludedSteps.js.map +1 -1
  185. package/dist/render/json.d.ts +0 -11
  186. package/dist/render/json.d.ts.map +1 -1
  187. package/dist/render/json.js +0 -11
  188. package/dist/render/json.js.map +1 -1
  189. package/dist/render/markdown.d.ts +0 -54
  190. package/dist/render/markdown.d.ts.map +1 -1
  191. package/dist/render/markdown.js +88 -426
  192. package/dist/render/markdown.js.map +1 -1
  193. package/dist/render/provenanceSection.d.ts +0 -22
  194. package/dist/render/provenanceSection.d.ts.map +1 -1
  195. package/dist/render/provenanceSection.js +0 -44
  196. package/dist/render/provenanceSection.js.map +1 -1
  197. package/dist/render/reconcilerSteps.d.ts +0 -25
  198. package/dist/render/reconcilerSteps.d.ts.map +1 -1
  199. package/dist/render/reconcilerSteps.js +0 -26
  200. package/dist/render/reconcilerSteps.js.map +1 -1
  201. package/dist/render/runVerdict.d.ts +0 -38
  202. package/dist/render/runVerdict.d.ts.map +1 -1
  203. package/dist/render/runVerdict.js +68 -127
  204. package/dist/render/runVerdict.js.map +1 -1
  205. package/dist/render/scenarioCodeErrorsSection.d.ts +3 -0
  206. package/dist/render/scenarioCodeErrorsSection.d.ts.map +1 -0
  207. package/dist/render/scenarioCodeErrorsSection.js +42 -0
  208. package/dist/render/scenarioCodeErrorsSection.js.map +1 -0
  209. package/dist/render/staticChecks.d.ts +0 -20
  210. package/dist/render/staticChecks.d.ts.map +1 -1
  211. package/dist/render/staticChecks.js +1 -59
  212. package/dist/render/staticChecks.js.map +1 -1
  213. package/dist/render/stepAccounting.d.ts +0 -36
  214. package/dist/render/stepAccounting.d.ts.map +1 -1
  215. package/dist/render/stepAccounting.js +0 -44
  216. package/dist/render/stepAccounting.js.map +1 -1
  217. package/dist/render/testVolume.d.ts +0 -25
  218. package/dist/render/testVolume.d.ts.map +1 -1
  219. package/dist/render/testVolume.js +0 -32
  220. package/dist/render/testVolume.js.map +1 -1
  221. package/package.json +4 -1
  222. package/dist/domain/checkCharacteristics.d.ts +0 -88
  223. package/dist/domain/checkCharacteristics.d.ts.map +0 -1
  224. package/dist/domain/checkCharacteristics.js +0 -109
  225. package/dist/domain/checkCharacteristics.js.map +0 -1
  226. package/dist/domain/fitnessChecks.d.ts +0 -79
  227. package/dist/domain/fitnessChecks.d.ts.map +0 -1
  228. package/dist/domain/fitnessChecks.js +0 -81
  229. package/dist/domain/fitnessChecks.js.map +0 -1
  230. package/dist/lib/featureCode.d.ts +0 -21
  231. package/dist/lib/featureCode.d.ts.map +0 -1
  232. package/dist/lib/featureCode.js +0 -24
  233. package/dist/lib/featureCode.js.map +0 -1
  234. package/dist/parse/corpusCodeFaults.d.ts +0 -76
  235. package/dist/parse/corpusCodeFaults.d.ts.map +0 -1
  236. package/dist/parse/corpusCodeFaults.js +0 -121
  237. package/dist/parse/corpusCodeFaults.js.map +0 -1
  238. package/dist/parse/corpusFaults.d.ts +0 -124
  239. package/dist/parse/corpusFaults.d.ts.map +0 -1
  240. package/dist/parse/corpusFaults.js +0 -72
  241. package/dist/parse/corpusFaults.js.map +0 -1
  242. package/dist/parse/corpusGrammarFaults.d.ts +0 -71
  243. package/dist/parse/corpusGrammarFaults.d.ts.map +0 -1
  244. package/dist/parse/corpusGrammarFaults.js +0 -292
  245. package/dist/parse/corpusGrammarFaults.js.map +0 -1
@@ -1,68 +1,16 @@
1
- /**
2
- * POSTING — the rule for WHERE an entry lands. Canon gives Posting its own glossary group
3
- * (`strategy/double-entry-manifesto.md`, "### Posting") beside Journal, Ledger and Reconciling,
4
- * and this module is that group's home (module, not class), co-locating the destination type with
5
- * the pure rule that decides it.
6
- *
7
- * It sits BETWEEN the journal and the Ledger, which is why it is neither's: `domain/ledger` folds
8
- * over an ASSEMBLED Ledger, and the posting rule runs BEFORE a Ledger exists; `domain/journal`
9
- * owns the entry types and what a scenario NAMES. Posting reads both sides and yields the row an
10
- * entry lands on. (3F-2202 — extracted from the `reconcile` fold, which decided this inline.)
11
- *
12
- * ONE CLAUSE, OVER BOTH AXES (3F-2590). THE CREDIT CITES. A test carries `@SCN-XXX`; a fitness
13
- * check's run carries the `@SCN` of the fitness scenario that raises its obligation. So
14
- * one credit names one scenario and posts to EXACTLY ONE row, and a credit posting to no real
15
- * scenario is PHANTOM (its `@SCN` matches no scenario) or SUSPENSE (it cites nothing).
16
- *
17
- * THE BY-NAME ROUTE IS GONE, and with it the exception it forced. `lint` used to be the axis where
18
- * the DEBIT cited: a scenario carried `@lint=<static-check>`, the run cited nothing, and it was
19
- * matched BY NAME to EVERY row whose obligation named it. That is why the invariant had to be
20
- * written "every evidence observation posts to AT LEAST ONE account, never to none" — not *exactly*
21
- * one, which was the runtime property over-generalised. With both axes citing, EXACTLY ONE is true
22
- * universally, and it is the stronger claim: "at least one" is silent about a double-post, and a
23
- * double-post is a second copy of the same fact. `Posting` is total over the `EvidenceObservation`
24
- * union by construction: every variant yields a destination.
25
- *
26
- * POSTING IS NOT CLASSIFYING. This rule decides WHERE an entry lands, never what it reconciles TO.
27
- * A credit posts to its row whatever outcome it later earns — or none at all. The outcome rules
28
- * are the sibling concepts' (`qualityCheckReconciliation`, `scenarioReconciliation`).
29
- */
30
- // The union's OWN predicate over the `lint` quality-check — asked rather than a hand-written shape
31
- // test, so this rule classes an observation exactly as the reconciler does.
32
- // A value import, hence its own statement beside the type-only one above.
33
- import { isStaticCheckObservation } from "./journal.js";
1
+ import { isFitnessObservation } from "./journal.js";
34
2
  export function postingOf(observation, scenarioIds) {
35
- if (observation.qualityCheck === "lint") {
36
- // THE FAIL-SAFE FIRST (@SCN-LNT-026), which is the runtime arm's own arrangement one branch
37
- // down and carries its reason unchanged: broken is taken on the FLAG, before `scnId` is ever
38
- // consulted, so a proof that never ran can never be citation-routed — not to a real row, not
39
- // to a phantom one — and so can neither discharge nor fail the obligation it cites. The
40
- // observation MAY carry an `scnId` and a `checkTag`, and does; both are ignored here.
41
- //
42
- // Asked through the union's own predicate, so this rule and the reconciler class a static-check
43
- // observation the same way.
44
- if (isStaticCheckObservation(observation) && observation.broken === true) {
3
+ if (observation.qualityCheck === "fitness") {
4
+ if (isFitnessObservation(observation) && observation.broken === true) {
45
5
  return { kind: "suspense-scenario", posted: "broken" };
46
6
  }
47
- // THE CITATION ROUTE (@SCN-LNT-001) — the run carries the `@SCN` of the fitness scenario that
48
- // raises its obligation, so it posts by citation like every other credit: exactly one row,
49
- // real or invented. This is deliberately the SAME rule the runtime arm applies below, not a
50
- // static-axis variant of it — a whole-system characteristic belongs to the one scenario that
51
- // holds it, and the moment the static axis is allowed its own posting rule is the moment the
52
- // smear can be reintroduced under a different name.
53
7
  if (observation.scnId !== undefined) {
54
8
  return scenarioIds.has(observation.scnId)
55
9
  ? { kind: "scenario", scnId: observation.scnId }
56
10
  : { kind: "phantom-scenario", scnId: observation.scnId };
57
11
  }
58
- // The seam reached no `@SCN` — the handle is unregistered, or no fitness scenario carries its
59
- // check — so the run cites nothing and posts to SUSPENSE, the static analogue of an uncited
60
- // runtime credit. There is no by-name fallback to try: a check nobody named is meant to
61
- // surface, and matching it to rows by handle is exactly the smear this route replaced.
62
12
  return { kind: "suspense-scenario", posted: "no-evidence-obligation-static-check" };
63
13
  }
64
- // THE RUNTIME AXIS — the CREDIT cites, so exactly one row, resolved from the `@SCN` it carries.
65
- // The fail-safe first: broken is taken on the FLAG, before scnId is ever consulted.
66
14
  if (observation.broken === true)
67
15
  return { kind: "suspense-scenario", posted: "broken" };
68
16
  if (observation.scnId === null)
@@ -1 +1 @@
1
- {"version":3,"file":"posting.js","sourceRoot":"","sources":["../../src/domain/posting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAQH,mGAAmG;AACnG,4EAA4E;AAC5E,0EAA0E;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AA8FxD,MAAM,UAAU,SAAS,CACvB,WAAgC,EAChC,WAAgC;IAEhC,IAAI,WAAW,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;QACxC,4FAA4F;QAC5F,6FAA6F;QAC7F,6FAA6F;QAC7F,wFAAwF;QACxF,sFAAsF;QACtF,EAAE;QACF,gGAAgG;QAChG,4BAA4B;QAC5B,IAAI,wBAAwB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACzE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACzD,CAAC;QACD,8FAA8F;QAC9F,2FAA2F;QAC3F,4FAA4F;QAC5F,6FAA6F;QAC7F,6FAA6F;QAC7F,oDAAoD;QACpD,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC;gBACvC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE;gBAChD,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;QAC7D,CAAC;QACD,8FAA8F;QAC9F,4FAA4F;QAC5F,wFAAwF;QACxF,uFAAuF;QACvF,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC;IACtF,CAAC;IACD,gGAAgG;IAChG,oFAAoF;IACpF,IAAI,WAAW,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACxF,IAAI,WAAW,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAC9F,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"posting.js","sourceRoot":"","sources":["../../src/domain/posting.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AA6BpD,MAAM,UAAU,SAAS,CACvB,WAAgC,EAChC,WAAgC;IAEhC,IAAI,WAAW,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QAC3C,IAAI,oBAAoB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACrE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACzD,CAAC;QACD,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC;gBACvC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE;gBAChD,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;QAC7D,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC;IACtF,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACxF,IAAI,WAAW,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAC9F,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;AACxD,CAAC"}
@@ -1,59 +1,19 @@
1
- /**
2
- * The QUALITY CHECK FAULT vocabulary (@SCN-MSG-001, 3F-2872) — what a refused minting carries
3
- * INSTEAD of a sentence.
4
- *
5
- * Stryker mutates every string literal in the domain, so an invariant that states its refusal as
6
- * an interpolated template puts its prose on the mutated surface: emptying a template chunk
7
- * survives every test that does not pin wording, and pinning wording turns a copy-edit red. The
8
- * cure is to move the question rather than answer it — the throw site names a CODE and carries its
9
- * parameters as fields, and the prose that renders them lives in a catalogue held as data.
10
- *
11
- * THE CODE IS A NUMERIC, IMPLICITLY-VALUED ENUM, AND THAT IS THE WHOLE POINT. A string enum would
12
- * relocate the mutable prose onto the enum's own values — the survivors would move house rather
13
- * than leave it. Implicit numbering means there is no literal here for a mutator to reach, so what
14
- * remains on the mutated surface is exactly the logic worth mutating: WHICH fault is raised, and
15
- * with WHAT parameters.
16
- */
17
- import type { Outcome, SidePresence } from "./qualityCheckReconciliation.js";
18
- /**
19
- * One member per throw site in `makeQualityCheckReconciliation`.
20
- *
21
- * Numeric and implicitly valued deliberately (see the module note). The members are named for the
22
- * divergence they report, so a reader meets the meaning at the identifier rather than in a table.
23
- */
1
+ import type { Outcome, SidePresence } from "./outcome.js";
24
2
  export declare enum QualityCheckFaultCode {
25
- /** The carried evidence obligation (debit) side disagrees with the outcome's canon row. */
26
3
  ObligationSideDivergesFromCanon = 0,
27
- /** The carried evidence observation (credit) side disagrees with the outcome's canon row. */
28
4
  ObservationSideDivergesFromCanon = 1
29
5
  }
30
- /**
31
- * What BOTH divergences carry: the outcome whose canon row was consulted, the side-presence that
32
- * row REQUIRED, and the side-presence the fields ACTUALLY carried.
33
- *
34
- * `required` and `actual` are the two halves of the comparison that failed, so a reader — and an
35
- * assertion — recovers the whole disagreement from the fault without reading a sentence.
36
- */
37
6
  interface SideDivergence {
38
7
  readonly outcome: Outcome;
39
8
  readonly required: SidePresence;
40
9
  readonly actual: SidePresence;
41
10
  }
42
- /** The debit side diverged: the obligation is carried where canon says None, or absent where it says Exists. */
43
11
  export interface ObligationSideDivergesFromCanonFault extends SideDivergence {
44
12
  readonly code: QualityCheckFaultCode.ObligationSideDivergesFromCanon;
45
13
  }
46
- /** The credit side diverged: the observation is carried where canon says None, or absent where it says Exists. */
47
14
  export interface ObservationSideDivergesFromCanonFault extends SideDivergence {
48
15
  readonly code: QualityCheckFaultCode.ObservationSideDivergesFromCanon;
49
16
  }
50
- /**
51
- * The discriminated union over every fault this concept can raise.
52
- *
53
- * Discriminated on `code` so the catalogue can be a mapped type over it (3F-2873): the compiler
54
- * then refuses both a code with no message and a message reaching for a parameter its fault does
55
- * not carry. Completeness is not asserted; it is unconstructible otherwise.
56
- */
57
17
  export type QualityCheckFault = ObligationSideDivergesFromCanonFault | ObservationSideDivergesFromCanonFault;
58
18
  export {};
59
19
  //# sourceMappingURL=qualityCheckFault.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"qualityCheckFault.d.ts","sourceRoot":"","sources":["../../src/domain/qualityCheckFault.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE7E;;;;;GAKG;AACH,oBAAY,qBAAqB;IAC/B,2FAA2F;IAC3F,+BAA+B,IAAA;IAC/B,6FAA6F;IAC7F,gCAAgC,IAAA;CACjC;AAED;;;;;;GAMG;AACH,UAAU,cAAc;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;CAC/B;AAED,gHAAgH;AAChH,MAAM,WAAW,oCAAqC,SAAQ,cAAc;IAC1E,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC,+BAA+B,CAAC;CACtE;AAED,kHAAkH;AAClH,MAAM,WAAW,qCAAsC,SAAQ,cAAc;IAC3E,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC,gCAAgC,CAAC;CACvE;AAED;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GACzB,oCAAoC,GACpC,qCAAqC,CAAC"}
1
+ {"version":3,"file":"qualityCheckFault.d.ts","sourceRoot":"","sources":["../../src/domain/qualityCheckFault.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE1D,oBAAY,qBAAqB;IAC/B,+BAA+B,IAAA;IAC/B,gCAAgC,IAAA;CACjC;AAED,UAAU,cAAc;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;CAC/B;AAED,MAAM,WAAW,oCAAqC,SAAQ,cAAc;IAC1E,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC,+BAA+B,CAAC;CACtE;AAED,MAAM,WAAW,qCAAsC,SAAQ,cAAc;IAC3E,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC,gCAAgC,CAAC;CACvE;AAED,MAAM,MAAM,iBAAiB,GACzB,oCAAoC,GACpC,qCAAqC,CAAC"}
@@ -1,30 +1,6 @@
1
- /**
2
- * The QUALITY CHECK FAULT vocabulary (@SCN-MSG-001, 3F-2872) — what a refused minting carries
3
- * INSTEAD of a sentence.
4
- *
5
- * Stryker mutates every string literal in the domain, so an invariant that states its refusal as
6
- * an interpolated template puts its prose on the mutated surface: emptying a template chunk
7
- * survives every test that does not pin wording, and pinning wording turns a copy-edit red. The
8
- * cure is to move the question rather than answer it — the throw site names a CODE and carries its
9
- * parameters as fields, and the prose that renders them lives in a catalogue held as data.
10
- *
11
- * THE CODE IS A NUMERIC, IMPLICITLY-VALUED ENUM, AND THAT IS THE WHOLE POINT. A string enum would
12
- * relocate the mutable prose onto the enum's own values — the survivors would move house rather
13
- * than leave it. Implicit numbering means there is no literal here for a mutator to reach, so what
14
- * remains on the mutated surface is exactly the logic worth mutating: WHICH fault is raised, and
15
- * with WHAT parameters.
16
- */
17
- /**
18
- * One member per throw site in `makeQualityCheckReconciliation`.
19
- *
20
- * Numeric and implicitly valued deliberately (see the module note). The members are named for the
21
- * divergence they report, so a reader meets the meaning at the identifier rather than in a table.
22
- */
23
1
  export var QualityCheckFaultCode;
24
2
  (function (QualityCheckFaultCode) {
25
- /** The carried evidence obligation (debit) side disagrees with the outcome's canon row. */
26
3
  QualityCheckFaultCode[QualityCheckFaultCode["ObligationSideDivergesFromCanon"] = 0] = "ObligationSideDivergesFromCanon";
27
- /** The carried evidence observation (credit) side disagrees with the outcome's canon row. */
28
4
  QualityCheckFaultCode[QualityCheckFaultCode["ObservationSideDivergesFromCanon"] = 1] = "ObservationSideDivergesFromCanon";
29
5
  })(QualityCheckFaultCode || (QualityCheckFaultCode = {}));
30
6
  //# sourceMappingURL=qualityCheckFault.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"qualityCheckFault.js","sourceRoot":"","sources":["../../src/domain/qualityCheckFault.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH;;;;;GAKG;AACH,MAAM,CAAN,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,2FAA2F;IAC3F,uHAA+B,CAAA;IAC/B,6FAA6F;IAC7F,yHAAgC,CAAA;AAClC,CAAC,EALW,qBAAqB,KAArB,qBAAqB,QAKhC"}
1
+ {"version":3,"file":"qualityCheckFault.js","sourceRoot":"","sources":["../../src/domain/qualityCheckFault.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,uHAA+B,CAAA;IAC/B,yHAAgC,CAAA;AAClC,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,QAGhC"}
@@ -1,43 +1,8 @@
1
- /**
2
- * THE MESSAGE CATALOGUE (@SCN-MSG-001, 3F-2872) — the human-facing prose for every
3
- * `QualityCheckFaultCode`, and NOTHING ELSE.
4
- *
5
- * PURE DATA, DELIBERATELY. This module holds one table and no behaviour at all: the indexing
6
- * that turns a fault into its sentence lives in `qualityCheckFault.ts`, on the mutated surface,
7
- * where it belongs. The split is what makes the mutate exclusion honest — "do not mutate this
8
- * file" is defensible over a table of sentences and indefensible over anything that decides
9
- * something. A render helper parked here would leave the deciding logic unmutated too, and the
10
- * exclusion would then hide more than the prose it was granted for. NOTHING NOW ASSERTS THAT IT
11
- * DOES NOT: a check read the real stryker config back and redded on an exclusion that had widened,
12
- * until 3F-3490 retired it as a claim about our own configuration rather than about the product.
13
- * @SCN-MSG-002 keeps the half that IS about the product — every code renders a non-blank message
14
- * carrying its own fault's parameters, proved in `qualityCheckFaultMessages.test.ts` beside this
15
- * file — and the widened-exclusion residual is stated in `features/message-catalogue.feature`'s
16
- * preamble, where the next reader of the exclusion meets it.
17
- *
18
- * TOTALITY IS NOT ASSERTED, IT IS UNCONSTRUCTIBLE. `QualityCheckFaultMessages` is a mapped type
19
- * over the code union, so the compiler refuses both a code with no message AND a message reaching
20
- * for a parameter its own fault does not carry. That is the same type-forced totality
21
- * `OUTCOME_SIDE_PROFILE` and `OUTCOME_DESCRIPTION` already rely on: a new code cannot join the
22
- * union without stating its sentence here.
23
- */
24
1
  import { QualityCheckFaultCode, type QualityCheckFault } from "./qualityCheckFault.js";
25
- /**
26
- * One renderer per code, each seeing EXACTLY its own fault member.
27
- *
28
- * `Extract<…, { code: C }>` narrows per key, so a renderer for the obligation-side code cannot
29
- * reach a field only the observation-side fault carries — the compiler, not a reviewer, is what
30
- * keeps each sentence honest about the parameters available to it.
31
- */
32
2
  export type QualityCheckFaultMessages = {
33
3
  readonly [C in QualityCheckFaultCode]: (fault: Extract<QualityCheckFault, {
34
4
  code: C;
35
5
  }>) => string;
36
6
  };
37
- /**
38
- * The catalogue. Prose is the one thing in this tree that may be rewritten without a ticket, and
39
- * this is where it may be rewritten: no test reads these sentences, and no mutant is raised over
40
- * them once the exclusion lands.
41
- */
42
7
  export declare const QUALITY_CHECK_FAULT_MESSAGES: QualityCheckFaultMessages;
43
8
  //# sourceMappingURL=qualityCheckFaultMessages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"qualityCheckFaultMessages.d.ts","sourceRoot":"","sources":["../../src/domain/qualityCheckFaultMessages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,CAAC,IAAI,qBAAqB,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,KAAK,MAAM;CAClG,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,yBAS1C,CAAC"}
1
+ {"version":3,"file":"qualityCheckFaultMessages.d.ts","sourceRoot":"","sources":["../../src/domain/qualityCheckFaultMessages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEvF,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,CAAC,IAAI,qBAAqB,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,KAAK,MAAM;CAClG,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,yBAS1C,CAAC"}
@@ -1,32 +1,4 @@
1
- /**
2
- * THE MESSAGE CATALOGUE (@SCN-MSG-001, 3F-2872) — the human-facing prose for every
3
- * `QualityCheckFaultCode`, and NOTHING ELSE.
4
- *
5
- * PURE DATA, DELIBERATELY. This module holds one table and no behaviour at all: the indexing
6
- * that turns a fault into its sentence lives in `qualityCheckFault.ts`, on the mutated surface,
7
- * where it belongs. The split is what makes the mutate exclusion honest — "do not mutate this
8
- * file" is defensible over a table of sentences and indefensible over anything that decides
9
- * something. A render helper parked here would leave the deciding logic unmutated too, and the
10
- * exclusion would then hide more than the prose it was granted for. NOTHING NOW ASSERTS THAT IT
11
- * DOES NOT: a check read the real stryker config back and redded on an exclusion that had widened,
12
- * until 3F-3490 retired it as a claim about our own configuration rather than about the product.
13
- * @SCN-MSG-002 keeps the half that IS about the product — every code renders a non-blank message
14
- * carrying its own fault's parameters, proved in `qualityCheckFaultMessages.test.ts` beside this
15
- * file — and the widened-exclusion residual is stated in `features/message-catalogue.feature`'s
16
- * preamble, where the next reader of the exclusion meets it.
17
- *
18
- * TOTALITY IS NOT ASSERTED, IT IS UNCONSTRUCTIBLE. `QualityCheckFaultMessages` is a mapped type
19
- * over the code union, so the compiler refuses both a code with no message AND a message reaching
20
- * for a parameter its own fault does not carry. That is the same type-forced totality
21
- * `OUTCOME_SIDE_PROFILE` and `OUTCOME_DESCRIPTION` already rely on: a new code cannot join the
22
- * union without stating its sentence here.
23
- */
24
1
  import { QualityCheckFaultCode } from "./qualityCheckFault.js";
25
- /**
26
- * The catalogue. Prose is the one thing in this tree that may be rewritten without a ticket, and
27
- * this is where it may be rewritten: no test reads these sentences, and no mutant is raised over
28
- * them once the exclusion lands.
29
- */
30
2
  export const QUALITY_CHECK_FAULT_MESSAGES = {
31
3
  [QualityCheckFaultCode.ObligationSideDivergesFromCanon]: (fault) => `QualityCheckReconciliation invariant (@SCN-LDG-030): outcome "${fault.outcome}" requires the ` +
32
4
  `evidence obligation (debit) side to be ${fault.required}, but it was ` +
@@ -1 +1 @@
1
- {"version":3,"file":"qualityCheckFaultMessages.js","sourceRoot":"","sources":["../../src/domain/qualityCheckFaultMessages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,qBAAqB,EAA0B,MAAM,wBAAwB,CAAC;AAavF;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAA8B;IACrE,CAAC,qBAAqB,CAAC,+BAA+B,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CACjE,iEAAiE,KAAK,CAAC,OAAO,iBAAiB;QAC/F,0CAA0C,KAAK,CAAC,QAAQ,eAAe;QACvE,GAAG,KAAK,CAAC,MAAM,GAAG;IACpB,CAAC,qBAAqB,CAAC,gCAAgC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAClE,iEAAiE,KAAK,CAAC,OAAO,iBAAiB;QAC/F,4CAA4C,KAAK,CAAC,QAAQ,eAAe;QACzE,GAAG,KAAK,CAAC,MAAM,GAAG;CACrB,CAAC"}
1
+ {"version":3,"file":"qualityCheckFaultMessages.js","sourceRoot":"","sources":["../../src/domain/qualityCheckFaultMessages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAA0B,MAAM,wBAAwB,CAAC;AAMvF,MAAM,CAAC,MAAM,4BAA4B,GAA8B;IACrE,CAAC,qBAAqB,CAAC,+BAA+B,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CACjE,iEAAiE,KAAK,CAAC,OAAO,iBAAiB;QAC/F,0CAA0C,KAAK,CAAC,QAAQ,eAAe;QACvE,GAAG,KAAK,CAAC,MAAM,GAAG;IACpB,CAAC,qBAAqB,CAAC,gCAAgC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAClE,iEAAiE,KAAK,CAAC,OAAO,iBAAiB;QAC/F,4CAA4C,KAAK,CAAC,QAAQ,eAAe;QACzE,GAAG,KAAK,CAAC,MAAM,GAAG;CACrB,CAAC"}
@@ -1,304 +1,31 @@
1
- /**
2
- * THE QUALITY CHECK RECONCILIATION — one reconciling item in the accounting frame: the
3
- * per-evidence-obligation line explaining why obligation and observation disagree. This module
4
- * co-locates the concept's type with its OWN behaviour — the outcome vocabulary, the canon
5
- * descriptions, and `reconcileEvidenceObligation`, the pure derivation that computes a single
6
- * obligation's outcome from the observed evidence (module, not class; the rule lives WITH the
7
- * concept, not in the reconcile orchestration that folds it).
8
- */
9
- import type { QualityCheck, EvidenceObligation, EvidenceObservation, GuardEvidenceObservation, FitnessEvidenceObservation, RuntimeEvidenceObservation } from "./journal.js";
10
- /**
11
- * The reconciled OUTCOME of a single quality-check evidence obligation — one
12
- * RECONCILING ITEM in the accounting frame (the per-evidenceObligation line explaining
13
- * why obligation and observation disagree). The rationalisation: the
14
- * per-evidenceObligation axis is the OUTCOME — `satisfied` (its `balanced` retired,
15
- * `balanced` being the scenario VERDICT's word), and the watermelon reads plainly
16
- * as `watermelon`.
17
- */
18
- export type Outcome = "satisfied" | "failing" | "watermelon" | "missing" | "cites-unknown-scenario" | "cites-no-scenario" | "broken" | "no-evidence-obligation" | "no-scn-code" | "both-missing";
19
- /**
20
- * The canon description for each reconciling-item Outcome — the human-readable gloss a
21
- * markdown reader needs (the bare handle means nothing in a CI log). SINGLE SOURCE: the
22
- * markdown renderer renders this description in place of the handle EVERYWHERE an outcome
23
- * surfaces to a reader — the Evidence-reconciliation summary's `↳` decomposition rows, the
24
- * per-scenario reconciling-items list, and the lint-obligation table's Outcome column. The
25
- * JSON keeps the bare handle (the machine axis; a programmatic consumer uses it).
26
- *
27
- * Keyed by EVERY `Outcome` (a `Record<Outcome, …>`), so a new outcome cannot be added to the
28
- * union without a description here — the description can never silently diverge from the
29
- * outcome it names (the drift class this project has been burned by: the census, the views).
30
- * These phrasings ARE the original canon — later abbreviated to the handles; 3F-1626 restores
31
- * them. `satisfied` (the balanced outcome, excluded from the out-of-balance decomposition)
32
- * carries one for totality's sake.
33
- *
34
- * ⚠ KEY ORDER IS LOAD-BEARING (3F-1806). `OUT_OF_BALANCE_OUTCOMES` is DERIVED from these keys,
35
- * and the renderer walks that list to emit the decomposition rows — so this map's key order IS
36
- * the report's row order (`missing` first: the headline cause, the one carrying the bare-level
37
- * split as Detail). Reordering these keys is a REPORT CHANGE, not a cosmetic tidy. The order
38
- * follows canon, grouped by reconciling-item shape: a DEBIT block (missing, failing, watermelon,
39
- * no-scn-code), a CREDIT block (cites-unknown-scenario, cites-no-scenario, no-evidence-obligation), then
40
- * NEITHER (broken, both-missing). @SCN-RPT-019 now pins this SEQUENCE against the rendered `↳`
41
- * rows (3F-1926), so a reorder reds — the exhaustiveness guard alone proved MEMBERSHIP, not
42
- * order, and used not to catch one (which is how the order drifted before it was pinned).
43
- */
1
+ import type { QualityCheck, EvidenceObligation, EvidenceObservation, FitnessEvidenceObservation, RuntimeEvidenceObservation } from "./journal.js";
2
+ import type { Outcome, SidePresence } from "./outcome.js";
3
+ export type { Outcome, SidePresence } from "./outcome.js";
44
4
  export declare const OUTCOME_DESCRIPTION: Record<Outcome, string>;
45
- /**
46
- * The out-of-balance reconciling-item outcomes, in report reading order — every `Outcome`
47
- * except `satisfied` (the BALANCED outcome, not part of the OUT-of-balance decomposition).
48
- * The renderer walks this to emit the summary's `↳` leaf rows (@SCN-RPT-019), each reconciling
49
- * to the out-of-balance total exactly once (a FLAT list: the old debit/credit/neither grouping
50
- * emitted a `↳ <group>-side` subtotal AND its leaves at the same indent, so a naive column-sum
51
- * double-counted — the live 170 vs 85).
52
- *
53
- * DERIVED from the type-forced `OUTCOME_DESCRIPTION`, never hand-listed (3F-1806). It was a
54
- * hand-maintained `readonly Outcome[]` in the renderer, which accepted a missing union member
55
- * SILENTLY: `broken` (@SCN-LDG-017) joined the union, tallied into `byOutcome`, compiled clean,
56
- * and would have been omitted from the table. Deriving the keys makes that omission IMPOSSIBLE
57
- * rather than merely CAUGHT — a new `Outcome` cannot compile without a description, and the
58
- * moment it has one it renders a leaf row with no change to the renderer.
59
- *
60
- * Lives in the model, not the renderer: which outcomes are out-of-balance is the model's rule,
61
- * not a presentation choice (`entity-owns-its-behaviour`). The @SCN-RPT-019 guard remains as the
62
- * end-to-end backstop — it renders real markdown and reads the rows back, deriving its
63
- * expectation from its OWN type-forced record (`double-entry`, not a re-read of this source).
64
- */
65
5
  export declare const OUT_OF_BALANCE_OUTCOMES: readonly Outcome[];
66
- /**
67
- * THE NOMINAL BRAND (@SCN-LDG-030, 3F-2016) — a module-private `unique symbol` phantom field.
68
- * `QualityCheckReconciliation` is `QualityCheckReconciliationFields` PLUS a required field of this
69
- * symbol's type, so no object literal typechecks as a `QualityCheckReconciliation` OUTSIDE this
70
- * module — only `makeQualityCheckReconciliation` (which casts) can mint one. The brand symbol has
71
- * no runtime presence; the field is a Symbol key, so `JSON.stringify` skips it (never
72
- * serialised) and `.toEqual` sees no runtime key (value-literal comparisons stay green). The brand
73
- * restricts CONSTRUCTION only — consumers only READ QCRs, so no read site changes.
74
- */
75
6
  declare const qualityCheckReconciliationBrand: unique symbol;
76
- /**
77
- * A single evidenceObligation's reconciliation outcome — a reconciling item. A SINGLE
78
- * flat shape mirroring EvidenceObligation: keyed on `qualityCheck`, with
79
- * `staticCheck` present IFF `qualityCheck === 'lint'` (the static-check reconciling item).
80
- *
81
- * The un-branded FIELDS (module-internal). The exported `QualityCheckReconciliation` type is this
82
- * intersected with the nominal brand; `makeQualityCheckReconciliation` takes these fields and mints
83
- * the branded value.
84
- */
85
7
  interface QualityCheckReconciliationFields {
86
- /**
87
- * The flat quality-check this reconciling item is about. ABSENT only for the degenerate
88
- * `both-missing` item — the neither-side shape, blank on both sides: it names no
89
- * quality-check because it is neither a debit evidence obligation nor a credit evidence observation. Present on
90
- * every other outcome (debit and credit alike).
91
- */
92
8
  qualityCheck?: QualityCheck;
93
- /** The `staticCheck` handle — present IFF `qualityCheck === 'lint'`. */
94
9
  staticCheck?: string;
95
10
  outcome: Outcome;
96
- /**
97
- * The DEBIT side of the two-sided reconciling item (@SCN-LDG-026): the evidence obligation
98
- * this item reconciles, carried on the reconciliation itself rather than joined from a
99
- * separate scenario-level array at print time. Present IFF the obligation Exists — every
100
- * debit-bearing outcome (`satisfied` / `missing` / `failing` / `watermelon`), AND `no-scn-code`,
101
- * which carries a SYNTHESIZED scenario-scope obligation (an empty `{}`, no `qualityCheck` /
102
- * `staticCheck`): canon (`double-entry-manifesto.md` line 39) marks `no-scn-code` Obligation
103
- * Exists, Observation None — the debit twin of `cites-no-scenario` (@SCN-LDG-029). ABSENT on the
104
- * credit-only outcomes (`cites-unknown-scenario` / `cites-no-scenario` / `no-evidence-obligation`) and the
105
- * neither-side outcomes (`broken` / `both-missing`), where no obligation is in scope.
106
- * `JSON.stringify` omits it when undefined, so a byte-identical golden is preserved everywhere the
107
- * obligation is absent.
108
- */
109
11
  evidenceObligation?: EvidenceObligation;
110
- /**
111
- * The CREDIT side of the two-sided reconciling item (@SCN-LDG-027): the evidence observation
112
- * this item reconciles, carried on the reconciliation itself rather than joined from a
113
- * separate scenario-level array at print time. Present IFF the observation Exists — every
114
- * observation-bearing outcome: the two-sided debit outcomes (`satisfied` / `failing` /
115
- * `watermelon`) whose match `reconcileEvidenceObligation` found, AND the credit-only outcomes
116
- * (`cites-unknown-scenario` / `cites-no-scenario` / `no-evidence-obligation`) the fold produces from a
117
- * citing observation. ABSENT on `missing` (obligation Exists, observation None) and the
118
- * neither-side outcomes (`no-scn-code` / `broken` / `both-missing`), where no observation is in
119
- * scope. For a lint `missing` the absent static check is FOUND as the negative fact
120
- * `{exists:false}` — an ABSENCE, not an observation (@SCN-LDG-028) — so it is NOT carried here:
121
- * only a REAL observation (`exists:true`) is the credit side. `JSON.stringify` omits it when
122
- * undefined, so a byte-identical golden is preserved everywhere the observation is absent.
123
- */
124
12
  evidenceObservation?: EvidenceObservation;
125
- /**
126
- * The where-to-fix for a CREDIT-side reconciling item (ruling Q5) — the
127
- * evidence-observation locator (the test-file path the citing credit came from),
128
- * carried so it survives the detail-arrays-into-rows move. Present only on a
129
- * credit-side Quality Check Reconciliation (e.g. `cites-unknown-scenario` on a
130
- * phantom scenario); a debit-side evidence obligation carries none.
131
- */
132
13
  locator?: string;
133
- /**
134
- * The WHAT-BROKE payload of a `broken` credit-side reconciling item (@SCN-LDG-017) — the
135
- * collection error the runner reported, carried alongside the `locator` (the file to fix).
136
- * Present only on a `broken` item; every other outcome carries none.
137
- */
138
14
  message?: string;
139
15
  }
140
- /**
141
- * A single evidenceObligation's reconciliation outcome — the branded reconciling item. The fields
142
- * intersected with the nominal brand (@SCN-LDG-030): mintable ONLY by
143
- * `makeQualityCheckReconciliation`, so every QCR in the system has passed the (outcome,
144
- * side-presence) consistency check. The barrel (`index.ts`) re-exports this TYPE via
145
- * `model.ts`; the phantom field adds no exported SYMBOL, so the symbol NAMES on the public v1
146
- * surface are unchanged — but constructibility is deliberately NARROWED: QCRs are engine-minted,
147
- * and the type is exported for READING the reconciliation the engine produced, not for external
148
- * CONSTRUCTION (the smart constructor is unexported). That narrowed contract is stated executably
149
- * by the type-level guard in `index.test.ts` (@SCN-API-002, 3F-2040), not merely asserted here.
150
- */
151
16
  export type QualityCheckReconciliation = QualityCheckReconciliationFields & {
152
17
  readonly [qualityCheckReconciliationBrand]: typeof qualityCheckReconciliationBrand;
153
18
  };
154
- /**
155
- * Whether a canon-correct reconciling item CARRIES a given side — the value both halves of the
156
- * invariant are stated in: what the canon row required, and what the fields actually carried.
157
- *
158
- * Named rather than restated inline so the fault that reports a divergence (`qualityCheckFault.ts`)
159
- * is typed in the reconciliation's own vocabulary instead of re-spelling the two literals a third
160
- * and fourth time.
161
- */
162
- export type SidePresence = "Exists" | "None";
163
- /**
164
- * THE CANON OUTCOME-SIDE PROFILE (@SCN-LDG-030, 3F-2016) — the (outcome → side-presence) table
165
- * transcribed from canon (`double-entry-manifesto.md` lines 35-44), keyed by EVERY `Outcome` (a
166
- * `Record<Outcome, …>`), so a new outcome cannot join the union without STATING its side
167
- * profile here — the type-forced totality that makes this map the SINGLE SOURCE the invariant is
168
- * checked against (mirroring `OUTCOME_DESCRIPTION`).
169
- *
170
- * `obligation`/`observation` are `"Exists" | "None"` — whether a canon-correct reconciling item
171
- * of that outcome CARRIES the debit (evidence obligation) and the credit (evidence observation)
172
- * side respectively. NOT a naive function of side-presence: `missing` and `no-scn-code` share
173
- * (Exists, None); the three credit outcomes (`cites-unknown-scenario` / `cites-no-scenario` /
174
- * `no-evidence-obligation`) share (None, Exists). So the invariant `makeQualityCheckReconciliation` enforces
175
- * is (outcome, side-presence) CONSISTENCY against this row, never a derivation of outcome FROM the
176
- * sides.
177
- */
178
19
  export declare const OUTCOME_SIDE_PROFILE: Record<Outcome, {
179
20
  obligation: SidePresence;
180
21
  observation: SidePresence;
181
22
  }>;
182
- /**
183
- * THE SMART CONSTRUCTOR (@SCN-LDG-030, 3F-2016) — the ONLY way to mint a
184
- * `QualityCheckReconciliation`. It takes `outcome` as GIVEN (a consistency check, NOT a
185
- * derivation — `missing`/`no-scn-code` share a profile, so the outcome cannot be recovered from
186
- * side-presence alone), looks up the canon row in `OUTCOME_SIDE_PROFILE`, and THROWS if the
187
- * carried sides disagree with it: a divergent (outcome, side-presence) pair — the watermelon class
188
- * this tool exists to catch, in its own output — is UNCONSTRUCTIBLE.
189
- *
190
- * Returns `fields` UNCHANGED (cast to the branded type): the producer's own key order is preserved
191
- * verbatim, so every unchanged row stays byte-identical (no object is reconstructed).
192
- */
193
23
  export declare function makeQualityCheckReconciliation(fields: QualityCheckReconciliationFields): QualityCheckReconciliation;
194
- /**
195
- * Reconcile one evidence obligation against the observed evidence, keyed on the
196
- * flat `qualityCheck`. `qualityCheck === "lint"` is the watermelon
197
- * discriminator: it routes to the STATIC-check mapping;
198
- * every other value routes to the RUNTIME-result mapping.
199
- */
200
24
  export declare function reconcileEvidenceObligation(scnId: string, req: EvidenceObligation, evidenceObservations: EvidenceObservation[]): QualityCheckReconciliation;
201
- /**
202
- * The NO-EVIDENCE-OBLIGATION items on a real scenario's row (@SCN-LDG-008) — one per credit citing THIS
203
- * scenario at a quality-check it never named. The credit posts to a real row against NO
204
- * evidence obligation, so the item is CREDIT-ONLY (no obligation is in scope).
205
- *
206
- * The pair-check is what distinguishes no-evidence-obligation from a matched credit: a credit at a NAMED
207
- * `(scnId, quality-check)` pair reconciles satisfied/failing via `reconcileEvidenceObligation` and
208
- * is NOT re-listed here. `evidenceObligationPairs` is the journal's rule (`evidenceObligationPairsOf`),
209
- * built once and shared — which is what makes a credit citing a PENDING pair land here rather than
210
- * nowhere (3F-1858: a pending obligation names nothing, so such a credit is no-evidence-obligation exactly
211
- * as when nothing was raised at all, and the run that used to read balanced over it now fails).
212
- */
213
25
  export declare function noEvidenceObligationReconciliationsOf(scnId: string, postedCredits: readonly EvidenceObservation[], evidenceObligationPairs: ReadonlySet<string>): QualityCheckReconciliation[];
214
- /**
215
- * The items on a PHANTOM row (@SCN-LDG-006) — one `cites-unknown-scenario` per credit citing an
216
- * `@SCN` no scenario carries, in citation order. CREDIT-ONLY: a phantom row is minted BY a credit,
217
- * so nothing can ever have been named of it, and no obligation is in scope.
218
- *
219
- * THE WHERE-TO-FIX IS THE WHOLE OF WHAT THIS ITEM CAN OFFER, which is why both halves ride through
220
- * (ruling Q5): a phantom item has no obligation to point a reader at instead. A runtime credit
221
- * carries its locator (the test file that cited); a FITNESS credit carries the CHECK THAT RAN —
222
- * it is read from a target's config, not from a test file, so it has no locator and the handle is
223
- * all there is. That half became reachable when the fitness axis started citing (@SCN-LNT-009);
224
- * the suspense arm below already carried it, and the two unmatched-credit destinations must not
225
- * tell a reader different amounts about the same class of fault.
226
- */
227
26
  export declare function citesUnknownScenarioReconciliationsOf(credits: readonly EvidenceObservation[]): QualityCheckReconciliation[];
228
- /**
229
- * The items on the SUSPENSE row (@SCN-LDG-007) — every entry that names no scenario at all,
230
- * in the ONE order canon fixes.
231
- *
232
- * THE ORDER IS THE RULE, not an accident of assembly. `broken` comes FIRST because a broken run's
233
- * other suspense items are downstream noise: the reader must be sent to the harness before being
234
- * asked to read anything the harness failed to produce.
235
- *
236
- * THE SPLIT (@SCN-LDG-017) is why `broken` and `cites-no-scenario` are separate arms rather than
237
- * one map over "everything uncited". Both land here because they name no scenario, but they are
238
- * distinguished by errored-vs-completed and their remedies differ: a `cites-no-scenario` test RAN
239
- * and forgot its citation (add the `@SCN`); a `broken` suite never ran at all (fix the harness).
240
- * Folding the second into the first would hide a collection failure behind the wrong cure.
241
- *
242
- * The three arms carry different payloads, each for a stated reason:
243
- * - `broken` carries its WHERE-to-fix (locator) and its WHAT-broke (the runner's message), and
244
- * NO `evidenceObservation` — a proof that never ran is not an observed piece of evidence.
245
- * - an uncited runtime credit carries the observation it reconciles, plus its locator.
246
- * - a no-evidence-obligation static check carries its handle and its observation; it has no locator (a
247
- * static check is read from config, not from a test file).
248
- *
249
- * THE BROKEN STREAM TAKES EITHER AXIS SINCE @SCN-LNT-026, AND THE ARM NEEDED NO BRANCH FOR IT.
250
- * A converted static check that did not run carries the same two payload halves under the same
251
- * two names, so the map reads what the observation holds exactly as it does for a vitest suite
252
- * that failed to collect. What differs is only the `qualityCheck` the item then carries — `lint`
253
- * rather than a runtime tier — which is read off the observation and not decided here.
254
- */
255
- export declare function suspenseReconciliationsOf(brokenEvidence: readonly (RuntimeEvidenceObservation | GuardEvidenceObservation)[], uncited: readonly RuntimeEvidenceObservation[], noEvidenceObligationGuards: readonly FitnessEvidenceObservation[]): QualityCheckReconciliation[];
256
- /**
257
- * The item on an UNTAGGED scenario's row (@SCN-LDG-021) — the DEBIT twin of `cites-no-scenario`
258
- * (same missing link, opposite side; suspense stays credit-only).
259
- *
260
- * A scenario carrying no `@SCN` is REAL and ORDINARY — cucumber runs it — but its obligation has no
261
- * CODE for an observation to link to, so it could reconcile NOTHING: not satisfied, not failing,
262
- * not even `missing`, because an obligation never RAISED cannot be ABSENT. Without this item it
263
- * contributed nothing to the verdict and the run went green over work nothing proves.
264
- *
265
- * It carries NO `qualityCheck`: with no code, no observation can link at ANY tier, so the missing
266
- * link is SCENARIO-scope, not tier-scope (the shape `both-missing` also uses). The synthesised
267
- * scenario-scope obligation — an empty `{}` — lives ONLY on this item; the row's own
268
- * `evidenceObligations` stays empty (canon citation: double-entry-manifesto line 39, Obligation
269
- * Exists / Observation None).
270
- */
27
+ export declare function suspenseReconciliationsOf(brokenEvidence: readonly (RuntimeEvidenceObservation | FitnessEvidenceObservation)[], uncited: readonly RuntimeEvidenceObservation[], noEvidenceObligationStaticChecks: readonly FitnessEvidenceObservation[]): QualityCheckReconciliation[];
271
28
  export declare function noScnCodeReconciliations(): QualityCheckReconciliation[];
272
- /**
273
- * The degenerate BOTH-MISSING item (@SCN-LDG-009) — the NEITHER-side outcome, blank on both sides:
274
- * no `qualityCheck` (it is neither a debit obligation nor a credit observation), no carried entry.
275
- * A scenario that reconciled to zero rows on BOTH sides posts exactly one of these, and is
276
- * out-of-balance through it.
277
- *
278
- * Construction lives here with the item; the rule for WHEN a row carries it instead of its sub-rows
279
- * is the ROW's, and lives on `scenarioReconciliation` (`qualityCheckReconciliationsOf`).
280
- */
29
+ export declare function duplicateScnCodeReconciliationsOf(obligations: readonly EvidenceObligation[]): QualityCheckReconciliation[];
281
30
  export declare function bothMissingReconciliation(): QualityCheckReconciliation;
282
- /**
283
- * The item on the row a CONFIGURED ROW WITH NO SCENARIO earns (@SCN-LNT-027, 3F-3472) — canon's
284
- * `missing`: Obligation Exists, Observation None.
285
- *
286
- * NO NEW OUTCOME, AND THAT IS THE ARGUMENT RATHER THAN THE CONVENIENCE. A row the manifest declares
287
- * and no scenario specifies is a debit nothing observed, which is what `missing` already means and
288
- * what `features/fitness-checks.feature` promises in those words. Minting a fourth corpus-shape
289
- * outcome would put a second sentence beside a row canon already has a sentence for.
290
- *
291
- * THE OBLIGATION IS THE ROW'S OWN, and it is REAL — `{ qualityCheck: "lint", staticCheck: <the
292
- * characteristic> }`, the same shape a converted scenario raises. That is what separates this from
293
- * the uncoded-work item beside it: THAT one synthesises an empty `{}` because an untagged scenario
294
- * names no check at all, and this row names exactly one. So the row posts it as a debit too, and
295
- * the summary counts the obligation the manifest raised.
296
- *
297
- * NOTHING HERE CAN DISCHARGE IT, and that is structural rather than asserted: no observation is
298
- * offered to this item at all, and the minted row's `@SCN` is not a member of the set the citation
299
- * router posts credits against. A credit citing the row's code still mints a phantom row
300
- * (@SCN-LNT-009); there is no route by which it reaches this one.
301
- */
302
- export declare function unspecifiedRowReconciliations(characteristic: string): QualityCheckReconciliation[];
303
- export {};
304
31
  //# sourceMappingURL=qualityCheckReconciliation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"qualityCheckReconciliation.d.ts","sourceRoot":"","sources":["../../src/domain/qualityCheckReconciliation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,cAAc,CAAC;AAQtB;;;;;;;GAOG;AACH,MAAM,MAAM,OAAO,GACf,WAAW,GACX,SAAS,GACT,YAAY,GAGZ,SAAS,GAIT,wBAAwB,GAExB,mBAAmB,GAGnB,QAAQ,GAQR,wBAAwB,GAOxB,aAAa,GAOb,cAAc,CAAC;AASnB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CA4BvD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,OAAO,EAER,CAAC;AAE/C;;;;;;;;GAQG;AACH,OAAO,CAAC,MAAM,+BAA+B,EAAE,OAAO,MAAM,CAAC;AAE7D;;;;;;;;GAQG;AACH,UAAU,gCAAgC;IACxC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;;;;;;;OAYG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,0BAA0B,GAAG,gCAAgC,GAAG;IAC1E,QAAQ,CAAC,CAAC,+BAA+B,CAAC,EAAE,OAAO,+BAA+B,CAAC;CACpF,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE7C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACvC,OAAO,EACP;IAAE,UAAU,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,YAAY,CAAA;CAAE,CAYxD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,gCAAgC,GACvC,0BAA0B,CAuB5B;AA0ID;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,kBAAkB,EACvB,oBAAoB,EAAE,mBAAmB,EAAE,GAC1C,0BAA0B,CAuE5B;AA6CD;;;;;;;;;;;GAWG;AACH,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,SAAS,mBAAmB,EAAE,EAC7C,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3C,0BAA0B,EAAE,CA6B9B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,SAAS,mBAAmB,EAAE,GACtC,0BAA0B,EAAE,CAY9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,SAAS,CAAC,0BAA0B,GAAG,wBAAwB,CAAC,EAAE,EAClF,OAAO,EAAE,SAAS,0BAA0B,EAAE,EAC9C,0BAA0B,EAAE,SAAS,0BAA0B,EAAE,GAChE,0BAA0B,EAAE,CA4B9B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,IAAI,0BAA0B,EAAE,CAEvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,IAAI,0BAA0B,CAEtE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,6BAA6B,CAAC,cAAc,EAAE,MAAM,GAAG,0BAA0B,EAAE,CASlG"}
1
+ {"version":3,"file":"qualityCheckReconciliation.d.ts","sourceRoot":"","sources":["../../src/domain/qualityCheckReconciliation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,cAAc,CAAC;AAOtB,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE1D,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE1D,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAcvD,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,SAAS,OAAO,EAER,CAAC;AAE/C,OAAO,CAAC,MAAM,+BAA+B,EAAE,OAAO,MAAM,CAAC;AAE7D,UAAU,gCAAgC;IACxC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,0BAA0B,GAAG,gCAAgC,GAAG;IAC1E,QAAQ,CAAC,CAAC,+BAA+B,CAAC,EAAE,OAAO,+BAA+B,CAAC;CACpF,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACvC,OAAO,EACP;IAAE,UAAU,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,YAAY,CAAA;CAAE,CAaxD,CAAC;AAEF,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,gCAAgC,GACvC,0BAA0B,CAmB5B;AA8DD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,kBAAkB,EACvB,oBAAoB,EAAE,mBAAmB,EAAE,GAC1C,0BAA0B,CAiB5B;AAQD,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,SAAS,mBAAmB,EAAE,EAC7C,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3C,0BAA0B,EAAE,CAe9B;AAED,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,SAAS,mBAAmB,EAAE,GACtC,0BAA0B,EAAE,CAU9B;AAED,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,SAAS,CAAC,0BAA0B,GAAG,0BAA0B,CAAC,EAAE,EACpF,OAAO,EAAE,SAAS,0BAA0B,EAAE,EAC9C,gCAAgC,EAAE,SAAS,0BAA0B,EAAE,GACtE,0BAA0B,EAAE,CA2B9B;AAED,wBAAgB,wBAAwB,IAAI,0BAA0B,EAAE,CAEvE;AAED,wBAAgB,iCAAiC,CAC/C,WAAW,EAAE,SAAS,kBAAkB,EAAE,GACzC,0BAA0B,EAAE,CAa9B;AAED,wBAAgB,yBAAyB,IAAI,0BAA0B,CAEtE"}