@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
package/README.md CHANGED
@@ -34,11 +34,11 @@ const ledger = reconcile(scenarios, observed);
34
34
  isBalanced(ledger); // false while any scenario names evidence that did not arrive
35
35
  ```
36
36
 
37
- `parseScenarios` reads the `@SCN` code and the quality-check tags off each scenario and turns them into the **obligations** it names. `parseVitestEvidenceObservations` turns a test report into the **observations** that posted back, each citing the `@SCN` it proves. `reconcile` puts the two sides against each other and answers per scenario. Everything else on the barrel is a variation on those three moves.
37
+ `parseScenarios` reads the `@SCN` code and the quality-check tags off each scenario and turns them into the **obligations** it names. `parseVitestEvidenceObservations` turns a test report into the **observations** that posted back, each citing the `@SCN` it claims. `reconcile` puts the two sides against each other and answers per scenario. Everything else on the barrel is a variation on those three moves.
38
38
 
39
39
  ## What is on the barrel
40
40
 
41
- - **Parse** — `parseScenarios` and its untagged/prose-only companions; `parseVitestEvidenceObservations`, `parseCucumberEvidenceObservations`; the readers for static checks and for what a pipeline's steps actually ran.
41
+ - **Parse** — `parseScenarios`, `parseUntaggedScenarios` and `countScnOccurrences`; `parseVitestEvidenceObservations`, `parseCucumberEvidenceObservations`; the readers for fitness functions and for what a pipeline's steps actually ran.
42
42
  - **Reconcile** — `reconcile` for the ledger itself, `evidenceReconciliationOf` for the ledger plus its summary, and `evidenceReconciliationFromSources` for the whole composition over sources you have already read.
43
43
  - **Ask the ledger** — `isBalanced`, `hasPendingItems`, `hasBrokenEvidence`, `hasNothingToReconcile`. These are the four questions a caller decides on: the CLI's own balanced / out-of-balance / unsound / pending-under-strict / nothing-to-reconcile verdicts are built out of these four and nothing else.
44
44
  - **Render** — `renderMarkdown`, `renderJson`, `renderReport`, `renderReportFromJson`, and `assembleRenderInput` if you want the payload rather than a string.
@@ -48,7 +48,7 @@ The types these functions take and return are exported alongside them, so a cons
48
48
 
49
49
  ## The surface is a contract
50
50
 
51
- This barrel is the whole public surface — the package publishes exactly one entrypoint, and what that entrypoint exports is the contract you build on. **Nothing checks it for drift.** A symbol quietly added to the barrel, or quietly dropped from it, reds no build today: the surface is not held against a written-down list, and a generated API report will be adopted at `1.0`, where the compatibility promise comes back. Until then: the package is at a `0.x` version and makes no compatibility promise — see [`doc/compatibility.md`](https://github.com/3f-consulting/spec-controller/blob/main/doc/compatibility.md). Pin an exact version.
51
+ This barrel is the whole public surface — the package publishes exactly one entrypoint, and what that entrypoint exports is the contract you build on. **Nothing checks it for drift.** A symbol quietly added to the barrel, or quietly dropped from it, reds no build today: the surface is not held against a written-down list, and a generated API report will be adopted at `1.0`, where the compatibility promise comes back. Before `1.0`, the package is at a `0.x` version and makes no compatibility promise — see [`doc/compatibility.md`](https://github.com/3f-consulting/spec-controller/blob/main/doc/compatibility.md). Pin an exact version.
52
52
 
53
53
  Source, issues and history: [github.com/3f-consulting/spec-controller](https://github.com/3f-consulting/spec-controller).
54
54
 
@@ -1,56 +1,17 @@
1
- /**
2
- * THE RECONCILE COMPOSITION — a target's already-read sources reconciled into its Evidence
3
- * Reconciliation. The ONE entry point core's `.` barrel gains at 3F-3086, and the last step of
4
- * moving the composition off the app's ingest edge (3F-3087, 3F-3088).
5
- *
6
- * WHY IT IS ONE FUNCTION AND NOT A SURFACE. `ingestQualityChecks.ts` is a published module, and it
7
- * reached nine core symbols through the unpublished `./internal` subpath to assemble this — which
8
- * is why an installed `spec-controller balance --help` threw ERR_PACKAGE_PATH_NOT_EXPORTED while
9
- * every gate in the workspace stayed green. Promoting those nine onto the public barrel would fix
10
- * the crash by freezing exactly the surface `3F-2837` un-published, and the registry-home question
11
- * (increment D) still governs their shape. So the CALLERS move to core's side of the boundary
12
- * instead, and the app reaches the whole composition through this one membership decision
13
- * (`3F-2804`). Nothing here is re-exported: the nine stay internal.
14
- *
15
- * WHY THE ARGUMENTS ARE DATA AND NOT READERS. Everything below is already in memory by the time
16
- * the edge calls this — the feature bytes, the manifest object, the CI bytes, the CI run's own
17
- * record, the runtime observations. Handing a reader for any of them would move I/O into the
18
- * engine wearing a callback, and `lint:boundaries`' `core-imports-io` rule reds over exactly that
19
- * (@SCN-EPG-001's `io-import` arm until 3F-3437).
20
- *
21
- * THE TARGET ROOT DOES NOT CROSS. It is resolved at the edge and every remaining use of it is
22
- * there: relativising the runtime observations before they arrive.
23
- * Threading it in as well would put `node:child_process` and `process.cwd()`'s answer inside the
24
- * engine to be read by nothing.
25
- *
26
- * THE INPUT IS AN INLINE OBJECT TYPE, deliberately. A named exported interface would be a second
27
- * symbol on the public v1 surface for a shape only this function takes — one entry point means one
28
- * name. Nothing has reconciled that surface against a written-down list since 3F-3449, so the
29
- * restraint is a judgement rather than something a guard would catch.
30
- */
31
1
  import type { EvidenceObservation } from "../model.js";
32
2
  import type { PackageJsonScripts } from "../parse/checkScriptsRunInCI.js";
33
3
  import { type CiStepRecord } from "../parse/ciStepRecord.js";
34
4
  import type { EvidenceReconciliation } from "./renderInput.js";
35
- /** A target's manifest as this composition reads it — its scripts, and its `specController` block. */
36
5
  type TargetManifest = PackageJsonScripts & {
37
6
  specController?: {
38
7
  deferralTags?: unknown;
39
- staticChecks?: unknown;
40
- fitnessChecks?: unknown;
41
8
  runners?: unknown;
42
9
  notChecks?: unknown;
43
10
  };
44
11
  };
45
- /**
46
- * EVERYTHING A `balance` RUN IS HANDED — the target's bytes, its manifest, and the two things the
47
- * application layer owns rather than the engine. Named rather than written inline on the function
48
- * below, so the function stays under the `max-lines-per-function` ceiling by being smaller rather
49
- * than by an exception, and so the contract a caller writes against has somewhere to be read. Each
50
- * member is documented on the function's own `@param` list, where it has always been.
51
- */
52
12
  export interface EvidenceReconciliationSources {
53
13
  featureSources: readonly string[];
14
+ featureFiles?: readonly FeatureFileHeader[];
54
15
  untaggedScenarios: readonly string[];
55
16
  packageJson: TargetManifest;
56
17
  ciSources: readonly string[];
@@ -60,6 +21,10 @@ export interface EvidenceReconciliationSources {
60
21
  deferralTags: readonly string[];
61
22
  ciStepRecord?: CiStepRecord;
62
23
  }
24
+ interface FeatureFileHeader {
25
+ readonly slug: string;
26
+ readonly featureCode: string | null;
27
+ }
63
28
  export declare function evidenceReconciliationFromSources(input: EvidenceReconciliationSources): EvidenceReconciliation;
64
29
  export {};
65
30
  //# sourceMappingURL=evidenceReconciliationFromSources.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evidenceReconciliationFromSources.d.ts","sourceRoot":"","sources":["../../src/assemble/evidenceReconciliationFromSources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAkB,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAiBlF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/D,sGAAsG;AACtG,KAAK,cAAc,GAAG,kBAAkB,GAAG;IACzC,cAAc,CAAC,EAAE;QACf,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;CACH,CAAC;AA4EF;;;;;;GAMG;AACH,MAAM,WAAW,6BAA6B;IAC5C,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,WAAW,EAAE,cAAc,CAAC;IAC5B,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACpD,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAqGD,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,6BAA6B,GACnC,sBAAsB,CA4CxB"}
1
+ {"version":3,"file":"evidenceReconciliationFromSources.d.ts","sourceRoot":"","sources":["../../src/assemble/evidenceReconciliationFromSources.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAkB,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAgBlF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/D,KAAK,cAAc,GAAG,kBAAkB,GAAG;IACzC,cAAc,CAAC,EAAE;QACf,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;CACH,CAAC;AA4BF,MAAM,WAAW,6BAA6B;IAC5C,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,YAAY,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC5C,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,WAAW,EAAE,cAAc,CAAC;IAC5B,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACpD,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,UAAU,iBAAiB;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAkCD,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,6BAA6B,GACnC,sBAAsB,CAuBxB"}
@@ -1,126 +1,26 @@
1
- /**
2
- * THE RECONCILE COMPOSITION — a target's already-read sources reconciled into its Evidence
3
- * Reconciliation. The ONE entry point core's `.` barrel gains at 3F-3086, and the last step of
4
- * moving the composition off the app's ingest edge (3F-3087, 3F-3088).
5
- *
6
- * WHY IT IS ONE FUNCTION AND NOT A SURFACE. `ingestQualityChecks.ts` is a published module, and it
7
- * reached nine core symbols through the unpublished `./internal` subpath to assemble this — which
8
- * is why an installed `spec-controller balance --help` threw ERR_PACKAGE_PATH_NOT_EXPORTED while
9
- * every gate in the workspace stayed green. Promoting those nine onto the public barrel would fix
10
- * the crash by freezing exactly the surface `3F-2837` un-published, and the registry-home question
11
- * (increment D) still governs their shape. So the CALLERS move to core's side of the boundary
12
- * instead, and the app reaches the whole composition through this one membership decision
13
- * (`3F-2804`). Nothing here is re-exported: the nine stay internal.
14
- *
15
- * WHY THE ARGUMENTS ARE DATA AND NOT READERS. Everything below is already in memory by the time
16
- * the edge calls this — the feature bytes, the manifest object, the CI bytes, the CI run's own
17
- * record, the runtime observations. Handing a reader for any of them would move I/O into the
18
- * engine wearing a callback, and `lint:boundaries`' `core-imports-io` rule reds over exactly that
19
- * (@SCN-EPG-001's `io-import` arm until 3F-3437).
20
- *
21
- * THE TARGET ROOT DOES NOT CROSS. It is resolved at the edge and every remaining use of it is
22
- * there: relativising the runtime observations before they arrive.
23
- * Threading it in as well would put `node:child_process` and `process.cwd()`'s answer inside the
24
- * engine to be read by nothing.
25
- *
26
- * THE INPUT IS AN INLINE OBJECT TYPE, deliberately. A named exported interface would be a second
27
- * symbol on the public v1 surface for a shape only this function takes — one entry point means one
28
- * name. Nothing has reconciled that surface against a written-down list since 3F-3449, so the
29
- * restraint is a judgement rather than something a guard would catch.
30
- */
31
1
  import { evidenceReconciliationOf } from "../domain/evidenceReconciliation.js";
32
- import { bareTerm } from "../lib/bareTerm.js";
33
2
  import { ciStepRecordCredits } from "../parse/ciStepRecord.js";
34
- import { recognisedRunners, runningStaticChecks } from "../parse/runningStaticChecks.js";
3
+ import { recognisedRunners, runningFitnessFunctions } from "../parse/runningFitnessFunctions.js";
35
4
  import { readTargetCorpus } from "../parse/targetCorpus.js";
36
5
  import { stepExclusions } from "../parse/stepExclusions.js";
37
6
  import { discoveryScope } from "../parse/discoveryScope.js";
38
7
  import { stepAccounting } from "../parse/stepAccounting.js";
8
+ import { scenarioCodeErrorsOf, scenarioCodePopulationOf } from "../parse/scenarioCodeErrors.js";
39
9
  import { reconcilerSteps } from "../parse/reconcilerSteps.js";
40
- import { resolveDeferralTags, resolveNotChecks, resolveRetiredKeys, resolveRunners, resolveFitnessChecks, } from "../parse/targetManifest.js";
41
- /**
42
- * THE THREE OBSERVATION STREAMS a `balance` run reconciles, in one place — a fourth, the
43
- * measurements, left with the measured axis (3F-3516).
44
- *
45
- * ITS OWN FUNCTION, extracted when the consumer's exclusion seam (@SCN-USG-015) took the
46
- * composition past the `max-lines-per-function` ceiling — `withUnconfiguredFitnessScenarios`'s
47
- * precedent, and the same seam: the streams are one idea with a name, and what is left above is
48
- * the composition that reads a target and hands them to the factory. Nothing about any of them
49
- * changed in the move.
50
- */
51
- function observationStreams(input, corpus, packageJson, fitnessChecks, runnerTiers, isExcluded) {
52
- // WHICH ROWS THE RUN'S OWN RECORD ANSWERS FOR, so the derivation reader does not answer them
53
- // again (@SCN-LNT-021, @SCN-LNT-030; forced by @SCN-USG-004). A converted check
54
- // used to be one no discovery reader could SEE — its command is not a script of the manifest, so
55
- // no prefix reached it — and that accident is what kept one check from being observed twice.
56
- // Under the inverted membership rule every step is discovered, so the guarantee has to be a
57
- // mechanism: where a run is handed its own record, the CONFIGURED rows are answered by that
58
- // record, and derivation answers the residue — the steps citing no configured row at all.
59
- //
60
- // IT IS THE ROWS AND NOT THE ENTRIES, because the record answers for a row it holds NO entry for
61
- // too: that is broken evidence naming the row (@SCN-LNT-027), and a derivation credit landing
62
- // beside it would soften the loudest thing this axis can say into an ordinary green.
63
- //
64
- // NOT A FIFTH DISPOSITION AND NOT A DROP. The step is on the books either way; what this decides
65
- // is WHICH stream credits it, and the streams differ in what they know — the record carries what
66
- // the step DID, and a derivation credit carries only that it is wired in. Two credits on one row
67
- // let the poorer one win, which is measurable: a `continue-on-error` step the record says failed
68
- // reconciles `watermelon` rather than `failing` when both are posted.
69
- const answeredByTheRecord = input.ciStepRecord === undefined ? new Set() : new Set(fitnessChecks.keys());
10
+ import { configurationNotRead, resolveDeferralTags, resolveNotChecks, resolveRunners, } from "../parse/targetManifest.js";
11
+ function observationStreams(input, corpus, packageJson, runnerTiers, isExcluded) {
12
+ const recordAnswersCitingSteps = input.ciStepRecord !== undefined;
70
13
  return [
71
14
  ...input.runtimeObservations,
72
- ...checkObservations(corpus, input.ciSources, packageJson, runnerTiers, isExcluded, answeredByTheRecord),
73
- // THE CONVERTED CHECKS' CREDITS (@SCN-LNT-021, @SCN-LNT-028) — the CI RUN'S OWN RECORD, the
74
- // observation side, beside the workflow FILE the two config-reading observers above already
75
- // read. Two documents and two questions: the file says a check is wired into this pipeline
76
- // and which row its step cites, the record says what that step DID on this run. Neither can
77
- // be got from the other's document, which is why both are read and neither replaces the
78
- // other.
79
- //
80
- // THEY JOIN THE STATIC STREAM BESIDE THE TWO CONFIG-READING OBSERVERS RATHER THAN REPLACING
81
- // EITHER: a target mid-conversion runs both kinds at once, and a converted check is simply
82
- // one no script-handle observer can see — it is never discovered, so nothing double-observes
83
- // it. The rows are the SAME reading the obligations were raised from, taken from `corpus`'s
84
- // own registry, so a credit can never cite a characteristic the debit side never owed.
85
- //
86
- // THE OPTIONALITY IS PASSED THROUGH RATHER THAN FLATTENED (@SCN-LNT-027). A run handed NO
87
- // record is not a run handed a record carrying nothing, and those are opposite facts. The
88
- // first is a consumer whose pipeline dumps no record, or a run nobody recorded: its rows
89
- // reconcile missing and the run is out of balance. The second is a run that happened and
90
- // named not one of these steps, which is every configured check broken. The reader tells
91
- // them apart; nothing here may.
92
- ...ciStepRecordCredits(input.ciStepRecord, fitnessChecks),
15
+ ...checkObservations(corpus, input.ciSources, packageJson, runnerTiers, isExcluded, recordAnswersCitingSteps),
16
+ ...ciStepRecordCredits(input.ciStepRecord),
93
17
  ];
94
18
  }
95
19
  function pipelineReadings(input) {
96
20
  const { packageJson } = input;
97
- // THE CONSUMER'S OWN EXCLUSIONS, RESOLVED ONCE (@SCN-USG-015), and both things this run does
98
- // with them come off that one reading: the seam the discovery reader is asked through, and the
99
- // account the report carries. Two resolutions would be free to describe two different manifests
100
- // in one report — a step excluded from the books and named nowhere, or named as excluded while
101
- // still on them, and each of those is a report that lies in a different direction.
102
21
  const exclusions = stepExclusions(input.ciSources, input.ciSourceNames ?? [], resolveNotChecks(packageJson));
103
- // THE TARGET'S OWN RUNNERS, RESOLVED ONCE (@SCN-USG-004, @SCN-USG-011), for the reason the two
104
- // readings beside them are: what a run does with them is the membership rule the discovery
105
- // observer asks AND the account the report carries, and two resolutions would be free to name a
106
- // step the unit runner in one section while the books posted it as an uncited check in another.
107
22
  const runners = resolveRunners(packageJson);
108
- // THE RECONCILER'S OWN STEPS (@SCN-USG-014), read off the same bytes and the same manifest, and
109
- // read whatever the target configured — it is the one exclusion no consumer writes, and the one
110
- // that has to hold over a manifest saying nothing. Like the exclusions above, both things this
111
- // run does with it come off ONE reading: the seam discovery is asked through, and the account
112
- // the report carries.
113
23
  const reconciler = reconcilerSteps(input.ciSources, input.ciSourceNames ?? [], input.reconcilerInvocation ?? "", packageJson);
114
- // THE TWO EXCLUSIONS, COMPOSED HERE AND NOWHERE ELSE. Discovery needs one answer per step, and
115
- // the precedence between "the reconciler" and "the consumer said so" is the report's business
116
- // rather than an observer's: both take the step out of the books, and each says so in its own
117
- // section. The reconciler is asked first because it holds whatever the manifest says. The
118
- // runner is NOT one of them: it is the membership rule itself and the observer applies it, so
119
- // folding it in here would put the same question in two places.
120
- //
121
- // ONE COMPOSITION, TWO READERS (@SCN-USG-020). The observer posts a check for every step this
122
- // leaves in, and the scope census counts them per job — so a second composition would let the
123
- // report state a number of candidates for a job that the books beneath it never posted.
124
24
  return {
125
25
  runners,
126
26
  exclusions,
@@ -130,88 +30,35 @@ function pipelineReadings(input) {
130
30
  }
131
31
  export function evidenceReconciliationFromSources(input) {
132
32
  const { packageJson } = input;
133
- // ONE READING OF THE CONFIGURED ROWS, shared by both sides of this axis. The DEBIT reads them for
134
- // the characteristic a converted scenario owes and the CREDIT for the characteristic its reported
135
- // scenario answers, and two resolutions would be free to disagree about a manifest neither of
136
- // them wrote — the same guarantee `readTargetCorpus` composes its three readings for.
137
- const fitnessChecks = resolveFitnessChecks(packageJson);
138
- const corpus = readTargetCorpus(input.featureSources, resolveDeferralTags(packageJson, input.deferralTags), fitnessChecks);
139
- // WHAT THE TARGET SAID ABOUT ITS OWN PIPELINE, read once (see `pipelineReadings`).
33
+ const corpus = readTargetCorpus(input.featureSources, resolveDeferralTags(packageJson, input.deferralTags));
140
34
  const { runners, exclusions, reconciler, isExcluded } = pipelineReadings(input);
141
- // The feature corpus is BOTH halves: the @SCN-tagged scenarios AND the untagged ones
142
- // (@SCN-LDG-021). An untagged scenario cannot be linked to an observation, so it reconciles
143
- // `no-scn-code` on its own out-of-balance row — never silently dropped from the debit side.
144
- // THE CONCEPT, BUILT BY ITS OWN FACTORY (3F-2233) — nobody assembles a Ledger and leaves someone
145
- // downstream to total it. The two axis GATES are always on for a `balance` run: both the
146
- // runtime-observation and the static-check streams are threaded.
147
- const reconciliation = evidenceReconciliationOf(corpus.scenarios, observationStreams(input, corpus, packageJson, fitnessChecks, runners.tiers, isExcluded), [...input.untaggedScenarios], true, true,
148
- // THE FOURTH POPULATION (@SCN-LNT-027, 3F-3472) — the configured rows this corpus carries no
149
- // scenario for, taken from the SAME corpus reading the obligations were raised from. A row
150
- // with no scenario raises nothing on the corpus side, so without this the check it declares
151
- // reaches the books nowhere and the run reads balanced over it.
152
- corpus.unspecifiedFitnessRows);
153
- return withReaderAccounts(reconciliation, corpus, input, packageJson, runners, exclusions, reconciler, isExcluded);
35
+ const reconciliation = evidenceReconciliationOf(corpus.scenarios, observationStreams(input, corpus, packageJson, runners.tiers, isExcluded), [...input.untaggedScenarios], true, true);
36
+ return withScenarioCodeErrors(withConfigurationAccount(withReaderAccounts(reconciliation, corpus, input, packageJson, runners, exclusions, reconciler, isExcluded), packageJson), input);
154
37
  }
155
- /**
156
- * EVERYTHING THE READER SAW THAT THE JOURNAL CANNOT HOLD, grafted onto the summary the factory
157
- * built — the corpus's half-converted checks, what the target said about its runners and what a
158
- * run recognised off that, the reconciler's own steps, and the consumer's own exclusions.
159
- *
160
- * ITS OWN FUNCTION, extracted when the reconciler account (@SCN-USG-014) took the composition past
161
- * the `max-lines-per-function` ceiling — `observationStreams`'s precedent, and the same seam. Each
162
- * graft states its own reason for being a graft; what they share, and what this name says, is that
163
- * none of them is an obligation or an observation, so no row exists for any of them to be derived
164
- * from. Nothing about any of them changed in the move.
165
- *
166
- * THE ORDER IS THE REPORT'S, NOT A PREFERENCE. Each graft only adds its own member, so no two can
167
- * overwrite one another and the composition is free to read in the order a reader meets the
168
- * sections: what the corpus said, what ran the suites, what this tool took out of its own books,
169
- * then what the consumer took out.
170
- */
171
- function withReaderAccounts(reconciliation, corpus, input, packageJson, runners, exclusions, reconciler, isExcluded) {
172
- return withStepAccounting(withScopeAccount(withExclusionAccount(withReconcilerAccount(withRunnerAccount(withRetiredKeysAccount(withUnconfiguredFitnessScenarios(reconciliation, corpus), packageJson), input.ciSources, packageJson, runners), reconciler), exclusions), input, packageJson, runners.tiers, isExcluded), input.ciSources, packageJson, runners.tiers, reconciler, exclusions);
38
+ function withConfigurationAccount(reconciliation, packageJson) {
39
+ const { wrongKinds, unknownKeys } = configurationNotRead(packageJson);
40
+ return {
41
+ ...reconciliation,
42
+ summary: {
43
+ ...reconciliation.summary,
44
+ ...(wrongKinds.length > 0 ? { wrongKindConfiguration: wrongKinds } : {}),
45
+ ...(unknownKeys.length > 0 ? { unknownConfigurationKeys: unknownKeys } : {}),
46
+ },
47
+ };
173
48
  }
174
- /**
175
- * THE RETIRED-KEY ACCOUNT (@SCN-USG-021) — the target's own `specController.*` keys this reader
176
- * no longer reads, carried onto the summary the factory built rather than threaded through it,
177
- * for the reason the half-converted scenarios beside it are: the factory's inputs are the
178
- * JOURNAL, and a retired key is neither an obligation nor an observation. Nothing reads it, so
179
- * there is no row for it to be derived from — only a name for the report to carry.
180
- *
181
- * READ OFF THE SAME MANIFEST EVERY OTHER GRAFT IN THIS MODULE COMES FROM, and nothing else: a
182
- * retired key is a fact about what the target WROTE, not about its pipeline, so it needs no CI
183
- * bytes and no corpus reading to resolve.
184
- *
185
- * ONLY WHEN THERE IS SOMETHING TO SAY, so a target that has never written a retired key — every
186
- * target today — renders and serialises byte-identically to before.
187
- */
188
- function withRetiredKeysAccount(reconciliation, packageJson) {
189
- const retiredKeys = resolveRetiredKeys(packageJson);
190
- if (retiredKeys.length === 0)
49
+ function withScenarioCodeErrors(reconciliation, input) {
50
+ if (input.featureFiles === undefined)
191
51
  return reconciliation;
52
+ const files = input.featureFiles.map((header, i) => ({ ...header, source: input.featureSources[i] ?? "" }));
192
53
  return {
193
54
  ...reconciliation,
194
- summary: { ...reconciliation.summary, retiredKeys },
55
+ scenarioCodeErrors: scenarioCodeErrorsOf(files),
56
+ scenarioCodePopulation: scenarioCodePopulationOf(files),
195
57
  };
196
58
  }
197
- /**
198
- * THE ACCOUNTING IDENTITY (@SCN-USG-018) — what became of every step this run read, carried onto
199
- * the summary the factory built for the reason the four accounts beside it are: the factory's
200
- * inputs are the JOURNAL, and three of the four dispositions post no row at all.
201
- *
202
- * LAST OF THE GRAFTS, because it is the one that counts what the others named. It takes the
203
- * reconciler and the exclusions as their two SEPARATE seams rather than as the composed answer the
204
- * observer is asked through: the observer needs one answer per step and cannot tell the two facts
205
- * apart, while this reader has to, because a report that folded them would tell a consumer who
206
- * configured nothing that their configuration took two steps out.
207
- *
208
- * IT ASKS THE PRODUCT'S OWN RULES rather than re-deriving any of them, and `parse/stepAccounting`
209
- * states why: a count that decided membership for itself would agree with itself over books that
210
- * said something else, which is the one disagreement a reader of a total cannot see.
211
- *
212
- * ONLY WHEN A STEP WAS READ, so a run handed no CI configuration renders and serialises
213
- * byte-identically to before.
214
- */
59
+ function withReaderAccounts(reconciliation, corpus, input, packageJson, runners, exclusions, reconciler, isExcluded) {
60
+ return withStepAccounting(withScopeAccount(withExclusionAccount(withReconcilerAccount(withRunnerAccount(reconciliation, input.ciSources, packageJson, runners), reconciler), exclusions), input, packageJson, runners.tiers, isExcluded), input.ciSources, packageJson, runners.tiers, reconciler, exclusions);
61
+ }
215
62
  function withStepAccounting(reconciliation, ciSources, packageJson, runnerTiers, reconciler, exclusions) {
216
63
  const accounting = stepAccounting(ciSources, packageJson, runnerTiers, reconciler.isReconciler, exclusions.isExcluded);
217
64
  if (accounting.stepsRead === 0)
@@ -221,42 +68,12 @@ function withStepAccounting(reconciliation, ciSources, packageJson, runnerTiers,
221
68
  summary: { ...reconciliation.summary, stepAccounting: accounting },
222
69
  };
223
70
  }
224
- /**
225
- * THE SCOPE ACCOUNT (@SCN-USG-020) — which workflow files and which of their jobs this run read,
226
- * with the steps each held and how many became candidates, carried onto the summary the factory
227
- * built for the reason the three accounts beside it are: the factory's inputs are the JOURNAL, and
228
- * a job is neither an obligation nor an observation. It is where the steps CAME FROM, so there is
229
- * no row for it to be derived from.
230
- *
231
- * LAST OF THE GRAFTS AND FIRST OF THE SECTIONS, and that is not a contradiction. It is grafted
232
- * last because it is the only one needing the composed exclusion seam the observer was asked
233
- * through — the same seam, so the candidates it counts per job are the candidates the books
234
- * posted. It renders first because it is the pipeline every figure under it was read from.
235
- *
236
- * ONLY WHEN THERE IS SOMETHING TO SAY, so a run handed no CI configuration renders and serialises
237
- * byte-identically to before.
238
- */
239
71
  function withScopeAccount(reconciliation, input, packageJson, runnerTiers, isExcluded) {
240
72
  const scope = discoveryScope(input.ciSources, input.ciSourceNames ?? [], packageJson, runnerTiers, isExcluded);
241
73
  if (scope.length === 0)
242
74
  return reconciliation;
243
75
  return { ...reconciliation, summary: { ...reconciliation.summary, discoveryScope: scope } };
244
76
  }
245
- /**
246
- * THE RECONCILER ACCOUNT (@SCN-USG-014) — the steps of the target's pipeline that ARE this
247
- * reconciliation, carried onto the summary the factory built rather than threaded through it, for
248
- * the reason the two accounts beside it are: the factory's inputs are the JOURNAL, and the
249
- * reconciler is neither an obligation nor an observation. It is the disposition a step got INSTEAD
250
- * of reaching the books, so there is no row for it to be derived from.
251
- *
252
- * SEPARATE FROM THE EXCLUSION ACCOUNT, deliberately, though both end as steps that are off the
253
- * books. That one is a list the consumer wrote; this one is nobody's. Folding them would tell a
254
- * consumer who configured nothing that their configuration took two steps out — and a consumer who
255
- * then went looking for the entries would find none.
256
- *
257
- * ONLY WHEN THERE IS SOMETHING TO SAY, so a target whose pipeline does not run this tool renders
258
- * and serialises byte-identically to before.
259
- */
260
77
  function withReconcilerAccount(reconciliation, reconciler) {
261
78
  if (reconciler.steps.length === 0)
262
79
  return reconciliation;
@@ -265,24 +82,8 @@ function withReconcilerAccount(reconciliation, reconciler) {
265
82
  summary: { ...reconciliation.summary, reconcilerSteps: reconciler.steps },
266
83
  };
267
84
  }
268
- /**
269
- * THE EXCLUSION ACCOUNT (@SCN-USG-015) — the steps the target named non-checks and the entries of
270
- * its list that named none, carried onto the summary the factory built rather than threaded
271
- * through it, for the reason the runner account beside it is: the factory's inputs are the
272
- * JOURNAL, and an excluded step is neither an obligation nor an observation. It is the disposition
273
- * a step got INSTEAD of reaching the books, so there is no row for it to be derived from.
274
- *
275
- * BOTH HALVES OFF ONE PARTITION, which is why they are grafted together. They are the two sides of
276
- * the same list and their totals have to add up to it — an entry in neither is an exclusion the
277
- * consumer wrote that nothing anywhere accounts for.
278
- *
279
- * EACH ONLY WHEN THERE IS SOMETHING TO SAY, so a target that names no non-checks renders and
280
- * serialises byte-identically to before.
281
- */
282
85
  function withExclusionAccount(reconciliation, exclusions) {
283
86
  const { excluded, unmatchedEntries } = exclusions;
284
- if (excluded.length === 0 && unmatchedEntries.length === 0)
285
- return reconciliation;
286
87
  return {
287
88
  ...reconciliation,
288
89
  summary: {
@@ -292,44 +93,9 @@ function withExclusionAccount(reconciliation, exclusions) {
292
93
  },
293
94
  };
294
95
  }
295
- /**
296
- * THE RUNNER ACCOUNT — what the target SAID about each tier (@SCN-USG-016) and which steps a run
297
- * RECOGNISED off it (@SCN-USG-011), carried onto the summary the factory built rather than threaded
298
- * through it, for the reason the half-converted scenarios beside them are: the factory's inputs are
299
- * the JOURNAL, and a runner is neither an obligation nor an observation. It is the disposition a
300
- * step gets INSTEAD of reaching the books, so there is no row for it to be derived from.
301
- *
302
- * ONE READING OF THE BLOCK BEHIND BOTH, which is why they are one function and not two. They are
303
- * opposite facts — one about the manifest, one about the pipeline — and the interesting cases are
304
- * exactly where they fail to line up: a tier the target says it has NO runner for is recognised at
305
- * no step, and so is a tier it never mentioned. Two resolutions would be free to describe two
306
- * different manifests in one report, and the report would read as though it had found something.
307
- *
308
- * EACH ONLY WHEN THERE IS SOMETHING TO SAY, so a target that has named no runners — no block, or a
309
- * block nothing could be read out of — renders and serialises byte-identically to before.
310
- *
311
- * AND THAT IS WHAT A `new-client` IS OWED, settled by the scenario that was still open when this
312
- * graft was written (@SCN-USG-017). Such a target has named nothing, so nothing is taken out of
313
- * discovery and every step of its pipeline reaches the books as a candidate — which is the whole of
314
- * the report that state is sold on. It is the OBSERVER that owes them that, not this graft: there
315
- * is no runner to account for, and an account of four tiers nobody named would read as the tool
316
- * asking for configuration before it will answer.
317
- */
318
96
  function withRunnerAccount(reconciliation, ciSources, packageJson, { tiers: runnerTiers, unrecognisedKeys }) {
319
- // THE PARTITION, NOT THE BLOCK (@SCN-USG-019). Only the entries keyed by a canon tier reach the
320
- // recognition below; a key outside the four is carried to the report instead, where it is named.
321
- // Reading the whole block would let a consumer take their own checks out of discovery one
322
- // invented key at a time, which is the closure's whole subject — and since @SCN-USG-004 that is
323
- // no longer only a reporting question: these tiers ARE the membership rule.
324
- //
325
- // RULE D, over the SAME manifest and the SAME CI bytes every other reading in this module comes
326
- // from (@SCN-USG-011), and through the same `namedRunnersAt` the discovery observer asks. So a
327
- // step named here as a runner is the same step that is not on the books as a fitness check.
328
97
  const behaviouralRunners = recognisedRunners(ciSources, packageJson, runnerTiers);
329
98
  const named = Object.keys(runnerTiers).length > 0;
330
- if (behaviouralRunners.length === 0 && !named && unrecognisedKeys.length === 0) {
331
- return reconciliation;
332
- }
333
99
  return {
334
100
  ...reconciliation,
335
101
  summary: {
@@ -340,70 +106,9 @@ function withRunnerAccount(reconciliation, ciSources, packageJson, { tiers: runn
340
106
  },
341
107
  };
342
108
  }
343
- /**
344
- * THE CORPUS'S HALF-CONVERTED CHECKS (@SCN-LNT-020), carried onto the summary the factory built
345
- * rather than threaded through it. The factory's inputs are the JOURNAL — obligations and
346
- * observations — and this is neither: it is what the corpus said about itself that no row answered,
347
- * so a scenario naming it raises nothing for a Ledger to hold. It is grafted where the corpus
348
- * reading and the reconciliation are both in hand, and only when there is something to name, so a
349
- * target that has converted nothing serialises exactly as before.
350
- *
351
- * ITS OWN FUNCTION, extracted when the credit stream (@SCN-LNT-021) took the composition past the
352
- * `max-lines-per-function` ceiling. The graft is one idea with a name; nothing about it changed.
353
- */
354
- function withUnconfiguredFitnessScenarios(reconciliation, corpus) {
355
- if (corpus.unconfiguredFitnessScenarios.length === 0)
356
- return reconciliation;
357
- return {
358
- ...reconciliation,
359
- summary: {
360
- ...reconciliation.summary,
361
- unconfiguredFitnessScenarios: corpus.unconfiguredFitnessScenarios,
362
- },
363
- };
364
- }
365
- /**
366
- * The COMPLETE static stream the reconciliation consumes, from the RUNNING-check observer — the
367
- * static analogue of a runner emitting every test result, so nothing a gate runs is off the books.
368
- *
369
- * THE OBLIGATION-SIDE OBSERVER THIS COMPOSED ALONGSIDE IS RETIRED (3F-3161, @SCN-LNT-017). It
370
- * answered for every check the corpus obliged by a REGISTERED handle (`corpus.checkHandles`), and
371
- * that discovery went with the registry it was keyed from: every check now either states its own
372
- * row's code on its CI step, which the running-check observer already reads, or is a converted
373
- * `@fitness` row with no runnable script handle to be discovered by. There is no second observer
374
- * left to double-observe against.
375
- *
376
- * WHAT A SURVIVOR CITES IS THE TARGET'S OWN ANSWER (@SCN-LNT-031). A check whose CI step states the
377
- * code of the configured row it runs posts to that row; one whose step states none cites no
378
- * scenario and the reconciliation folds it into the suspense row (@SCN-USG-001), which is where an
379
- * unattributed check is meant to surface. That is the state a consumer starts in, and it is the
380
- * report this axis's first useful sentence is made of.
381
- */
382
- function checkObservations(corpus, ciSources, packageJson,
383
- // @SCN-USG-004 — the target's declared behavioural runners, resolved ONCE by the composition and
384
- // read by both the account the report carries and the membership rule below. Two resolutions
385
- // would be free to name a step the unit runner in one section while the books posted it as a
386
- // fitness check in the other.
387
- runnerTiers,
388
- // @SCN-USG-015 — the consumer's own exclusions, reaching the DISCOVERY observer.
389
- isExcluded,
390
- // The configured rows this run's own record answers for — none when it was handed no record.
391
- // Stated at the composition (`observationStreams`), because which STREAM answers a row is a
392
- // question about the run's inputs and not one an observer has any business holding.
393
- answeredByTheRecord) {
109
+ function checkObservations(corpus, ciSources, packageJson, runnerTiers, isExcluded, recordAnswersCitingSteps) {
394
110
  return [
395
- ...runningStaticChecks(ciSources, packageJson, runnerTiers,
396
- // THE CONSUMER'S OWN CITATION, WIRED (@SCN-LNT-031). The walk carries a check step's `id:`
397
- // and this observer reads it, and until this seam was passed the two met nowhere: every
398
- // discovered check on the live path cited nothing, so a fully annotated pipeline reconciled
399
- // exactly as an unannotated one — `new-client` reported over a target in `annotated`.
400
- //
401
- // THE HANDLE IS DELIBERATELY NOT CONSULTED. The row a step's code names carries the
402
- // characteristic, so both terms come off ONE configured row; reaching for the script's
403
- // spelling to supply the half a CI step cannot state is the name-match this axis retired.
404
- // A step with no code, or one naming no configured row, reaches no citation and posts to
405
- // suspense — which is `new-client`, unnarrowed.
406
- (_script, citedByStep) => corpus.citedRow(citedByStep), isExcluded).filter((o) => !(o.scnId !== undefined && answeredByTheRecord.has(bareTerm(o.scnId)))),
111
+ ...runningFitnessFunctions(ciSources, packageJson, runnerTiers, (_script, citedByStep) => corpus.citedRow(citedByStep), isExcluded).filter((o) => !(recordAnswersCitingSteps && o.scnId !== undefined)),
407
112
  ];
408
113
  }
409
114
  //# sourceMappingURL=evidenceReconciliationFromSources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"evidenceReconciliationFromSources.js","sourceRoot":"","sources":["../../src/assemble/evidenceReconciliationFromSources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evidenceReconciliationFromSources.js","sourceRoot":"","sources":["../../src/assemble/evidenceReconciliationFromSources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAI/E,OAAO,EAAE,mBAAmB,EAAqB,MAAM,0BAA0B,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AACjG,OAAO,EAAE,gBAAgB,EAAqB,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAuB,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,EAAE,eAAe,EAAwB,MAAM,6BAA6B,CAAC;AACpF,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,GAEf,MAAM,4BAA4B,CAAC;AAYpC,SAAS,kBAAkB,CACzB,KAIC,EACD,MAAoB,EACpB,WAA2B,EAC3B,WAAoD,EACpD,UAAwC;IAExC,MAAM,wBAAwB,GAAG,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC;IAClE,OAAO;QACL,GAAG,KAAK,CAAC,mBAAmB;QAC5B,GAAG,iBAAiB,CAClB,MAAM,EACN,KAAK,CAAC,SAAS,EACf,WAAW,EACX,WAAW,EACX,UAAU,EACV,wBAAwB,CACzB;QACD,GAAG,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC;KAC3C,CAAC;AACJ,CAAC;AA2BD,SAAS,gBAAgB,CAAC,KAAoC;IAC5D,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC9B,MAAM,UAAU,GAAG,cAAc,CAC/B,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,aAAa,IAAI,EAAE,EACzB,gBAAgB,CAAC,WAAW,CAAC,CAC9B,CAAC;IAEF,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,eAAe,CAChC,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,aAAa,IAAI,EAAE,EACzB,KAAK,CAAC,oBAAoB,IAAI,EAAE,EAChC,WAAW,CACZ,CAAC;IAEF,OAAO;QACL,OAAO;QACP,UAAU;QACV,UAAU;QACV,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;KACnF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,KAAoC;IAEpC,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC9B,MAAM,MAAM,GAAG,gBAAgB,CAC7B,KAAK,CAAC,cAAc,EACpB,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC,CACrD,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAEhF,MAAM,cAAc,GAAG,wBAAwB,CAC7C,MAAM,CAAC,SAAS,EAChB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,EACzE,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,EAC5B,IAAI,EACJ,IAAI,CACL,CAAC;IACF,OAAO,sBAAsB,CAC3B,wBAAwB,CACtB,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,EAC3G,WAAW,CACZ,EACD,KAAK,CACN,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,cAAsC,EACtC,WAA2B;IAE3B,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACtE,OAAO;QACL,GAAG,cAAc;QACjB,OAAO,EAAE;YACP,GAAG,cAAc,CAAC,OAAO;YACzB,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,wBAAwB,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7E;KACF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,cAAsC,EACtC,KAAoC;IAEpC,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;QAAE,OAAO,cAAc,CAAC;IAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5G,OAAO;QACL,GAAG,cAAc;QACjB,kBAAkB,EAAE,oBAAoB,CAAC,KAAK,CAAC;QAC/C,sBAAsB,EAAE,wBAAwB,CAAC,KAAK,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,cAAsC,EACtC,MAAoB,EACpB,KAA0E,EAC1E,WAA2B,EAC3B,OAAwB,EACxB,UAA0B,EAC1B,UAA2B,EAC3B,UAA6C;IAE7C,OAAO,kBAAkB,CACvB,gBAAgB,CACd,oBAAoB,CAClB,qBAAqB,CACnB,iBAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,EACxE,UAAU,CACX,EACD,UAAU,CACX,EACD,KAAK,EACL,WAAW,EACX,OAAO,CAAC,KAAK,EACb,UAAU,CACX,EACD,KAAK,CAAC,SAAS,EACf,WAAW,EACX,OAAO,CAAC,KAAK,EACb,UAAU,EACV,UAAU,CACX,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,cAAsC,EACtC,SAA4B,EAC5B,WAA2B,EAC3B,WAAoD,EACpD,UAA2B,EAC3B,UAA0B;IAE1B,MAAM,UAAU,GAAG,cAAc,CAC/B,SAAS,EACT,WAAW,EACX,WAAW,EACX,UAAU,CAAC,YAAY,EACvB,UAAU,CAAC,UAAU,CACtB,CAAC;IACF,IAAI,UAAU,CAAC,SAAS,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IACtD,OAAO;QACL,GAAG,cAAc;QACjB,OAAO,EAAE,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE;KACnE,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,cAAsC,EACtC,KAA0E,EAC1E,WAA2B,EAC3B,WAAoD,EACpD,UAA6C;IAE7C,MAAM,KAAK,GAAG,cAAc,CAC1B,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,aAAa,IAAI,EAAE,EACzB,WAAW,EACX,WAAW,EACX,UAAU,CACX,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IAC9C,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,CAAC;AAC9F,CAAC;AAED,SAAS,qBAAqB,CAC5B,cAAsC,EACtC,UAA2B;IAE3B,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IACzD,OAAO;QACL,GAAG,cAAc;QACjB,OAAO,EAAE,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,UAAU,CAAC,KAAK,EAAE;KAC1E,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,cAAsC,EACtC,UAA0B;IAE1B,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,UAAU,CAAC;IAClD,OAAO;QACL,GAAG,cAAc;QACjB,OAAO,EAAE;YACP,GAAG,cAAc,CAAC,OAAO;YACzB,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,cAAsC,EACtC,SAA4B,EAC5B,WAA2B,EAC3B,EAAE,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAmB;IAEzD,MAAM,kBAAkB,GAAiC,iBAAiB,CACxE,SAAS,EACT,WAAW,EACX,WAAW,CACZ,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAClD,OAAO;QACL,GAAG,cAAc;QACjB,OAAO,EAAE;YACP,GAAG,cAAc,CAAC,OAAO;YACzB,GAAG,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,MAAoB,EACpB,SAA4B,EAC5B,WAA2B,EAC3B,WAAoD,EACpD,UAAwC,EACxC,wBAAiC;IAEjC,OAAO;QACL,GAAG,uBAAuB,CACxB,SAAS,EACT,WAAW,EACX,WAAW,EACX,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EACtD,UAAU,CACX,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,wBAAwB,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;KACtE,CAAC;AACJ,CAAC"}