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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/README.md +6 -4
  2. package/dist/assemble/evidenceReconciliationFromSources.d.ts +5 -40
  3. package/dist/assemble/evidenceReconciliationFromSources.d.ts.map +1 -1
  4. package/dist/assemble/evidenceReconciliationFromSources.js +31 -319
  5. package/dist/assemble/evidenceReconciliationFromSources.js.map +1 -1
  6. package/dist/assemble/renderInput.d.ts +6 -72
  7. package/dist/assemble/renderInput.d.ts.map +1 -1
  8. package/dist/assemble/renderInput.js +3 -45
  9. package/dist/assemble/renderInput.js.map +1 -1
  10. package/dist/census/evidenceObligations.d.ts +10 -46
  11. package/dist/census/evidenceObligations.d.ts.map +1 -1
  12. package/dist/census/evidenceObligations.js +15 -25
  13. package/dist/census/evidenceObligations.js.map +1 -1
  14. package/dist/domain/evidenceOrder.d.ts +3 -0
  15. package/dist/domain/evidenceOrder.d.ts.map +1 -0
  16. package/dist/domain/evidenceOrder.js +15 -0
  17. package/dist/domain/evidenceOrder.js.map +1 -0
  18. package/dist/domain/evidenceReconciliation.d.ts +16 -386
  19. package/dist/domain/evidenceReconciliation.d.ts.map +1 -1
  20. package/dist/domain/evidenceReconciliation.js +79 -375
  21. package/dist/domain/evidenceReconciliation.js.map +1 -1
  22. package/dist/domain/featureCode.d.ts +4 -0
  23. package/dist/domain/featureCode.d.ts.map +1 -0
  24. package/dist/domain/featureCode.js +12 -0
  25. package/dist/domain/featureCode.js.map +1 -0
  26. package/dist/domain/journal.d.ts +7 -392
  27. package/dist/domain/journal.d.ts.map +1 -1
  28. package/dist/domain/journal.js +6 -118
  29. package/dist/domain/journal.js.map +1 -1
  30. package/dist/domain/ledger.d.ts +4 -328
  31. package/dist/domain/ledger.d.ts.map +1 -1
  32. package/dist/domain/ledger.js +11 -317
  33. package/dist/domain/ledger.js.map +1 -1
  34. package/dist/domain/outcome.d.ts +3 -0
  35. package/dist/domain/outcome.d.ts.map +1 -0
  36. package/dist/domain/outcome.js +2 -0
  37. package/dist/domain/outcome.js.map +1 -0
  38. package/dist/domain/posting.d.ts +5 -102
  39. package/dist/domain/posting.d.ts.map +1 -1
  40. package/dist/domain/posting.js +3 -55
  41. package/dist/domain/posting.js.map +1 -1
  42. package/dist/domain/qualityCheckFault.d.ts +1 -41
  43. package/dist/domain/qualityCheckFault.d.ts.map +1 -1
  44. package/dist/domain/qualityCheckFault.js +0 -24
  45. package/dist/domain/qualityCheckFault.js.map +1 -1
  46. package/dist/domain/qualityCheckFaultMessages.d.ts +0 -35
  47. package/dist/domain/qualityCheckFaultMessages.d.ts.map +1 -1
  48. package/dist/domain/qualityCheckFaultMessages.js +0 -28
  49. package/dist/domain/qualityCheckFaultMessages.js.map +1 -1
  50. package/dist/domain/qualityCheckReconciliation.d.ts +5 -278
  51. package/dist/domain/qualityCheckReconciliation.d.ts.map +1 -1
  52. package/dist/domain/qualityCheckReconciliation.js +53 -453
  53. package/dist/domain/qualityCheckReconciliation.js.map +1 -1
  54. package/dist/domain/qualityCheckReconciliationFault.d.ts +0 -19
  55. package/dist/domain/qualityCheckReconciliationFault.d.ts.map +1 -1
  56. package/dist/domain/qualityCheckReconciliationFault.js +0 -23
  57. package/dist/domain/qualityCheckReconciliationFault.js.map +1 -1
  58. package/dist/domain/scenarioCodeError.d.ts +16 -0
  59. package/dist/domain/scenarioCodeError.d.ts.map +1 -0
  60. package/dist/domain/scenarioCodeError.js +4 -0
  61. package/dist/domain/scenarioCodeError.js.map +1 -0
  62. package/dist/domain/scenarioReconciliation.d.ts +0 -205
  63. package/dist/domain/scenarioReconciliation.d.ts.map +1 -1
  64. package/dist/domain/scenarioReconciliation.js +1 -98
  65. package/dist/domain/scenarioReconciliation.js.map +1 -1
  66. package/dist/domain/scnAllocation.d.ts +27 -0
  67. package/dist/domain/scnAllocation.d.ts.map +1 -0
  68. package/dist/domain/scnAllocation.js +33 -0
  69. package/dist/domain/scnAllocation.js.map +1 -0
  70. package/dist/domain/verdictCode.d.ts +10 -0
  71. package/dist/domain/verdictCode.d.ts.map +1 -0
  72. package/dist/domain/verdictCode.js +16 -0
  73. package/dist/domain/verdictCode.js.map +1 -0
  74. package/dist/index.d.ts +12 -38
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +6 -86
  77. package/dist/index.js.map +1 -1
  78. package/dist/internal.d.ts +3 -25
  79. package/dist/internal.d.ts.map +1 -1
  80. package/dist/internal.js +3 -93
  81. package/dist/internal.js.map +1 -1
  82. package/dist/lib/bareTerm.d.ts +0 -39
  83. package/dist/lib/bareTerm.d.ts.map +1 -1
  84. package/dist/lib/bareTerm.js +0 -39
  85. package/dist/lib/bareTerm.js.map +1 -1
  86. package/dist/lib/portablePath.d.ts.map +1 -1
  87. package/dist/lib/portablePath.js +0 -14
  88. package/dist/lib/portablePath.js.map +1 -1
  89. package/dist/lib/scnCitation.d.ts +0 -32
  90. package/dist/lib/scnCitation.d.ts.map +1 -1
  91. package/dist/lib/scnCitation.js +2 -42
  92. package/dist/lib/scnCitation.js.map +1 -1
  93. package/dist/model.d.ts +0 -23
  94. package/dist/model.d.ts.map +1 -1
  95. package/dist/model.js +0 -23
  96. package/dist/model.js.map +1 -1
  97. package/dist/parse/checkScriptsRunInCI.d.ts +3 -151
  98. package/dist/parse/checkScriptsRunInCI.d.ts.map +1 -1
  99. package/dist/parse/checkScriptsRunInCI.js +5 -143
  100. package/dist/parse/checkScriptsRunInCI.js.map +1 -1
  101. package/dist/parse/ciStepRecord.d.ts +2 -117
  102. package/dist/parse/ciStepRecord.d.ts.map +1 -1
  103. package/dist/parse/ciStepRecord.js +12 -218
  104. package/dist/parse/ciStepRecord.js.map +1 -1
  105. package/dist/parse/commandRuns.d.ts +0 -39
  106. package/dist/parse/commandRuns.d.ts.map +1 -1
  107. package/dist/parse/commandRuns.js +0 -58
  108. package/dist/parse/commandRuns.js.map +1 -1
  109. package/dist/parse/cucumber.d.ts +0 -52
  110. package/dist/parse/cucumber.d.ts.map +1 -1
  111. package/dist/parse/cucumber.js +37 -143
  112. package/dist/parse/cucumber.js.map +1 -1
  113. package/dist/parse/discoveryScope.d.ts +0 -45
  114. package/dist/parse/discoveryScope.d.ts.map +1 -1
  115. package/dist/parse/discoveryScope.js +0 -55
  116. package/dist/parse/discoveryScope.js.map +1 -1
  117. package/dist/parse/fitnessCitations.d.ts +1 -72
  118. package/dist/parse/fitnessCitations.d.ts.map +1 -1
  119. package/dist/parse/fitnessCitations.js +3 -55
  120. package/dist/parse/fitnessCitations.js.map +1 -1
  121. package/dist/parse/reconcilerSteps.d.ts +0 -46
  122. package/dist/parse/reconcilerSteps.d.ts.map +1 -1
  123. package/dist/parse/reconcilerSteps.js +0 -63
  124. package/dist/parse/reconcilerSteps.js.map +1 -1
  125. package/dist/parse/runningStaticChecks.d.ts +2 -118
  126. package/dist/parse/runningStaticChecks.d.ts.map +1 -1
  127. package/dist/parse/runningStaticChecks.js +14 -273
  128. package/dist/parse/runningStaticChecks.js.map +1 -1
  129. package/dist/parse/scenarioCodeErrors.d.ts +12 -0
  130. package/dist/parse/scenarioCodeErrors.d.ts.map +1 -0
  131. package/dist/parse/scenarioCodeErrors.js +88 -0
  132. package/dist/parse/scenarioCodeErrors.js.map +1 -0
  133. package/dist/parse/scenarios.d.ts +3 -228
  134. package/dist/parse/scenarios.d.ts.map +1 -1
  135. package/dist/parse/scenarios.js +11 -447
  136. package/dist/parse/scenarios.js.map +1 -1
  137. package/dist/parse/stepAccounting.d.ts +0 -46
  138. package/dist/parse/stepAccounting.d.ts.map +1 -1
  139. package/dist/parse/stepAccounting.js +0 -54
  140. package/dist/parse/stepAccounting.js.map +1 -1
  141. package/dist/parse/stepExclusions.d.ts +0 -47
  142. package/dist/parse/stepExclusions.d.ts.map +1 -1
  143. package/dist/parse/stepExclusions.js +0 -45
  144. package/dist/parse/stepExclusions.js.map +1 -1
  145. package/dist/parse/stepNames.d.ts +0 -27
  146. package/dist/parse/stepNames.d.ts.map +1 -1
  147. package/dist/parse/stepNames.js +0 -27
  148. package/dist/parse/stepNames.js.map +1 -1
  149. package/dist/parse/targetCorpus.d.ts +1 -78
  150. package/dist/parse/targetCorpus.d.ts.map +1 -1
  151. package/dist/parse/targetCorpus.js +4 -46
  152. package/dist/parse/targetCorpus.js.map +1 -1
  153. package/dist/parse/targetManifest.d.ts +8 -146
  154. package/dist/parse/targetManifest.d.ts.map +1 -1
  155. package/dist/parse/targetManifest.js +47 -198
  156. package/dist/parse/targetManifest.js.map +1 -1
  157. package/dist/parse/vitest.d.ts +0 -60
  158. package/dist/parse/vitest.d.ts.map +1 -1
  159. package/dist/parse/vitest.js +1 -81
  160. package/dist/parse/vitest.js.map +1 -1
  161. package/dist/provenance/provenance.d.ts +2 -110
  162. package/dist/provenance/provenance.d.ts.map +1 -1
  163. package/dist/provenance/provenance.js +2 -58
  164. package/dist/provenance/provenance.js.map +1 -1
  165. package/dist/render/behaviouralRunners.d.ts +0 -29
  166. package/dist/render/behaviouralRunners.d.ts.map +1 -1
  167. package/dist/render/behaviouralRunners.js +0 -64
  168. package/dist/render/behaviouralRunners.js.map +1 -1
  169. package/dist/render/configurationNotRead.d.ts +3 -0
  170. package/dist/render/configurationNotRead.d.ts.map +1 -0
  171. package/dist/render/configurationNotRead.js +17 -0
  172. package/dist/render/configurationNotRead.js.map +1 -0
  173. package/dist/render/discoveryScope.d.ts +0 -37
  174. package/dist/render/discoveryScope.d.ts.map +1 -1
  175. package/dist/render/discoveryScope.js +0 -37
  176. package/dist/render/discoveryScope.js.map +1 -1
  177. package/dist/render/evidenceGrid.d.ts +1 -35
  178. package/dist/render/evidenceGrid.d.ts.map +1 -1
  179. package/dist/render/evidenceGrid.js +18 -100
  180. package/dist/render/evidenceGrid.js.map +1 -1
  181. package/dist/render/excludedSteps.d.ts +0 -26
  182. package/dist/render/excludedSteps.d.ts.map +1 -1
  183. package/dist/render/excludedSteps.js +0 -29
  184. package/dist/render/excludedSteps.js.map +1 -1
  185. package/dist/render/json.d.ts +0 -11
  186. package/dist/render/json.d.ts.map +1 -1
  187. package/dist/render/json.js +0 -11
  188. package/dist/render/json.js.map +1 -1
  189. package/dist/render/markdown.d.ts +0 -54
  190. package/dist/render/markdown.d.ts.map +1 -1
  191. package/dist/render/markdown.js +88 -426
  192. package/dist/render/markdown.js.map +1 -1
  193. package/dist/render/provenanceSection.d.ts +0 -22
  194. package/dist/render/provenanceSection.d.ts.map +1 -1
  195. package/dist/render/provenanceSection.js +0 -44
  196. package/dist/render/provenanceSection.js.map +1 -1
  197. package/dist/render/reconcilerSteps.d.ts +0 -25
  198. package/dist/render/reconcilerSteps.d.ts.map +1 -1
  199. package/dist/render/reconcilerSteps.js +0 -26
  200. package/dist/render/reconcilerSteps.js.map +1 -1
  201. package/dist/render/runVerdict.d.ts +0 -38
  202. package/dist/render/runVerdict.d.ts.map +1 -1
  203. package/dist/render/runVerdict.js +68 -127
  204. package/dist/render/runVerdict.js.map +1 -1
  205. package/dist/render/scenarioCodeErrorsSection.d.ts +3 -0
  206. package/dist/render/scenarioCodeErrorsSection.d.ts.map +1 -0
  207. package/dist/render/scenarioCodeErrorsSection.js +42 -0
  208. package/dist/render/scenarioCodeErrorsSection.js.map +1 -0
  209. package/dist/render/staticChecks.d.ts +0 -20
  210. package/dist/render/staticChecks.d.ts.map +1 -1
  211. package/dist/render/staticChecks.js +1 -59
  212. package/dist/render/staticChecks.js.map +1 -1
  213. package/dist/render/stepAccounting.d.ts +0 -36
  214. package/dist/render/stepAccounting.d.ts.map +1 -1
  215. package/dist/render/stepAccounting.js +0 -44
  216. package/dist/render/stepAccounting.js.map +1 -1
  217. package/dist/render/testVolume.d.ts +0 -25
  218. package/dist/render/testVolume.d.ts.map +1 -1
  219. package/dist/render/testVolume.js +0 -32
  220. package/dist/render/testVolume.js.map +1 -1
  221. package/package.json +4 -1
  222. package/dist/domain/checkCharacteristics.d.ts +0 -88
  223. package/dist/domain/checkCharacteristics.d.ts.map +0 -1
  224. package/dist/domain/checkCharacteristics.js +0 -109
  225. package/dist/domain/checkCharacteristics.js.map +0 -1
  226. package/dist/domain/fitnessChecks.d.ts +0 -79
  227. package/dist/domain/fitnessChecks.d.ts.map +0 -1
  228. package/dist/domain/fitnessChecks.js +0 -81
  229. package/dist/domain/fitnessChecks.js.map +0 -1
  230. package/dist/lib/featureCode.d.ts +0 -21
  231. package/dist/lib/featureCode.d.ts.map +0 -1
  232. package/dist/lib/featureCode.js +0 -24
  233. package/dist/lib/featureCode.js.map +0 -1
  234. package/dist/parse/corpusCodeFaults.d.ts +0 -76
  235. package/dist/parse/corpusCodeFaults.d.ts.map +0 -1
  236. package/dist/parse/corpusCodeFaults.js +0 -121
  237. package/dist/parse/corpusCodeFaults.js.map +0 -1
  238. package/dist/parse/corpusFaults.d.ts +0 -124
  239. package/dist/parse/corpusFaults.d.ts.map +0 -1
  240. package/dist/parse/corpusFaults.js +0 -72
  241. package/dist/parse/corpusFaults.js.map +0 -1
  242. package/dist/parse/corpusGrammarFaults.d.ts +0 -71
  243. package/dist/parse/corpusGrammarFaults.d.ts.map +0 -1
  244. package/dist/parse/corpusGrammarFaults.js +0 -292
  245. package/dist/parse/corpusGrammarFaults.js.map +0 -1
