@3f-consulting/spec-controller-core 0.1.0-alpha.7 → 0.1.0-alpha.70

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 (257) hide show
  1. package/README.md +3 -3
  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 +30 -325
  5. package/dist/assemble/evidenceReconciliationFromSources.js.map +1 -1
  6. package/dist/assemble/renderInput.d.ts +7 -73
  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 +11 -46
  11. package/dist/census/evidenceObligations.d.ts.map +1 -1
  12. package/dist/census/evidenceObligations.js +19 -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 +21 -391
  19. package/dist/domain/evidenceReconciliation.d.ts.map +1 -1
  20. package/dist/domain/evidenceReconciliation.js +87 -382
  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 +8 -393
  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 +8 -328
  31. package/dist/domain/ledger.d.ts.map +1 -1
  32. package/dist/domain/ledger.js +23 -326
  33. package/dist/domain/ledger.js.map +1 -1
  34. package/dist/domain/messages.d.ts +213 -0
  35. package/dist/domain/messages.d.ts.map +1 -0
  36. package/dist/domain/messages.js +313 -0
  37. package/dist/domain/messages.js.map +1 -0
  38. package/dist/domain/outcome.d.ts +3 -0
  39. package/dist/domain/outcome.d.ts.map +1 -0
  40. package/dist/domain/outcome.js +2 -0
  41. package/dist/domain/outcome.js.map +1 -0
  42. package/dist/domain/posting.d.ts +8 -105
  43. package/dist/domain/posting.d.ts.map +1 -1
  44. package/dist/domain/posting.js +4 -56
  45. package/dist/domain/posting.js.map +1 -1
  46. package/dist/domain/qualityCheckFault.d.ts +3 -43
  47. package/dist/domain/qualityCheckFault.d.ts.map +1 -1
  48. package/dist/domain/qualityCheckFault.js +0 -24
  49. package/dist/domain/qualityCheckFault.js.map +1 -1
  50. package/dist/domain/qualityCheckReconciliation.d.ts +7 -280
  51. package/dist/domain/qualityCheckReconciliation.d.ts.map +1 -1
  52. package/dist/domain/qualityCheckReconciliation.js +63 -463
  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 +1 -24
  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 +2 -207
  63. package/dist/domain/scenarioReconciliation.d.ts.map +1 -1
  64. package/dist/domain/scenarioReconciliation.js +4 -101
  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 +14 -40
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +8 -88
  77. package/dist/index.js.map +1 -1
  78. package/dist/internal.d.ts +3 -27
  79. package/dist/internal.d.ts.map +1 -1
  80. package/dist/internal.js +3 -94
  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 +2 -16
  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 +5 -168
  98. package/dist/parse/checkScriptsRunInCI.d.ts.map +1 -1
  99. package/dist/parse/checkScriptsRunInCI.js +11 -171
  100. package/dist/parse/checkScriptsRunInCI.js.map +1 -1
  101. package/dist/parse/ciStepRecord.d.ts +4 -118
  102. package/dist/parse/ciStepRecord.d.ts.map +1 -1
  103. package/dist/parse/ciStepRecord.js +18 -225
  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 +6 -67
  108. package/dist/parse/commandRuns.js.map +1 -1
  109. package/dist/parse/cucumber.d.ts +0 -53
  110. package/dist/parse/cucumber.d.ts.map +1 -1
  111. package/dist/parse/cucumber.js +42 -146
  112. package/dist/parse/cucumber.js.map +1 -1
  113. package/dist/parse/discoveryScope.d.ts +1 -46
  114. package/dist/parse/discoveryScope.d.ts.map +1 -1
  115. package/dist/parse/discoveryScope.js +2 -57
  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 +2 -64
  124. package/dist/parse/reconcilerSteps.js.map +1 -1
  125. package/dist/parse/runningFitnessFunctions.d.ts +9 -0
  126. package/dist/parse/runningFitnessFunctions.d.ts.map +1 -0
  127. package/dist/parse/runningFitnessFunctions.js +57 -0
  128. package/dist/parse/runningFitnessFunctions.js.map +1 -0
  129. package/dist/parse/scenarioCodeErrors.d.ts +11 -0
  130. package/dist/parse/scenarioCodeErrors.d.ts.map +1 -0
  131. package/dist/parse/scenarioCodeErrors.js +78 -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 +20 -457
  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 +1 -55
  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 +2 -50
  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 +48 -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 +4 -83
  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 +6 -69
  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 +3 -39
  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 +21 -103
  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 +4 -32
  184. package/dist/render/excludedSteps.js.map +1 -1
  185. package/dist/render/fitnessFunctions.d.ts +3 -0
  186. package/dist/render/fitnessFunctions.d.ts.map +1 -0
  187. package/dist/render/fitnessFunctions.js +12 -0
  188. package/dist/render/fitnessFunctions.js.map +1 -0
  189. package/dist/render/json.d.ts +0 -11
  190. package/dist/render/json.d.ts.map +1 -1
  191. package/dist/render/json.js +0 -11
  192. package/dist/render/json.js.map +1 -1
  193. package/dist/render/markdown.d.ts +1 -55
  194. package/dist/render/markdown.d.ts.map +1 -1
  195. package/dist/render/markdown.js +128 -467
  196. package/dist/render/markdown.js.map +1 -1
  197. package/dist/render/provenanceSection.d.ts +0 -22
  198. package/dist/render/provenanceSection.d.ts.map +1 -1
  199. package/dist/render/provenanceSection.js +10 -53
  200. package/dist/render/provenanceSection.js.map +1 -1
  201. package/dist/render/reconcilerSteps.d.ts +0 -25
  202. package/dist/render/reconcilerSteps.d.ts.map +1 -1
  203. package/dist/render/reconcilerSteps.js +5 -30
  204. package/dist/render/reconcilerSteps.js.map +1 -1
  205. package/dist/render/runVerdict.d.ts +0 -38
  206. package/dist/render/runVerdict.d.ts.map +1 -1
  207. package/dist/render/runVerdict.js +62 -129
  208. package/dist/render/runVerdict.js.map +1 -1
  209. package/dist/render/scenarioCodeErrorsSection.d.ts +3 -0
  210. package/dist/render/scenarioCodeErrorsSection.d.ts.map +1 -0
  211. package/dist/render/scenarioCodeErrorsSection.js +45 -0
  212. package/dist/render/scenarioCodeErrorsSection.js.map +1 -0
  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 +5 -49
  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 +4 -35
  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/domain/qualityCheckFaultMessages.d.ts +0 -43
  231. package/dist/domain/qualityCheckFaultMessages.d.ts.map +0 -1
  232. package/dist/domain/qualityCheckFaultMessages.js +0 -38
  233. package/dist/domain/qualityCheckFaultMessages.js.map +0 -1
  234. package/dist/lib/featureCode.d.ts +0 -21
  235. package/dist/lib/featureCode.d.ts.map +0 -1
  236. package/dist/lib/featureCode.js +0 -24
  237. package/dist/lib/featureCode.js.map +0 -1
  238. package/dist/parse/corpusCodeFaults.d.ts +0 -76
  239. package/dist/parse/corpusCodeFaults.d.ts.map +0 -1
  240. package/dist/parse/corpusCodeFaults.js +0 -121
  241. package/dist/parse/corpusCodeFaults.js.map +0 -1
  242. package/dist/parse/corpusFaults.d.ts +0 -124
  243. package/dist/parse/corpusFaults.d.ts.map +0 -1
  244. package/dist/parse/corpusFaults.js +0 -72
  245. package/dist/parse/corpusFaults.js.map +0 -1
  246. package/dist/parse/corpusGrammarFaults.d.ts +0 -71
  247. package/dist/parse/corpusGrammarFaults.d.ts.map +0 -1
  248. package/dist/parse/corpusGrammarFaults.js +0 -292
  249. package/dist/parse/corpusGrammarFaults.js.map +0 -1
  250. package/dist/parse/runningStaticChecks.d.ts +0 -125
  251. package/dist/parse/runningStaticChecks.d.ts.map +0 -1
  252. package/dist/parse/runningStaticChecks.js +0 -316
  253. package/dist/parse/runningStaticChecks.js.map +0 -1
  254. package/dist/render/staticChecks.d.ts +0 -23
  255. package/dist/render/staticChecks.d.ts.map +0 -1
  256. package/dist/render/staticChecks.js +0 -69
  257. package/dist/render/staticChecks.js.map +0 -1
@@ -1,441 +1,71 @@
1
- /**
2
- * THE EVIDENCE RECONCILIATION — canon's Layer 1, *"the whole reconciliation: all Scenario
3
- * Reconciliations taken together"*, and **the key concept the domain models**
4
- * (`double-entry-manifesto.md`). This module is its home.
5
- *
6
- * IT ARRIVED HERE FROM `reconcile/` (3F-2232). After 3F-2202/2203/2204 that module held no domain
7
- * rule — but it was still a named layer beside the domain doing the concept's own work, which is
8
- * the shape `functional-domain-modelling.md` rejects: *"orchestration is thin composition, not a
9
- * named layer."* Constructing a concept is the concept's business. The module's residual tell was
10
- * already visible — it re-exported `isBalanced` / `hasPendingItems` / `hasBrokenEvidence` FROM
11
- * `domain/ledger` purely to preserve importers' paths, a shell around behaviour that had already
12
- * gone home. Every importer now points at the module that OWNS the symbol.
13
- *
14
- * (3F-2233 completes the move: the concept's TYPE, its `Summary`, and the factory that fuses this
15
- * fold with the summary tally. Today this module holds the fold alone.)
16
- *
17
- * The pure obligation-vs-observation join, keyed by one flat
18
- * `qualityCheck` (the two-axis `(kind, level)` grid collapsed). This module is THIN
19
- * COMPOSITION: the domain RULES it once held moved to the
20
- * concept modules that own them (3F-1994) — `reconcileEvidenceObligation` (the per-obligation
21
- * outcome) to `domain/qualityCheckReconciliation`, `verdictFor` / `reconcilingItemsOf` (the
22
- * account roll-up) to `domain/scenarioReconciliation`, `isBalanced` / `hasPendingItems` /
23
- * `hasBrokenEvidence` (the whole-run predicates) to `domain/ledger`. `reconcile` is the fold that
24
- * WALKS the inputs, CALLS those rules, and BUILDS the rows; it is the orchestration, not their home.
25
- *
26
- * POSTING-DESTINATION left too (3F-2202) — WHERE an entry lands is canon's own glossary group
27
- * ("### Posting") and now lives on `domain/posting`: `postingOf`, the one citation route over both
28
- * axes (plus the no-evidence-obligation-static-check arm). The by-name half is gone (3F-2590).
29
- * The fold no longer DECIDES a destination anywhere — it
30
- * asks the rule once per credit and files the answer. What remains is assembly: which rows exist,
31
- * in what order, holding which items.
32
- *
33
- * Per the slice design: for each evidence obligation a scenario raises (a reconciling
34
- * item), present+pass → satisfied; present+fail → failing; absent →
35
- * missing. `reconcileEvidenceObligation` branches on the `qualityCheck === "lint"`
36
- * watermelon discriminator (replacing the retired `kind === "static"` split): a `lint`
37
- * evidence obligation reconciles against a static-check evidence observation (exists+wired → satisfied;
38
- * exists+unwired → watermelon; absent → missing); a runtime evidence obligation
39
- * reconciles against a test result matched by (scnId, quality-check).
40
- *
41
- * The scenario VERDICT is binary (superseding the earlier prioritising
42
- * aggregate): a scenario is `balanced` IFF every required quality-check balances;
43
- * otherwise `out-of-balance`, carrying the LIST of EVERY non-balanced reconciling
44
- * item — no prioritisation, no picked winner ("missing beats failing" was a false
45
- * order that hid one of two genuinely different problems). The renderers list
46
- * every item.
47
- *
48
- * Parent: @SCN-LDG-001.
49
- */
50
- import type { RuntimeQualityCheck, Scenario, EvidenceObservation, Ledger } from "../model.js";
51
- import type { UnspecifiedFitnessRow } from "./fitnessChecks.js";
52
- import type { ScenarioReconciliationTotals, EvidenceObligationTotals, LintTally } from "./ledger.js";
53
- export declare function reconcile(scenarios: Scenario[], evidenceObservations: EvidenceObservation[], untaggedScenarios?: readonly string[],
54
- /**
55
- * The CONFIGURED ROWS the target's corpus carries no scenario for (@SCN-LNT-027, 3F-3472) — the
56
- * fourth population, minted below.
57
- *
58
- * IT DEFAULTS, WHERE THE TWO GATES BELOW DELIBERATELY DO NOT (3F-2875). A gate that defaults is a
59
- * gate a caller can forget and thereby CHANGE what the summary claims. This is a population, and
60
- * an omitted population is indistinguishable from an empty one in the only way that matters:
61
- * both mint no rows, and neither says anything about a manifest. Every caller that constructs
62
- * `Scenario[]` by hand has no manifest to read rows from, which is `untaggedScenarios`' own
63
- * argument for the default it already carries.
64
- */
65
- unspecifiedFitnessRows?: readonly UnspecifiedFitnessRow[]): Ledger;
66
- /**
67
- * The materialised test-volume totals (RMD-005) — the runtime evidence-observation kind-counts
68
- * the markdown's `### Test volume` identity line derives, carried AS DATA. The identity
69
- * `totalEvidenceObservations = onScenario + onPhantomScenario + onSuspenseScenario` holds by
70
- * construction (one shared `runtimeObservationTally` fold), so a JSON consumer reads the balance
71
- * rather than re-deriving it. The three terms are named for the SCENARIO-KIND the credit posted
72
- * to (the canon grouping): `onScenario` (a scenario's account), `onPhantomScenario` (an
73
- * invented phantom-scenario account) and `onSuspenseScenario` (the suspense scenario — includes
74
- * `broken`). This is an identity read off the fold, not a re-map of the outcome handles.
75
- */
1
+ import type { RuntimeQualityCheck, Scenario, EvidenceObservation } from "./journal.js";
2
+ import type { Ledger } from "./ledger.js";
3
+ import type { ScenarioReconciliationTotals, EvidenceObligationTotals, FitnessTally } from "./ledger.js";
4
+ import type { ScenarioCodeError, ScenarioCodePopulation } from "./scenarioCodeError.js";
5
+ export declare function reconcile(scenarios: Scenario[], evidenceObservations: EvidenceObservation[], untaggedScenarios?: readonly string[]): Ledger;
76
6
  export interface TestVolumeTotals {
77
7
  totalEvidenceObservations: number;
78
8
  onScenario: number;
79
9
  onPhantomScenario: number;
80
10
  onSuspenseScenario: number;
81
11
  }