@@ -1,30 +1,3 @@
1
- /**
2
- * The RunContext — run provenance threaded CLI→renderers as a SIBLING to the pure
3
- * Ledger, never folded into it. The Ledger model carries obligation-vs-observation
4
- * reconciliation only; run metadata — the input paths/flags used, the target repo, the
5
- * UTC run timestamp, the source SHA — is a separate concern carried alongside.
6
- *
7
- * Built once in the CLI (reusing the existing runStart; the target is the verbatim
8
- * --target) and threaded renderMarkdown(balance, ctx) / writeOutputs(... ctx);
9
- * it is threaded to renderJson too. The shared provenance projection (consumed by
10
- * the markdown header here and the JSON object) lives here so the two surfaces
11
- * never drift. This is the PURE provenance projection — the impure `resolveSourceSha` /
12
- * `resolveTargetRoot` git reads live in `run-management/resolveRunInputs.ts`.
13
- *
14
- * Parent: (@SCN-RPT-001).
15
- */
16
- /**
17
- * The CLI input paths/flags actually used for a run — each optional; only the ones
18
- * the operator supplied are present. The same --features/--vitest/--cucumber/--ci/
19
- * --package-json/--ci-steps seams as the CLI's ReconcileOptions.
20
- *
21
- * The converted checks' credit stream joined the interface at 3F-3184 (@SCN-RPT-027). It was
22
- * ALREADY flowing through it: `reconcileInputsOf` builds one ReconcileOptions and that same
23
- * object is assigned to `ctx.inputs`, so structural typing let the stream ride along unseen and
24
- * the block simply never named it. It is optional by design — passed only where the file
25
- * exists — which is exactly why its silence was ambiguous between "the run never got it" and
26
- * "the run got it and the block does not say so".
27
- */
28
1
  export interface RunInputs {
29
2
  features?: string;
30
3
  vitest?: string;
@@ -33,120 +6,39 @@ export interface RunInputs {
33
6
  packageJson?: string;
34
7
  ciSteps?: string;
35
8
  }
36
- /**
37
- * Run provenance — the sibling argument threaded CLI→renderers. `sourceSha` is the
38
- * target's resolved source revision, or null when unknown (a non-git target with no
39
- * --source-sha override).
40
- */
41
9
  export interface RunContext {
42
- /** The target-repo name — the verbatim --target, or "unknown-target" on omit. */
43
10
  target: string;
44
- /** The CLI input paths/flags actually used. */
45
11
  inputs: RunInputs;
46
- /** The run-start instant — the same Date that names the run dir. */
47
12
  runStart: Date;
48
- /** The target's source SHA, or null when unknown (non-git target). */
49
13
  sourceSha: string | null;
50
- /**
51
- * The TOOL's own git SHA — which spec-controller produced this run (3F-1916),
52
- * distinct from the target's `sourceSha`. Null when the tool is not a git checkout
53
- * (an installed package). OPTIONAL on the ctx: fixtures that do not exercise
54
- * tool-provenance omit it and the projection defaults it to null; the CLI always
55
- * resolves it via `resolveToolIdentity`.
56
- */
57
14
  toolSha?: string | null;
58
- /**
59
- * The TOOL's package version — always resolvable (read from the tool's own
60
- * package.json), so it attributes a run even when no git SHA is available. OPTIONAL
61
- * on the ctx (defaults to "unknown" in the projection); the CLI always sets it.
62
- */
63
15
  toolVersion?: string;
64
- /**
65
- * The run root the recorded input paths are made relative to — the exact
66
- * parallel of `countRuntimeEvidenceObservationKinds`'s root. Opt-in: when omitted, input paths are
67
- * recorded verbatim (existing ctx fixtures unchanged). The CLI sets it to the target
68
- * root (reconcile runs with cwd = the target repo root), so an absolute input path
69
- * under that root is recorded relative — a banked artefact stays portable.
70
- */
71
16
  root?: string;
17
+ strict?: boolean;
72
18
  }
73
- /** One input flag actually used, as the flag handle + the value the operator gave. */
74
19
  export interface ProvenanceInput {
75
20
  flag: string;
76
21
  value: string;
77
22
  }
78
- /**
79
- * The provenance FACTS — the single projection both report surfaces share so they
80
- * never drift (project design §1; slice design "Provenance projection"). The
81
- * markdown header formats it; the JSON `provenance` object will
82
- * serialise the same facts. `runStartUtc` is second-precision UTC; `sourceSha` is
83
- * carried raw (null preserved — markdown renders the null explicitly, JSON keeps it).
84
- */
85
23
  export interface ProvenanceFacts {
86
24
  target: string;
87
25
  inputs: ProvenanceInput[];
88
26
  runStartUtc: string;
89
27
  sourceSha: string | null;
90
- /** The tool's own SHA — which spec-controller produced the run (3F-1916); null when not a git checkout. */
91
28
  toolSha: string | null;
92
- /** The tool's package version — always present. */
93
29
  toolVersion: string;
94
- /**
95
- * The canonical input flags the run did NOT receive — the complement of `inputs` over
96
- * INPUT_FLAGS, in the same canonical order (@SCN-RPT-028, 3F-3155). @SCN-RPT-027 made the
97
- * block name every stream a run was handed, which killed the "handed it and the block does
98
- * not say so" reading; it left the other one alive, because absence from a list only informs
99
- * a reader who already holds the list. Naming the flags with no value is what makes the page
100
- * self-describing about the streams it did not get.
101
- *
102
- * PRESENTATION ONLY, AND THAT IS A RULING. It lives here and NOT on `ProvenanceObject`,
103
- * because the JSON persists a fact iff it is not derivable (see that interface) and absence
104
- * is exactly derivable — `inputs` plus this file's canonical flag list determines it. A
105
- * second persisted copy would agree with the first only until one of them was edited.
106
- */
107
30
  absentInputs: string[];
108
31
  }
109
- /**
110
- * The provenance OBJECT — the canonical projection of a RunContext to the
111
- * non-derivable run facts, the single shape both report surfaces consume so they
112
- * never drift (project design §1, §3; slice design "Provenance projection"). The
113
- * JSON `provenance` object serialises this verbatim ({ provenance, scenarios, warnings });
114
- * `projectProvenance` below derives the markdown header's presentation form from the
115
- * SAME source. `runTimestamp` is second-precision UTC; `inputs` carries only the flags
116
- * actually used (keyed by their canonical name); `sourceSha` is raw (null preserved).
117
- */
118
32
  export interface ProvenanceObject {
119
33
  target: string;
120
34
  sourceSha: string | null;
121
- /** The tool's own SHA (3F-1916) — which spec-controller produced the run; null when not a git checkout. */
122
35
  toolSha: string | null;
123
- /** The tool's package version — always present. */
124
36
  toolVersion: string;
125
37
  runTimestamp: string;
126
38
  inputs: RunInputs;
39
+ strict?: boolean;
127
40
  }
128
- /**
129
- * Project a RunContext to the canonical provenance object. The one helper the JSON
130
- * surface serialises and the markdown header (via `projectProvenance`) derives from —
131
- * the timestamp formatting, the source SHA, and the input-presence selection live here
132
- * once, so the two surfaces project the same ctx without duplicating field logic.
133
- */
134
41
  export declare function provenanceObject(ctx: RunContext): ProvenanceObject;
135
- /**
136
- * Project a canonical provenance OBJECT to the markdown header's presentation FACTS —
137
- * inputs as ordered `{flag, value}` pairs, the UTC timestamp as `runStartUtc`. This is
138
- * the projection that needs no `RunContext`: the markdown renderer reads it off the shared
139
- * report model's `runProvenance` (already a `ProvenanceObject`), so the human header and
140
- * the JSON object project the SAME facts without re-touching the ctx (slice 3's
141
- * render-from-saved-JSON path calls this directly). `projectProvenance(ctx)` delegates here.
142
- */
143
42
  export declare function projectProvenanceObject(obj: ProvenanceObject): ProvenanceFacts;
144
- /**
145
- * Project a RunContext to the markdown header's provenance facts — the presentation
146
- * form (inputs as ordered `{flag, value}` pairs, the UTC timestamp as `runStartUtc`).
147
- * Derived from the canonical `provenanceObject` (then `projectProvenanceObject`) so the
148
- * markdown header and the JSON object share the same timestamp, source SHA, and
149
- * input-presence selection (no re-derivation).
150
- */
151
43
  export declare function projectProvenance(ctx: RunContext): ProvenanceFacts;
152
44
  //# sourceMappingURL=provenance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../../src/provenance/provenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,MAAM,EAAE,SAAS,CAAC;IAClB,oEAAoE;IACpE,QAAQ,EAAE,IAAI,CAAC;IACf,sEAAsE;IACtE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAgBD,sFAAsF;AACtF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,2GAA2G;IAC3G,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;OAYG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AA2BD;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,2GAA2G;IAC3G,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,gBAAgB,CAWlE;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,gBAAgB,GAAG,eAAe,CAwB9E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,eAAe,CAElE"}
1
+ {"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../../src/provenance/provenance.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,IAAI,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAWD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAiBD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,gBAAgB,CAUlE;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,gBAAgB,GAAG,eAAe,CAoB9E;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,eAAe,CAElE"}
@@ -1,45 +1,15 @@
1
- /**
2
- * The RunContext — run provenance threaded CLI→renderers as a SIBLING to the pure
3
- * Ledger, never folded into it. The Ledger model carries obligation-vs-observation
4
- * reconciliation only; run metadata — the input paths/flags used, the target repo, the
5
- * UTC run timestamp, the source SHA — is a separate concern carried alongside.
6
- *
7
- * Built once in the CLI (reusing the existing runStart; the target is the verbatim
8
- * --target) and threaded renderMarkdown(balance, ctx) / writeOutputs(... ctx);
9
- * it is threaded to renderJson too. The shared provenance projection (consumed by
10
- * the markdown header here and the JSON object) lives here so the two surfaces
11
- * never drift. This is the PURE provenance projection — the impure `resolveSourceSha` /
12
- * `resolveTargetRoot` git reads live in `run-management/resolveRunInputs.ts`.
13
- *
14
- * Parent: (@SCN-RPT-001).
15
- */
16
1
  import { relativizeToRoot } from "../lib/portablePath.js";
17
- /** The canonical input flags, in render order, mapped to their RunInputs key. */
18
2
  const INPUT_FLAGS = [
19
3
  { key: "features", flag: "--features" },
20
4
  { key: "vitest", flag: "--vitest" },
21
5
  { key: "cucumber", flag: "--cucumber" },
22
6
  { key: "ci", flag: "--ci" },
23
7
  { key: "packageJson", flag: "--package-json" },
24
- // APPENDED, so no flag that was already rendered moves (@SCN-RPT-027). Widening this
25
- // list is the whole of the change: `presentInputs`, `provenanceObject`,
26
- // `projectProvenanceObject`, the markdown header and the JSON object all iterate it, so
27
- // the two surfaces gain the stream in step and neither can drift from the other.
28
8
  { key: "ciSteps", flag: "--ci-steps" },
29
9
  ];
30
- /** Format an instant as second-precision UTC, e.g. `2026-06-27T08:17:53Z`. */
31
10
  function formatUtc(instant) {
32
- return instant.toISOString().replace(/\.\d+Z$/, "Z");
11
+ return instant.toISOString().replace(/\.\d+Z/, "Z");
33
12
  }
34
- /**
35
- * The inputs actually used — RunInputs filtered to the present, non-empty values, in
36
- * canonical flag order, each made PORTABLE relative to the run `root`. The
37
- * single input-presence + portability selection both surfaces share: the JSON
38
- * `provenance.inputs` object serialises it directly; the markdown header derives its
39
- * `{flag, value}` lines from it. A present value is relativized via `relativizeToRoot`
40
- * (absolute-under-root → relative; otherwise verbatim — see the helper); only its
41
- * presence is tested before recording.
42
- */
43
13
  function presentInputs(inputs, root) {
44
14
  const out = {};
45
15
  for (const { key } of INPUT_FLAGS) {
@@ -50,38 +20,19 @@ function presentInputs(inputs, root) {
50
20
  }
51
21
  return out;
52
22
  }
53
- /**
54
- * Project a RunContext to the canonical provenance object. The one helper the JSON
55
- * surface serialises and the markdown header (via `projectProvenance`) derives from —
56
- * the timestamp formatting, the source SHA, and the input-presence selection live here
57
- * once, so the two surfaces project the same ctx without duplicating field logic.
58
- */
59
23
  export function provenanceObject(ctx) {
60
24
  return {
61
25
  target: ctx.target,
62
26
  sourceSha: ctx.sourceSha,
63
- // The tool identity (3F-1916), defaulted for ctx fixtures that omit it; the CLI
64
- // always sets both via resolveToolIdentity.
65
27
  toolSha: ctx.toolSha ?? null,
66
28
  toolVersion: ctx.toolVersion ?? "unknown",
67
29
  runTimestamp: formatUtc(ctx.runStart),
68
30
  inputs: presentInputs(ctx.inputs, ctx.root),
31
+ strict: ctx.strict === true,
69
32
  };
70
33
  }
71
- /**
72
- * Project a canonical provenance OBJECT to the markdown header's presentation FACTS —
73
- * inputs as ordered `{flag, value}` pairs, the UTC timestamp as `runStartUtc`. This is
74
- * the projection that needs no `RunContext`: the markdown renderer reads it off the shared
75
- * report model's `runProvenance` (already a `ProvenanceObject`), so the human header and
76
- * the JSON object project the SAME facts without re-touching the ctx (slice 3's
77
- * render-from-saved-JSON path calls this directly). `projectProvenance(ctx)` delegates here.
78
- */
79
34
  export function projectProvenanceObject(obj) {
80
35
  const inputs = [];
81
- // The flags with no value, derived in the SAME pass over the SAME canonical list that
82
- // produces the flags with one (@SCN-RPT-028). One list, one traversal, two complementary
83
- // outputs — so a flag can never be named on both lines, nor missing from both, and adding
84
- // another input flag reaches the absence line without anyone remembering to.
85
36
  const absentInputs = [];
86
37
  for (const { key, flag } of INPUT_FLAGS) {
87
38
  const value = obj.inputs[key];
@@ -102,13 +53,6 @@ export function projectProvenanceObject(obj) {
102
53
  toolVersion: obj.toolVersion,
103
54
  };
104
55
  }
105
- /**
106
- * Project a RunContext to the markdown header's provenance facts — the presentation
107
- * form (inputs as ordered `{flag, value}` pairs, the UTC timestamp as `runStartUtc`).
108
- * Derived from the canonical `provenanceObject` (then `projectProvenanceObject`) so the
109
- * markdown header and the JSON object share the same timestamp, source SHA, and
110
- * input-presence selection (no re-derivation).
111
- */
112
56
  export function projectProvenance(ctx) {
113
57
  return projectProvenanceObject(provenanceObject(ctx));
114
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"provenance.js","sourceRoot":"","sources":["../../src/provenance/provenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AA6D1D,iFAAiF;AACjF,MAAM,WAAW,GAAsD;IACrE,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;IACvC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE;IACnC,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;IACvC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;IAC3B,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAC9C,qFAAqF;IACrF,wEAAwE;IACxE,wFAAwF;IACxF,iFAAiF;IACjF,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE;CACvC,CAAC;AAwCF,8EAA8E;AAC9E,SAAS,SAAS,CAAC,OAAa;IAC9B,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,aAAa,CAAC,MAAiB,EAAE,IAAwB;IAChE,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACrD,GAAG,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAsBD;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAe;IAC9C,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,gFAAgF;QAChF,4CAA4C;QAC5C,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;QAC5B,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;QACzC,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;QACrC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAqB;IAC3D,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,sFAAsF;IACtF,yFAAyF;IACzF,0FAA0F;IAC1F,6EAA6E;IAC7E,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,MAAM;QACN,YAAY;QACZ,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,WAAW,EAAE,GAAG,CAAC,WAAW;KAC7B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAe;IAC/C,OAAO,uBAAuB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"provenance.js","sourceRoot":"","sources":["../../src/provenance/provenance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAsB1D,MAAM,WAAW,GAAsD;IACrE,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;IACvC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE;IACnC,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;IACvC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;IAC3B,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAC9C,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE;CACvC,CAAC;AAiBF,SAAS,SAAS,CAAC,OAAa;IAC9B,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,aAAa,CAAC,MAAiB,EAAE,IAAwB;IAChE,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACrD,GAAG,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAYD,MAAM,UAAU,gBAAgB,CAAC,GAAe;IAC9C,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;QAC5B,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;QACzC,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;QACrC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC;QAC3C,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,IAAI;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAqB;IAC3D,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,WAAW,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,MAAM;QACN,YAAY;QACZ,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,WAAW,EAAE,GAAG,CAAC,WAAW;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAe;IAC/C,OAAO,uBAAuB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC"}
@@ -1,32 +1,3 @@
1
- /**
2
- * THE BEHAVIOURAL RUNNERS a run recognised (@SCN-USG-011) — the tier a consumer named, the runner
3
- * they named for it, and the step of their pipeline it was recognised at.
4
- *
5
- * WHY THE REPORT SAYS IT AT ALL. A recognition rule over somebody else's pipeline will be wrong
6
- * sometimes, and the question is only whether being wrong is VISIBLE. Naming the steps this reader
7
- * recognised is what makes it so: a consumer reads the row, sees a step they know is a fitness
8
- * check, and corrects it in one line of their own configuration. Silence here would put the rule
9
- * back where the prefix set was — a judgement nobody can see being made. Since @SCN-USG-004 the
10
- * same recognition also DECIDES membership rather than only reporting it, which is what makes the
11
- * visibility load-bearing instead of courteous.
12
- *
13
- * Its own module rather than a further section in `markdown.ts`, which sits at a `max-lines`
14
- * exception — and an exception excuses existing debt, never headroom. The precedent is
15
- * `runVerdict.ts`, moved out for exactly this reason.
16
- */
17
1
  import type { RenderInput } from "../assemble/renderInput.js";
18
- /**
19
- * The recognised-runner cut and the account of the tiers it recognised none for, or nothing at all.
20
- *
21
- * OMITTED WHEN THE TARGET HAS SAID NOTHING, which is every target carrying no runner block: the
22
- * section appears when the target named something and the report is otherwise byte-identical to
23
- * what it was. This section speaks only for a target that has spoken.
24
- *
25
- * AND THE SILENCE IS THE RIGHT ANSWER FOR THE ONE THAT HAS NOT (@SCN-USG-017), which was an open
26
- * question when the omission was written and is now settled by the scenario that asked it. What a
27
- * `new-client` is owed is every step of their pipeline on the books, which the observer gives them;
28
- * a section here would have nothing to report but four tiers nobody named, and printing it would
29
- * turn an absence the tool supports into a form the report asks them to fill in.
30
- */
31
2
  export declare const behaviouralRunnersSection: (report: RenderInput) => string[];
32
3
  //# sourceMappingURL=behaviouralRunners.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"behaviouralRunners.d.ts","sourceRoot":"","sources":["../../src/render/behaviouralRunners.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAqD9D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,yBAAyB,GAAI,QAAQ,WAAW,KAAG,MAAM,EAsBrE,CAAC"}
1
+ {"version":3,"file":"behaviouralRunners.d.ts","sourceRoot":"","sources":["../../src/render/behaviouralRunners.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAoB9D,eAAO,MAAM,yBAAyB,GAAI,QAAQ,WAAW,KAAG,MAAM,EAoBrE,CAAC"}
@@ -1,78 +1,14 @@
1
- /**
2
- * THE BEHAVIOURAL RUNNERS a run recognised (@SCN-USG-011) — the tier a consumer named, the runner
3
- * they named for it, and the step of their pipeline it was recognised at.
4
- *
5
- * WHY THE REPORT SAYS IT AT ALL. A recognition rule over somebody else's pipeline will be wrong
6
- * sometimes, and the question is only whether being wrong is VISIBLE. Naming the steps this reader
7
- * recognised is what makes it so: a consumer reads the row, sees a step they know is a fitness
8
- * check, and corrects it in one line of their own configuration. Silence here would put the rule
9
- * back where the prefix set was — a judgement nobody can see being made. Since @SCN-USG-004 the
10
- * same recognition also DECIDES membership rather than only reporting it, which is what makes the
11
- * visibility load-bearing instead of courteous.
12
- *
13
- * Its own module rather than a further section in `markdown.ts`, which sits at a `max-lines`
14
- * exception — and an exception excuses existing debt, never headroom. The precedent is
15
- * `runVerdict.ts`, moved out for exactly this reason.
16
- */
17
1
  import { RUNTIME_QUALITY_CHECKS } from "../domain/ledger.js";
18
- /**
19
- * WHAT THE TARGET SAID ABOUT THE TIERS NO RUNNER WAS NAMED FOR (@SCN-USG-016) — one line each, and
20
- * two different lines, because a tier the target says it HAS none and a tier it never mentioned are
21
- * opposite facts. Neither recognises a step and neither excludes one, so this is the only place in
22
- * the whole run where the difference between them is readable.
23
- *
24
- * AND THE UNNAMED LINE IS WHAT MAKES THE NULL WORTH WRITING. Without it a consumer who states
25
- * `"performance": null` gets the report they would have got by saying nothing, and no reason to
26
- * ever write it; with it, the tool says out loud that it has not been told, and the null is the
27
- * answer. That is the same asymmetry the whole axis runs on — say what was seen and what was not,
28
- * and let the consumer correct it in one line of their own configuration.
29
- *
30
- * THE FOUR TIERS ARE CANON AND ARE NOT A LIST THIS MODULE KEEPS. `RUNTIME_QUALITY_CHECKS` is the
31
- * ledger's own enumeration of the runtime tiers, read here rather than restated: a second copy
32
- * would agree by coincidence, and this axis's whole argument is that a list of names is the drift.
33
- *
34
- * A NAMED TIER IS NOT ACCOUNTED FOR HERE, whether or not a step was recognised for it. What a
35
- * target that named a runner nothing runs is owed stays the open question the section below
36
- * already deferred; naming a runner is not saying you have none.
37
- */
38
2
  const runnerTierAccount = (runnerTiers) => runnerTiers === undefined
39
3
  ? []
40
4
  : RUNTIME_QUALITY_CHECKS.filter((tier) => typeof runnerTiers[tier] !== "string").map((tier) => Object.hasOwn(runnerTiers, tier)
41
5
  ? `- ${tier} — no runner: the target names none.`
42
6
  : `- ${tier} — unnamed: the target has not said.`);
43
- /**
44
- * THE KEYS THE RUNNER BLOCK WAS GIVEN THAT ARE NOT TIERS (@SCN-USG-019) — one line each, naming the
45
- * key and saying what it did.
46
- *
47
- * THE LINE EXISTS BECAUSE THE ALTERNATIVE IS SILENCE, and silence here is the same fault as a
48
- * dropped step: the consumer wrote a key, believes it took effect, and nothing they can read says
49
- * otherwise. The key is not honoured — the resolver partitioned it out before any recognition ran —
50
- * so the only remaining question was whether they get to find that out, and this is the answer.
51
- *
52
- * IT SAYS WHAT THE KEY DID, NOT ONLY THAT IT WAS SEEN. "Excludes nothing" is the fact a consumer
53
- * needs to act on: they wrote it to take a check out of discovery, that is precisely what it did
54
- * not do, and the check is on the books below where they can read it.
55
- */
56
7
  const unrecognisedKeyAccount = (keys) => (keys ?? []).map((key) => `- ${key} — not a tier: the runner block is keyed by the four canon tiers, and this key excludes nothing.`);
57
- /**
58
- * The recognised-runner cut and the account of the tiers it recognised none for, or nothing at all.
59
- *
60
- * OMITTED WHEN THE TARGET HAS SAID NOTHING, which is every target carrying no runner block: the
61
- * section appears when the target named something and the report is otherwise byte-identical to
62
- * what it was. This section speaks only for a target that has spoken.
63
- *
64
- * AND THE SILENCE IS THE RIGHT ANSWER FOR THE ONE THAT HAS NOT (@SCN-USG-017), which was an open
65
- * question when the omission was written and is now settled by the scenario that asked it. What a
66
- * `new-client` is owed is every step of their pipeline on the books, which the observer gives them;
67
- * a section here would have nothing to report but four tiers nobody named, and printing it would
68
- * turn an absence the tool supports into a form the report asks them to fill in.
69
- */
70
8
  export const behaviouralRunnersSection = (report) => {
71
9
  const runners = report.summary.behaviouralRunners ?? [];
72
10
  const account = [
73
11
  ...runnerTierAccount(report.summary.runnerTiers),
74
- // AFTER THE TIERS, because the four are the block's subject and an unrecognised key is what was
75
- // written beside them. A consumer reads down the canon set and then what did not belong to it.
76
12
  ...unrecognisedKeyAccount(report.summary.unrecognisedRunnerKeys),
77
13
  ];
78
14
  if (runners.length === 0 && account.length === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"behaviouralRunners.js","sourceRoot":"","sources":["../../src/render/behaviouralRunners.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,iBAAiB,GAAG,CACxB,WAAgE,EACtD,EAAE,CACZ,WAAW,KAAK,SAAS;IACvB,CAAC,CAAC,EAAE;IACJ,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC1F,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC;QAC9B,CAAC,CAAC,KAAK,IAAI,sCAAsC;QACjD,CAAC,CAAC,KAAK,IAAI,sCAAsC,CACpD,CAAC;AAER;;;;;;;;;;;;GAYG;AACH,MAAM,sBAAsB,GAAG,CAAC,IAAmC,EAAY,EAAE,CAC/E,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CACd,CAAC,GAAG,EAAE,EAAE,CACN,KAAK,GAAG,kGAAkG,CAC7G,CAAC;AAEJ;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAAmB,EAAY,EAAE;IACzE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,IAAI,EAAE,CAAC;IACxD,MAAM,OAAO,GAAG;QACd,GAAG,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QAChD,gGAAgG;QAChG,+FAA+F;QAC/F,GAAG,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC;KACjE,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5D,OAAO;QACL,yBAAyB;QACzB,EAAE;QACF,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YACpB,CAAC,CAAC;gBACE,mCAAmC;gBACnC,qBAAqB;gBACrB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,CAAC;gBAC/E,EAAE;aACH;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAChD,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"behaviouralRunners.js","sourceRoot":"","sources":["../../src/render/behaviouralRunners.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,iBAAiB,GAAG,CACxB,WAAgE,EACtD,EAAE,CACZ,WAAW,KAAK,SAAS;IACvB,CAAC,CAAC,EAAE;IACJ,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC1F,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC;QAC9B,CAAC,CAAC,KAAK,IAAI,sCAAsC;QACjD,CAAC,CAAC,KAAK,IAAI,sCAAsC,CACpD,CAAC;AAER,MAAM,sBAAsB,GAAG,CAAC,IAAmC,EAAY,EAAE,CAC/E,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CACd,CAAC,GAAG,EAAE,EAAE,CACN,KAAK,GAAG,kGAAkG,CAC7G,CAAC;AAEJ,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAAmB,EAAY,EAAE;IACzE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,IAAI,EAAE,CAAC;IACxD,MAAM,OAAO,GAAG;QACd,GAAG,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QAChD,GAAG,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC;KACjE,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5D,OAAO;QACL,yBAAyB;QACzB,EAAE;QACF,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YACpB,CAAC,CAAC;gBACE,mCAAmC;gBACnC,qBAAqB;gBACrB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,IAAI,MAAM,MAAM,MAAM,IAAI,IAAI,CAAC;gBAC/E,EAAE;aACH;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAChD,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { RenderInput } from "../assemble/renderInput.js";
2
+ export declare const configurationNotReadSection: (report: RenderInput) => string[];
3
+ //# sourceMappingURL=configurationNotRead.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configurationNotRead.d.ts","sourceRoot":"","sources":["../../src/render/configurationNotRead.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAK9D,eAAO,MAAM,2BAA2B,GAAI,QAAQ,WAAW,KAAG,MAAM,EAiBvE,CAAC"}
@@ -0,0 +1,17 @@
1
+ const INTRO = "The target's package.json holds configuration this run could not use. Each entry below was read as absent, and every account in this report is the one the target gives without it.";
2
+ export const configurationNotReadSection = (report) => {
3
+ const wrongKinds = report.summary.wrongKindConfiguration ?? [];
4
+ const unknownKeys = report.summary.unknownConfigurationKeys ?? [];
5
+ if (wrongKinds.length === 0 && unknownKeys.length === 0)
6
+ return [];
7
+ return [
8
+ "## Configuration not read",
9
+ "",
10
+ INTRO,
11
+ "",
12
+ ...wrongKinds.map(({ entry, is, reads }) => `- \`${entry}\` is ${is} where ${reads} is read, so this run read it as absent.`),
13
+ ...unknownKeys.map((key) => `- \`specController.${key}\` is not a key the specController block reads, so this run read nothing from it.`),
14
+ "",
15
+ ];
16
+ };
17
+ //# sourceMappingURL=configurationNotRead.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configurationNotRead.js","sourceRoot":"","sources":["../../src/render/configurationNotRead.ts"],"names":[],"mappings":"AAEA,MAAM,KAAK,GACT,qLAAqL,CAAC;AAExL,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,MAAmB,EAAY,EAAE;IAC3E,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,IAAI,EAAE,CAAC;IAC/D,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,wBAAwB,IAAI,EAAE,CAAC;IAClE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnE,OAAO;QACL,2BAA2B;QAC3B,EAAE;QACF,KAAK;QACL,EAAE;QACF,GAAG,UAAU,CAAC,GAAG,CACf,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,KAAK,SAAS,EAAE,UAAU,KAAK,0CAA0C,CAC3G;QACD,GAAG,WAAW,CAAC,GAAG,CAChB,CAAC,GAAG,EAAE,EAAE,CAAC,sBAAsB,GAAG,mFAAmF,CACtH;QACD,EAAE;KACH,CAAC;AACJ,CAAC,CAAC"}
@@ -1,40 +1,3 @@
1
- /**
2
- * THE SCOPE THIS RUN RANGED OVER (@SCN-USG-020) — the workflow files `--ci` resolved, the jobs
3
- * within them, how many steps each held and how many of those became candidate fitness checks.
4
- *
5
- * THE SECTION IS THE TOOL'S ANSWER TO BEING POINTED AT THE WRONG THING. It makes no judgement
6
- * about whether a scope is a plausible one — a rule for "this looks like a release workflow" is
7
- * exactly the judgement this axis puts out of scope, and it is a list of ours. What it does
8
- * instead is say what it read, so a consumer sees a workflow they did not mean or a job they
9
- * forgot they had, and corrects it by narrowing `--ci` or by naming the steps that are not checks.
10
- *
11
- * AND IT IS WHERE THE QUIET JOB BECOMES VISIBLE. Every other cut of this report is about steps
12
- * that became something; this one is about the pipeline the steps came out of, so a job whose
13
- * every step was taken out — and a job the consumer forgot the tool could not see — reads here
14
- * and nowhere else.
15
- *
16
- * A TABLE RATHER THAN A LINE PER JOB, because four facts per row is what a reader compares down a
17
- * column: two jobs of one file, or the two figures of one job, are read against each other rather
18
- * than one sentence at a time. `behaviouralRunners.ts` takes the same shape for the same reason.
19
- *
20
- * Its own module rather than a further section in `markdown.ts`, which sits at a `max-lines`
21
- * exception — and an exception excuses existing debt, never headroom. The precedent is
22
- * `runVerdict.ts` and, along this axis, `behaviouralRunners.ts`, `excludedSteps.ts` and
23
- * `reconcilerSteps.ts`.
24
- */
25
1
  import type { RenderInput } from "../assemble/renderInput.js";
26
- /**
27
- * The scope, or nothing at all.
28
- *
29
- * OMITTED WHERE THE RUN READ NO CI CONFIGURATION, which is the only way the census can be empty:
30
- * the section appears wherever there is a pipeline to account for, and a run handed none renders
31
- * byte-identically to before.
32
- *
33
- * A SOURCE THIS RUN WAS GIVEN NO NAME FOR STILL GETS ITS ROW, with an empty cell where the file
34
- * would be. The core holds no filesystem and the names arrive as data from the CLI edge
35
- * (`parse/stepNames`), so an unnamed source is one nobody could name rather than one nothing read
36
- * — and dropping its jobs would be a job the reader ranged over vanishing from the account of what
37
- * it ranged over, which is the silence this axis exists to end.
38
- */
39
2
  export declare const discoveryScopeSection: (report: RenderInput) => string[];
40
3
  //# sourceMappingURL=discoveryScope.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"discoveryScope.d.ts","sourceRoot":"","sources":["../../src/render/discoveryScope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,WAAW,KAAG,MAAM,EAcjE,CAAC"}
1
+ {"version":3,"file":"discoveryScope.d.ts","sourceRoot":"","sources":["../../src/render/discoveryScope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,eAAO,MAAM,qBAAqB,GAAI,QAAQ,WAAW,KAAG,MAAM,EAcjE,CAAC"}
@@ -1,40 +1,3 @@
1
- /**
2
- * THE SCOPE THIS RUN RANGED OVER (@SCN-USG-020) — the workflow files `--ci` resolved, the jobs
3
- * within them, how many steps each held and how many of those became candidate fitness checks.
4
- *
5
- * THE SECTION IS THE TOOL'S ANSWER TO BEING POINTED AT THE WRONG THING. It makes no judgement
6
- * about whether a scope is a plausible one — a rule for "this looks like a release workflow" is
7
- * exactly the judgement this axis puts out of scope, and it is a list of ours. What it does
8
- * instead is say what it read, so a consumer sees a workflow they did not mean or a job they
9
- * forgot they had, and corrects it by narrowing `--ci` or by naming the steps that are not checks.
10
- *
11
- * AND IT IS WHERE THE QUIET JOB BECOMES VISIBLE. Every other cut of this report is about steps
12
- * that became something; this one is about the pipeline the steps came out of, so a job whose
13
- * every step was taken out — and a job the consumer forgot the tool could not see — reads here
14
- * and nowhere else.
15
- *
16
- * A TABLE RATHER THAN A LINE PER JOB, because four facts per row is what a reader compares down a
17
- * column: two jobs of one file, or the two figures of one job, are read against each other rather
18
- * than one sentence at a time. `behaviouralRunners.ts` takes the same shape for the same reason.
19
- *
20
- * Its own module rather than a further section in `markdown.ts`, which sits at a `max-lines`
21
- * exception — and an exception excuses existing debt, never headroom. The precedent is
22
- * `runVerdict.ts` and, along this axis, `behaviouralRunners.ts`, `excludedSteps.ts` and
23
- * `reconcilerSteps.ts`.
24
- */
25
- /**
26
- * The scope, or nothing at all.
27
- *
28
- * OMITTED WHERE THE RUN READ NO CI CONFIGURATION, which is the only way the census can be empty:
29
- * the section appears wherever there is a pipeline to account for, and a run handed none renders
30
- * byte-identically to before.
31
- *
32
- * A SOURCE THIS RUN WAS GIVEN NO NAME FOR STILL GETS ITS ROW, with an empty cell where the file
33
- * would be. The core holds no filesystem and the names arrive as data from the CLI edge
34
- * (`parse/stepNames`), so an unnamed source is one nobody could name rather than one nothing read
35
- * — and dropping its jobs would be a job the reader ranged over vanishing from the account of what
36
- * it ranged over, which is the silence this axis exists to end.
37
- */
38
1
  export const discoveryScopeSection = (report) => {
39
2
  const scope = report.summary.discoveryScope ?? [];
40
3
  if (scope.length === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"discoveryScope.js","sourceRoot":"","sources":["../../src/render/discoveryScope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAmB,EAAY,EAAE;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC;IAClD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO;QACL,qBAAqB;QACrB,EAAE;QACF,8CAA8C;QAC9C,2BAA2B;QAC3B,GAAG,KAAK,CAAC,GAAG,CACV,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CACrC,KAAK,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,KAAK,MAAM,UAAU,IAAI,CAC7D;QACD,EAAE;KACH,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"discoveryScope.js","sourceRoot":"","sources":["../../src/render/discoveryScope.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAmB,EAAY,EAAE;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC;IAClD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO;QACL,qBAAqB;QACrB,EAAE;QACF,8CAA8C;QAC9C,2BAA2B;QAC3B,GAAG,KAAK,CAAC,GAAG,CACV,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CACrC,KAAK,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,KAAK,MAAM,UAAU,IAAI,CAC7D;QACD,EAAE;KACH,CAAC;AACJ,CAAC,CAAC"}
@@ -1,45 +1,11 @@
1
- /**
2
- * THE LEDGER'S EVIDENCE GRID — the corpus-driven evidence columns the Scenario Reconciliations table
3
- * gains when the runtime-observation axis is in play, and the two-sided cell under each.
4
- *
5
- * Its own module rather than a block in `markdown.ts`, moved out whole at 3F-3524 so the ledger
6
- * section's split into functions under the complexity and function-length ceilings did not push
7
- * the file past its `max-lines`; `staticChecks.ts` and `runVerdict.ts` are the precedent. NOTHING
8
- * about the grid changed in the move: same columns, same headers, same cells.
9
- */
10
1
  import type { ScenarioReconciliation, RuntimeQualityCheck } from "../model.js";
11
- /**
12
- * One corpus-driven evidence column in the ledger: the lint (static) column,
13
- * or a runtime quality-check column. The column SET is corpus-driven — only the quality-checks
14
- * the run raises or observes appear, so e2e / performance show up only when present.
15
- */
16
2
  export type EvidenceColumn = {
17
- kind: "lint";
3
+ kind: "fitness";
18
4
  } | {
19
5
  kind: "runtime";
20
6
  qualityCheck: RuntimeQualityCheck;
21
7
  };
22
- /**
23
- * The corpus-driven evidence columns: lint first (when any scenario names a static check), then
24
- * each runtime quality-check present as an EVIDENCE OBLIGATION or as a posted EVIDENCE OBSERVATION
25
- * on a scenario row, in canonical quality-check order.
26
- */
27
8
  export declare function evidenceColumns(scenarios: readonly ScenarioReconciliation[]): EvidenceColumn[];
28
- /** The column's header — the tag word, title-cased (Lint / Unit / Integration / …). */
29
9
  export declare function columnHeader(col: EvidenceColumn): string;
30
- /**
31
- * One evidence cell — the two-sided `<obligation>/<observation>` encoding. The LEFT side is the
32
- * EVIDENCE OBLIGATION (a single quality-check letter iff the scenario obligated this check, else `-`); the RIGHT
33
- * side is the OBSERVATION count (the multiplicity of posted credits at this check, else `-`). It
34
- * projects the two-sided ledger row — it reconstructs nothing. It counts BACKING (presence), NOT
35
- * quality: a failing runtime evidenceObligation still shows its credit count (the failing-ness lives
36
- * in the Verdict + Reconciling-items columns), so `U/-` is unambiguously named-but-missing (zero
37
- * evidenceObservations). A `-/N` cell is a NO-EVIDENCE-OBLIGATION observation (a credit at a check the scenario
38
- * did not name, @SCN-LDG-008); a doubly-empty `-/-` renders BLANK (`""`) — no evidence obligation, no credit.
39
- * The lint cell reads the scenario's static evidenceObligation outcomes (lint is not a counted
40
- * evidence observation): its right side is the count of static checks PRESENT — `balanced` or the
41
- * watermelon (the script exists; its inadequacy is quality, in Reconciling-items 🍉), NOT a posted
42
- * credit. The count exposes backing, not quality — never rank by it.
43
- */
44
10
  export declare function evidenceCell(s: ScenarioReconciliation, col: EvidenceColumn): string;
45
11
  //# sourceMappingURL=evidenceGrid.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evidenceGrid.d.ts","sourceRoot":"","sources":["../../src/render/evidenceGrid.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAgB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAS7F;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,YAAY,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAEvG;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,sBAAsB,EAAE,GAC3C,cAAc,EAAE,CAgClB;AAED,uFAAuF;AACvF,wBAAgB,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAGxD;AAiBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,CAAC,EAAE,sBAAsB,EACzB,GAAG,EAAE,cAAc,GAClB,MAAM,CAMR"}
1
+ {"version":3,"file":"evidenceGrid.d.ts","sourceRoot":"","sources":["../../src/render/evidenceGrid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAgB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAS7F,MAAM,MAAM,cAAc,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,YAAY,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAiB1G,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,sBAAsB,EAAE,GAC3C,cAAc,EAAE,CAYlB;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAGxD;AAUD,wBAAgB,YAAY,CAC1B,CAAC,EAAE,sBAAsB,EACzB,GAAG,EAAE,cAAc,GAClB,MAAM,CAGR"}