82
- /**
83
- * The materialised static-check totals (RMD-005) — the static-check kind-counts the
84
- * markdown's `### Static checks` line derives, following the census shape exactly:
85
- * `runningStaticCheckCount` (the volume of running static checks) and `uncitedStaticCheckCount` (how many
86
- * of THOSE no `@lint` cites — a subset of the first, @SCN-LNT-033). The named count is IMPLICIT
87
- * (`running − uncited`) and is not carried (every named static check is already a reconciled
88
- * `@lint` sub-row); drawn from one population under one membership rule, it cannot go below nil.
89
- */
90
- export interface StaticCheckTotals {
91
- runningStaticCheckCount: number;
92
- uncitedStaticCheckCount: number;
12
+ export interface FitnessFunctionTotals {
13
+ runningFitnessFunctionCount: number;
14
+ uncitedFitnessFunctionCount: number;
93
15
  }
94
- /**
95
- * ONE STEP THAT IS THE RECONCILER (@SCN-USG-014) — the step, as the report names one, and which
96
- * half of the reconciler it is.
97
- *
98
- * TWO ROLES RATHER THAN A BARE LIST, because the two are different facts about a pipeline and a
99
- * consumer reading the report is owed both: one step RUNS the reconciliation these books are, and
100
- * one WRITES the step record that run reads. Collapsing them would say only that two steps were
101
- * set aside, which is the shape of a claim nobody can check.
102
- *
103
- * BESIDE `BehaviouralRunner` FOR THE REASON THAT ONE IS HERE: it is carried on the summary and the
104
- * renderer reads it off there. Neither is a tally — the question a reader has is which step was
105
- * accounted for as what, and a count answers none of it.
106
- */
107
16
  export interface ReconcilerStep {
108
- /** The step, named as every section of the report names one (`parse/stepNames`). */
109
17
  readonly step: string;
110
- /** Which half of the reconciler it is — the run itself, or the record that run reads. */
111
18
  readonly role: "reconciles" | "records";
112
19
  }
113
- /**
114
- * ONE STEP RECOGNISED AS THE RUNNER OF ONE TIER (@SCN-USG-011) — the tier the target named it
115
- * for, the runner it named, and the step GitHub itself displays it as.
116
- *
117
- * BESIDE `StaticCheckTotals` RATHER THAN IN THE PARSE THAT PRODUCES IT, for the reason that one
118
- * is here: it is carried on the summary, and the renderer reads it off there. It is not a tally —
119
- * a recognition names a step, and a count of them would answer none of the questions a reader has
120
- * about which step was recognised as what.
121
- */
122
20
  export interface BehaviouralRunner {
123
- /** The tier key the target named this runner under — `unit`, `integration`, `e2e`, `performance`. */
124
21
  readonly tier: string;
125
- /** The runner's name, as the target wrote it. */
126
22
  readonly runner: string;
127
- /** The step's identity — its `name:`, else the action it `uses:`, else the first line of its `run:`. */
128
23
  readonly step: string;
129
24
  }
130
- /**
131
- * ONE JOB OF ONE WORKFLOW THIS RUN READ (@SCN-USG-020) — where the steps came from, and how many
132
- * of them there were.
133
- *
134
- * BOTH FIGURES, because either alone is satisfiable by a reader that is wrong about the other.
135
- * `steps` says what was in front of the tool and nothing about what it did with them; `candidates`
136
- * is the figure already on the report, re-cut. It is the PAIR, per job, that lets a consumer see a
137
- * whole job pass through discovery contributing nothing and ask why.
138
- *
139
- * BESIDE `ReconcilerStep` AND `BehaviouralRunner` FOR THE REASON THOSE ARE HERE: it is carried on
140
- * the summary and the renderer reads it off there. It is not a tally of the ledger — no row exists
141
- * for a job, and the question a reader has is which files and which jobs the numbers came from.
142
- *
143
- * THE SOURCE IS OPTIONAL BECAUSE THE CORE HOLDS NO FILESYSTEM. Workflow names arrive as data from
144
- * the CLI edge (`parse/stepNames`), so a run given none for a source can name no file for its jobs
145
- * — and dropping those jobs would be the silence this axis exists to end, so the row survives
146
- * without the half of its name nobody supplied.
147
- */
25
+ export interface WrongKindEntry {
26
+ readonly entry: string;
27
+ readonly is: string;
28
+ readonly reads: string;
29
+ }
148
30
  export interface JobDiscoveryScope {
149
- /** The workflow file the job was read from, absent where the run was given no name for it. */
150
31
  readonly source?: string;
151
- /** The key the job is written under in that workflow's `jobs:` mapping. */
152
32
  readonly job: string;
153
- /** How many steps this run read from it. */
154
33
  readonly steps: number;
155
- /** How many of those steps are candidate fitness checks. */
156
34
  readonly candidates: number;
157
35
  }
158
- /**
159
- * WHAT BECAME OF EVERY STEP THIS RUN READ (@SCN-USG-018) — the population, the four dispositions,
160
- * and the total those four come to.
161
- *
162
- * BOTH TOTALS, AND `accountedFor` IS THE ONE THAT HAS TO BE CARRIED. A consumer of this structure
163
- * could add the four dispositions up for themselves, and a consumer that did would be measuring
164
- * their own arithmetic: they would agree with any four figures a reader happened to produce,
165
- * including four produced by a reader that had lost a step on the way. The sum is the READER's
166
- * answer to "how many did you account for", stated beside "how many did you read" so the two can
167
- * be compared rather than reconstructed. The identity `accountedFor === stepsRead` is the axis's
168
- * first non-negotiable — nothing seen is dropped — made checkable.
169
- *
170
- * IT IS A CARDINALITY INSTRUMENT, WHICH IS WHY NO OTHER MEMBER HERE CAN STAND IN FOR IT. Every
171
- * account beside it names steps that BECAME something — a runner, the reconciler, an exclusion, a
172
- * row on the books. A step dropped on a branch nobody enumerated becomes nothing, names nothing
173
- * and posts nothing, so there is no list it is missing from: only a count of the population
174
- * against the dispositions can see it at all.
175
- *
176
- * BESIDE `JobDiscoveryScope` FOR THE REASON THAT ONE IS HERE: it is carried on the summary and the
177
- * renderer reads it off there. It is not a fold of the ledger — three of its four dispositions
178
- * post no row by definition, so there is nothing for it to be derived from.
179
- */
180
36
  export interface StepAccounting {
181
- /** How many steps of the target's pipeline this run read. */
182
37
  readonly stepsRead: number;
183
- /** How many of them are candidate fitness checks. */
184
38
  readonly candidates: number;
185
- /** How many of them run a runner the target named. */
186
39
  readonly runners: number;
187
- /** How many of them are the reconciliation or the step record it reads. */
188
40
  readonly reconciler: number;
189
- /** How many of them the target names non-checks. */
190
41
  readonly excluded: number;
191
- /** The four above, added up by the reader that counted them. */
192
42
  readonly accountedFor: number;
193
43
  }
194
- /** The materialised summary — the totals (manifesto: "the aggregate of the trial balance"). */
195
44
  export interface Summary {
196
45
  scenarioReconciliations: ScenarioReconciliationTotals;
197
46
  evidenceObligations: EvidenceObligationTotals;
198
- /**
199
- * The Pending Items tally (@SCN-PND-011) — the count of Pending Items across the
200
- * reconciliation (one per deferred `<quality-check>pending` obligation, evidence-manifesto §11B),
201
- * SEPARATE from the scenario balanced / out-of-balance counts and the evidence-obligation counts.
202
- * A Pending Item is deferred, NOT out-of-balance, so it is NEVER folded into
203
- * `OUT_OF_BALANCE_OUTCOMES` (never a leaf of its own, at any leaf count — the constraint is
204
- * categorical, not arithmetic) nor into `evidenceObligations` — its own tally.
205
- * Counts Pending ITEMS, not scenarios-carrying-pending (mirroring the out-of-balance
206
- * decomposition, which counts obligations, not scenarios). Always present (a pure balance derive,
207
- * like `lint`); reads 0 when no scenario raises a pending obligation.
208
- */
209
47
  pending: number;
210
- /** The runtime test-volume kind-counts (RMD-005) — present when the evidenceObservations read is threaded. */
211
48
  testVolume?: TestVolumeTotals;
212
- /**
213
- * The re-homed raw per-quality-check evidence-observation totals (@SCN-RMD-003, 3F-2102) — a
214
- * materialised headline the Ledger folds (`runtimeObservationTally`), testVolume-adjacent. It
215
- * RE-HOMES onto `summary` the raw totals the retired `evidenceObservations` section used to
216
- * carry: a legitimate aggregate headline (per the done-criterion's fold-vs-store test — three
217
- * derived totals, not a parallel store of the posted credits). Present exactly when `testVolume`
218
- * is (both gated on the observation read being threaded).
219
- */
220
49
  rawByRuntimeQualityCheck?: Record<RuntimeQualityCheck, number>;
221
- /** The static-check kind-counts (RMD-005) — present when the guard read is threaded. */
222
- staticChecks?: StaticCheckTotals;
223
- /** The static-only lint evidenceObligation tally (RMD-005) — always present (a pure balance derive). */
224
- lint: LintTally;
225
- /**
226
- * The scenarios ON the fitness axis that no configured row NAMES (@SCN-LNT-020) — the corpus's
227
- * half-converted checks, in corpus order.
228
- *
229
- * NOT A LEDGER FOLD, and it says so by being the one member here that is not. It is a fact about
230
- * the CORPUS — what a scenario said about itself and what no row said back — which the Ledger
231
- * cannot hold: such a scenario raises nothing, so nothing about it reaches a row except the
232
- * degenerate `both-missing` item its emptiness earns, and that item's own gloss is about a
233
- * scenario carrying no `@SCN`. It rides beside `staticChecks` for the reason that one does: the
234
- * report's `### Static checks` section is where a half-entry the run saw and nothing owed is
235
- * named, and this is that same class of half-entry on the other side of the books.
236
- *
237
- * PRESENT ONLY WHEN NON-EMPTY, so a target that has converted nothing — every target today —
238
- * renders and serialises exactly as it did before.
239
- */
240
- unconfiguredFitnessScenarios?: readonly string[];
241
- /**
242
- * THE STEPS RECOGNISED AS BEHAVIOURAL RUNNERS (@SCN-USG-011), in the order the pipeline runs
243
- * them — what the target named, found where its pipeline invokes it.
244
- *
245
- * NOT A LEDGER FOLD, and it rides here for the reason `unconfiguredFitnessScenarios` does: it is
246
- * a fact about what the reader SAW, not about anything the books hold. A runner raises no
247
- * obligation and posts no credit — it is the disposition a step gets INSTEAD of reaching the
248
- * ledger — so there is no row for it to be derived from and it has to be carried.
249
- *
250
- * PRESENT ONLY WHEN NON-EMPTY, so a target that has named no runners renders and serialises
251
- * exactly as it did before.
252
- */
50
+ fitnessFunctions?: FitnessFunctionTotals;
51
+ fitness: FitnessTally;
253
52
  behaviouralRunners?: readonly BehaviouralRunner[];
254
- /**
255
- * WHAT THE TARGET SAID ABOUT EACH TIER (@SCN-USG-016) — `specController.runners` as written: the
256
- * runner's name where it named one, and `null` for a tier it says it has none. A tier the block
257
- * OMITS is absent from this record, and that third state is the whole reason the field exists.
258
- *
259
- * NOT `behaviouralRunners`, which is the other half of the same subject and is easy to mistake
260
- * for it. That one is what a run RECOGNISED — tier, runner and the step it was found at, a fact
261
- * about the pipeline. This one is what the target SAID, a fact about the manifest, and the two
262
- * disagree whenever a named runner runs at no step this reader could see.
263
- *
264
- * PRESENT ONLY WHEN NON-EMPTY, so a target that has named no runners renders and serialises
265
- * byte-identically to before.
266
- */
267
53
  runnerTiers?: Readonly<Record<string, string | null>>;
268
- /**
269
- * THE RUNNER BLOCK'S KEYS THAT ARE NOT ONE OF THE FOUR CANON TIERS (@SCN-USG-019) — what the
270
- * target wrote that this tool does not recognise, in the order the manifest wrote it.
271
- *
272
- * IT CARRIES A NON-EVENT, WHICH IS WHY IT HAS TO BE CARRIED AT ALL. An unrecognised key
273
- * recognises no step, excludes no step and posts no row, so nothing anywhere else in this
274
- * structure differs between a manifest that wrote it and one that did not. Without this field
275
- * the consumer's entry is simply gone — and a consumer who wrote something and believes it took
276
- * effect is the same fault as a step dropped in silence, reached from the configuration side.
277
- *
278
- * NOT `runnerTiers`, which is the block's other half: that one is what the target said about a
279
- * tier that EXISTS, and every entry in it can be run against a pipeline. Nothing in here can be.
280
- *
281
- * PRESENT ONLY WHEN NON-EMPTY, so a target whose block is keyed correctly — every target today —
282
- * renders and serialises byte-identically to before.
283
- */
284
54
  unrecognisedRunnerKeys?: readonly string[];
285
- /**
286
- * THE specController.* KEYS THIS READER HAS RETIRED (@SCN-USG-021) — the top-level keys a
287
- * manifest carries that this tool no longer reads, in the order the manifest wrote them.
288
- *
289
- * NOT unrecognisedRunnerKeys, which names a key the target INVENTED. This one names a key
290
- * the target wrote CORRECTLY, under a name this reader once read and has since stopped
291
- * reading — `checkRegistry` first. Its entries reach no candidate, resolve no citation, and
292
- * are simply not there for anything downstream to find; naming the key is the only way a
293
- * consumer who wrote it in good faith learns that none of it is taking effect.
294
- *
295
- * AND A BAR A CONFIGURED ROW STILL CARRIES (@SCN-LNT-035), named with its row —
296
- * `fitnessChecks[SCN-XXX-NNN].atLeast` / `.atMost` — in the same account, in manifest order.
297
- * The row itself still reaches the books, credited by its step's outcome; only the bar is unread.
298
- *
299
- * PRESENT ONLY WHEN NON-EMPTY, so a target that carries no retired key — every target today
300
- * that has never written one — renders and serialises byte-identically to before.
301
- */
302
- retiredKeys?: readonly string[];
303
- /**
304
- * THE STEPS THE TARGET NAMES NON-CHECKS (@SCN-USG-015) — `specController.notChecks`' entries
305
- * that named a step of the pipeline this run read, each as the consumer wrote it.
306
- *
307
- * IT CARRIES A DISPOSITION, WHICH IS WHY IT IS CARRIED AT ALL. An excluded step reaches no
308
- * observer and posts no row, so nothing else in this structure differs between a run that
309
- * excluded it and a run that never saw it — and those are the two things a reader most needs
310
- * told apart. A step that simply vanished on the consumer's own instruction is the silence this
311
- * axis exists to end, arriving with their signature on it; naming it is what makes the exclusion
312
- * a disposition rather than a drop, and correctable in one line of their own configuration.
313
- *
314
- * PRESENT ONLY WHEN NON-EMPTY, so a target that names no non-checks — every target today —
315
- * renders and serialises byte-identically to before.
316
- */
55
+ wrongKindConfiguration?: readonly WrongKindEntry[];
56
+ unknownConfigurationKeys?: readonly string[];
317
57
  excludedSteps?: readonly string[];
318
- /**
319
- * THE STEPS THAT ARE THE RECONCILER (@SCN-USG-014) — the step running this reconciliation and
320
- * the step writing the record it reads, in the order the pipeline runs them.
321
- *
322
- * NOT `excludedSteps`, AND THE DIFFERENCE IS THE WHOLE REASON THIS IS A SEPARATE MEMBER. That
323
- * one is a list the consumer wrote about their own pipeline; this one is nobody's list. A
324
- * `notChecks` pair naming these two steps produces the same books, and a report folding them
325
- * together would credit a consumer's configuration for an exclusion that holds over a manifest
326
- * saying nothing — which is every consumer's first run.
327
- *
328
- * PRESENT ONLY WHEN NON-EMPTY, so a target whose pipeline does not run this tool renders and
329
- * serialises byte-identically to before.
330
- */
331
58
  reconcilerSteps?: readonly ReconcilerStep[];
332
- /**
333
- * THE `notChecks` ENTRIES THAT NAMED NO STEP (@SCN-USG-015) — in the order the manifest wrote
334
- * them, and the other half of a total partition with `excludedSteps`.
335
- *
336
- * A LINE THAT MATCHES NOTHING IS A STALE EXCLUSION. The consumer renamed a step and the entry
337
- * now hides nothing, or is about to hide the wrong thing the next time a step is renamed onto
338
- * it. Either way it is a fact about their manifest that only this run can see, and dropping it
339
- * is the same fault as dropping a step: something was written, it took no effect, and nothing
340
- * anywhere says so.
341
- *
342
- * NOT `excludedSteps`, and the two are easy to mistake for one another. That one names a step
343
- * this run READ; every entry in here named none, so nothing in the pipeline corresponds to it.
344
- *
345
- * PRESENT ONLY WHEN NON-EMPTY, for the reason its twin is.
346
- */
347
59
  unmatchedNotChecks?: readonly string[];
348
- /**
349
- * THE SCOPE THIS RUN RANGED OVER (@SCN-USG-020) — one entry per job of every workflow `--ci`
350
- * resolved, sorted by workflow and then by job.
351
- *
352
- * IT CARRIES THE PROVENANCE OF EVERY OTHER FIGURE ON THE REPORT, which is why it has to be
353
- * carried at all. The census above states how many checks ran; nothing anywhere states how many
354
- * jobs, in how many files, that number came from — so a consumer whose second job holds three
355
- * checks reads exactly what a consumer with three checks in one job reads, and a consumer
356
- * pointed at the wrong file has nothing that says so. The tool makes no judgement about whether
357
- * a scope is the right one; stating it is the answer.
358
- *
359
- * NOT THE ACCOUNTING IDENTITY, which is a separate claim over the same steps (@SCN-USG-018).
360
- * That one asserts the dispositions sum to the steps read, so nothing was dropped; this one
361
- * asserts WHERE the steps came from. A reader satisfies either alone.
362
- *
363
- * PRESENT ONLY WHEN NON-EMPTY, so a run that read no CI configuration at all renders and
364
- * serialises byte-identically to before.
365
- */
366
60
  discoveryScope?: readonly JobDiscoveryScope[];
367
- /**
368
- * WHAT BECAME OF EVERY STEP THIS RUN READ (@SCN-USG-018) — the population, the four dispositions
369
- * and the total they come to, so the axis's first non-negotiable is a figure a reader can check
370
- * rather than a sentence they have to take on trust.
371
- *
372
- * IT IS THE ONLY MEMBER HERE THAT CAN SEE AN ABSENCE. `behaviouralRunners`, `reconcilerSteps`,
373
- * `excludedSteps` and the static-check census each name what a step BECAME; a step dropped on a
374
- * branch nobody enumerated became nothing, so it is missing from no list and every one of them
375
- * reads exactly as it would have read had the step never existed. Counting the population
376
- * against the dispositions is what makes the drop visible, and it is the whole reason this
377
- * member is a set of counts rather than another list of steps.
378
- *
379
- * NOT `discoveryScope`, which counts the same population for a different question. That one
380
- * asserts WHERE the steps came from — which files, which jobs; this one asserts that none of
381
- * them went missing between being read and being accounted for. A reader satisfies either alone.
382
- *
383
- * PRESENT ONLY WHEN THE RUN READ A STEP, so a run handed no CI configuration renders and
384
- * serialises byte-identically to before.
385
- */
386
61
  stepAccounting?: StepAccounting;
387
62
  }
388
- /**
389
- * THE EVIDENCE RECONCILIATION — canon's Layer 1. `summary` carries the totals, `ledger` the detail.
390
- *
391
- * NOT the report. The run's PROVENANCE (when, where, which SHA) and the presentation metadata
392
- * (feature titles) are the report's framing and live on the render payload, not here: canon is
393
- * explicit that rendering this concept into various formats PRODUCES the report, which "draws its
394
- * substance from it". "Ledger" is a REJECTED ALIAS for this concept — the ledger is the grid
395
- * WITHIN it, which is why both fields are named rather than the whole thing collapsing to one.
396
- */
397
63
  export interface EvidenceReconciliation {
398
64
  summary: Summary;
399
65
  ledger: Ledger;
66
+ scenarioCodeErrors?: readonly ScenarioCodeError[];
67
+ scenarioCodePopulation?: ScenarioCodePopulation;
400
68
  }
401
- /**
402
- * Materialise the summary totals from the balance — the aggregate the markdown's trial-balance
403
- * table derives, carried AS DATA so a later render-from-saved-JSON rebuilds it with zero
404
- * computation (the MATERIALISE ruling). THIN COMPOSITION (3F-2000): the LEDGER-PURE totals
405
- * (`scenarioReconciliations`, `evidenceObligations`, `pending`, `lint`) come from `ledgerTally`
406
- * — the Ledger owns its own totals ("the summary is its totals") — and are MERGED here with the
407
- * census pass-throughs (`testVolume`, `staticChecks`), which are NOT Ledger-pure. The keys are
408
- * assembled in DOCUMENT ORDER (…, testVolume?, staticChecks?, lint) so the JSON stays
409
- * byte-identical.
410
- */
411
- export declare function summaryOf(ledger: Ledger, withRuntimeObservations: boolean, withStaticChecks: boolean): Summary;
412
- /**
413
- * BUILD the Evidence Reconciliation from the journal — THE FACTORY (3F-2233).
414
- *
415
- * Journal inputs in, whole concept out: the fold posts every entry into the Ledger, and the tally
416
- * totals it. They are ONE act, not two stages a caller sequences — which is the point. While
417
- * `reconcile()` and `buildSummary()` were separate, an adapter held a Ledger and derived its own
418
- * totals, so "the procedure can sum the wrong rows" (`why-ddd-for-spec-controller.md`) was a
419
- * REACHABLE state. Here there is no such seam: you cannot obtain a summary except from the concept
420
- * that owns the rows it counts.
421
- *
422
- * The two flags are GATES, not data — they state whether the runtime-observation and static-check
423
- * axes are in play for this run; the counts themselves are always folded from the Ledger.
424
- *
425
- * WHY THE TRAILING THREE ARE REQUIRED AND CARRY NO DEFAULTS (3F-2875). A gate that defaults to
426
- * `false` is a gate a caller can forget to state, and forgetting it CHANGES THE REPORT — the
427
- * summary then claims neither axis is in play, silently and plausibly. That is not a hypothetical:
428
- * when the defaults were removed, eleven call sites turned out to have been leaning on them. Every
429
- * one wanted exactly what it had been getting, so nothing moved; what changed is that each now says
430
- * so. A default is the wrong shape for an argument whose omission is indistinguishable from a
431
- * deliberate `false`.
432
- */
433
- export declare function evidenceReconciliationOf(scenarios: Scenario[], evidenceObservations: EvidenceObservation[], untaggedScenarios: readonly string[], withRuntimeObservations: boolean, withStaticChecks: boolean,
434
- /**
435
- * The CONFIGURED ROWS the corpus carries no scenario for (@SCN-LNT-027, 3F-3472) — passed
436
- * through to `reconcile`, which mints one row apiece. It defaults for the reason given there, and
437
- * that reason is NOT the trailing three's: a population omitted mints nothing and claims nothing,
438
- * where a gate omitted silently changes what the summary says is in play.
439
- */
440
- unspecifiedFitnessRows?: readonly UnspecifiedFitnessRow[]): EvidenceReconciliation;
69
+ export declare function summaryOf(ledger: Ledger, withRuntimeObservations: boolean, withFitnessFunctions: boolean): Summary;
70
+ export declare function evidenceReconciliationOf(scenarios: Scenario[], evidenceObservations: EvidenceObservation[], untaggedScenarios: readonly string[], withRuntimeObservations: boolean, withFitnessFunctions: boolean): EvidenceReconciliation;
441
71
  //# sourceMappingURL=evidenceReconciliation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evidenceReconciliation.d.ts","sourceRoot":"","sources":["../../src/domain/evidenceReconciliation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evidenceReconciliation.d.ts","sourceRoot":"","sources":["../../src/domain/evidenceReconciliation.ts"],"names":[],"mappings":"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"}