@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.
- package/README.md +3 -3
- package/dist/assemble/evidenceReconciliationFromSources.d.ts +5 -40
- package/dist/assemble/evidenceReconciliationFromSources.d.ts.map +1 -1
- package/dist/assemble/evidenceReconciliationFromSources.js +30 -325
- package/dist/assemble/evidenceReconciliationFromSources.js.map +1 -1
- package/dist/assemble/renderInput.d.ts +7 -73
- package/dist/assemble/renderInput.d.ts.map +1 -1
- package/dist/assemble/renderInput.js +3 -45
- package/dist/assemble/renderInput.js.map +1 -1
- package/dist/census/evidenceObligations.d.ts +11 -46
- package/dist/census/evidenceObligations.d.ts.map +1 -1
- package/dist/census/evidenceObligations.js +19 -25
- package/dist/census/evidenceObligations.js.map +1 -1
- package/dist/domain/evidenceOrder.d.ts +3 -0
- package/dist/domain/evidenceOrder.d.ts.map +1 -0
- package/dist/domain/evidenceOrder.js +15 -0
- package/dist/domain/evidenceOrder.js.map +1 -0
- package/dist/domain/evidenceReconciliation.d.ts +21 -391
- package/dist/domain/evidenceReconciliation.d.ts.map +1 -1
- package/dist/domain/evidenceReconciliation.js +87 -382
- package/dist/domain/evidenceReconciliation.js.map +1 -1
- package/dist/domain/featureCode.d.ts +4 -0
- package/dist/domain/featureCode.d.ts.map +1 -0
- package/dist/domain/featureCode.js +12 -0
- package/dist/domain/featureCode.js.map +1 -0
- package/dist/domain/journal.d.ts +8 -393
- package/dist/domain/journal.d.ts.map +1 -1
- package/dist/domain/journal.js +6 -118
- package/dist/domain/journal.js.map +1 -1
- package/dist/domain/ledger.d.ts +8 -328
- package/dist/domain/ledger.d.ts.map +1 -1
- package/dist/domain/ledger.js +23 -326
- package/dist/domain/ledger.js.map +1 -1
- package/dist/domain/messages.d.ts +213 -0
- package/dist/domain/messages.d.ts.map +1 -0
- package/dist/domain/messages.js +313 -0
- package/dist/domain/messages.js.map +1 -0
- package/dist/domain/outcome.d.ts +3 -0
- package/dist/domain/outcome.d.ts.map +1 -0
- package/dist/domain/outcome.js +2 -0
- package/dist/domain/outcome.js.map +1 -0
- package/dist/domain/posting.d.ts +8 -105
- package/dist/domain/posting.d.ts.map +1 -1
- package/dist/domain/posting.js +4 -56
- package/dist/domain/posting.js.map +1 -1
- package/dist/domain/qualityCheckFault.d.ts +3 -43
- package/dist/domain/qualityCheckFault.d.ts.map +1 -1
- package/dist/domain/qualityCheckFault.js +0 -24
- package/dist/domain/qualityCheckFault.js.map +1 -1
- package/dist/domain/qualityCheckReconciliation.d.ts +7 -280
- package/dist/domain/qualityCheckReconciliation.d.ts.map +1 -1
- package/dist/domain/qualityCheckReconciliation.js +63 -463
- package/dist/domain/qualityCheckReconciliation.js.map +1 -1
- package/dist/domain/qualityCheckReconciliationFault.d.ts +0 -19
- package/dist/domain/qualityCheckReconciliationFault.d.ts.map +1 -1
- package/dist/domain/qualityCheckReconciliationFault.js +1 -24
- package/dist/domain/qualityCheckReconciliationFault.js.map +1 -1
- package/dist/domain/scenarioCodeError.d.ts +16 -0
- package/dist/domain/scenarioCodeError.d.ts.map +1 -0
- package/dist/domain/scenarioCodeError.js +4 -0
- package/dist/domain/scenarioCodeError.js.map +1 -0
- package/dist/domain/scenarioReconciliation.d.ts +2 -207
- package/dist/domain/scenarioReconciliation.d.ts.map +1 -1
- package/dist/domain/scenarioReconciliation.js +4 -101
- package/dist/domain/scenarioReconciliation.js.map +1 -1
- package/dist/domain/scnAllocation.d.ts +27 -0
- package/dist/domain/scnAllocation.d.ts.map +1 -0
- package/dist/domain/scnAllocation.js +33 -0
- package/dist/domain/scnAllocation.js.map +1 -0
- package/dist/domain/verdictCode.d.ts +10 -0
- package/dist/domain/verdictCode.d.ts.map +1 -0
- package/dist/domain/verdictCode.js +16 -0
- package/dist/domain/verdictCode.js.map +1 -0
- package/dist/index.d.ts +14 -40
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -88
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +3 -27
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +3 -94
- package/dist/internal.js.map +1 -1
- package/dist/lib/bareTerm.d.ts +0 -39
- package/dist/lib/bareTerm.d.ts.map +1 -1
- package/dist/lib/bareTerm.js +0 -39
- package/dist/lib/bareTerm.js.map +1 -1
- package/dist/lib/portablePath.d.ts.map +1 -1
- package/dist/lib/portablePath.js +2 -16
- package/dist/lib/portablePath.js.map +1 -1
- package/dist/lib/scnCitation.d.ts +0 -32
- package/dist/lib/scnCitation.d.ts.map +1 -1
- package/dist/lib/scnCitation.js +2 -42
- package/dist/lib/scnCitation.js.map +1 -1
- package/dist/model.d.ts +0 -23
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +0 -23
- package/dist/model.js.map +1 -1
- package/dist/parse/checkScriptsRunInCI.d.ts +5 -168
- package/dist/parse/checkScriptsRunInCI.d.ts.map +1 -1
- package/dist/parse/checkScriptsRunInCI.js +11 -171
- package/dist/parse/checkScriptsRunInCI.js.map +1 -1
- package/dist/parse/ciStepRecord.d.ts +4 -118
- package/dist/parse/ciStepRecord.d.ts.map +1 -1
- package/dist/parse/ciStepRecord.js +18 -225
- package/dist/parse/ciStepRecord.js.map +1 -1
- package/dist/parse/commandRuns.d.ts +0 -39
- package/dist/parse/commandRuns.d.ts.map +1 -1
- package/dist/parse/commandRuns.js +6 -67
- package/dist/parse/commandRuns.js.map +1 -1
- package/dist/parse/cucumber.d.ts +0 -53
- package/dist/parse/cucumber.d.ts.map +1 -1
- package/dist/parse/cucumber.js +42 -146
- package/dist/parse/cucumber.js.map +1 -1
- package/dist/parse/discoveryScope.d.ts +1 -46
- package/dist/parse/discoveryScope.d.ts.map +1 -1
- package/dist/parse/discoveryScope.js +2 -57
- package/dist/parse/discoveryScope.js.map +1 -1
- package/dist/parse/fitnessCitations.d.ts +1 -72
- package/dist/parse/fitnessCitations.d.ts.map +1 -1
- package/dist/parse/fitnessCitations.js +3 -55
- package/dist/parse/fitnessCitations.js.map +1 -1
- package/dist/parse/reconcilerSteps.d.ts +0 -46
- package/dist/parse/reconcilerSteps.d.ts.map +1 -1
- package/dist/parse/reconcilerSteps.js +2 -64
- package/dist/parse/reconcilerSteps.js.map +1 -1
- package/dist/parse/runningFitnessFunctions.d.ts +9 -0
- package/dist/parse/runningFitnessFunctions.d.ts.map +1 -0
- package/dist/parse/runningFitnessFunctions.js +57 -0
- package/dist/parse/runningFitnessFunctions.js.map +1 -0
- package/dist/parse/scenarioCodeErrors.d.ts +11 -0
- package/dist/parse/scenarioCodeErrors.d.ts.map +1 -0
- package/dist/parse/scenarioCodeErrors.js +78 -0
- package/dist/parse/scenarioCodeErrors.js.map +1 -0
- package/dist/parse/scenarios.d.ts +3 -228
- package/dist/parse/scenarios.d.ts.map +1 -1
- package/dist/parse/scenarios.js +20 -457
- package/dist/parse/scenarios.js.map +1 -1
- package/dist/parse/stepAccounting.d.ts +0 -46
- package/dist/parse/stepAccounting.d.ts.map +1 -1
- package/dist/parse/stepAccounting.js +1 -55
- package/dist/parse/stepAccounting.js.map +1 -1
- package/dist/parse/stepExclusions.d.ts +0 -47
- package/dist/parse/stepExclusions.d.ts.map +1 -1
- package/dist/parse/stepExclusions.js +2 -50
- package/dist/parse/stepExclusions.js.map +1 -1
- package/dist/parse/stepNames.d.ts +0 -27
- package/dist/parse/stepNames.d.ts.map +1 -1
- package/dist/parse/stepNames.js +0 -27
- package/dist/parse/stepNames.js.map +1 -1
- package/dist/parse/targetCorpus.d.ts +1 -78
- package/dist/parse/targetCorpus.d.ts.map +1 -1
- package/dist/parse/targetCorpus.js +4 -46
- package/dist/parse/targetCorpus.js.map +1 -1
- package/dist/parse/targetManifest.d.ts +8 -146
- package/dist/parse/targetManifest.d.ts.map +1 -1
- package/dist/parse/targetManifest.js +48 -198
- package/dist/parse/targetManifest.js.map +1 -1
- package/dist/parse/vitest.d.ts +0 -60
- package/dist/parse/vitest.d.ts.map +1 -1
- package/dist/parse/vitest.js +4 -83
- package/dist/parse/vitest.js.map +1 -1
- package/dist/provenance/provenance.d.ts +2 -110
- package/dist/provenance/provenance.d.ts.map +1 -1
- package/dist/provenance/provenance.js +2 -58
- package/dist/provenance/provenance.js.map +1 -1
- package/dist/render/behaviouralRunners.d.ts +0 -29
- package/dist/render/behaviouralRunners.d.ts.map +1 -1
- package/dist/render/behaviouralRunners.js +6 -69
- package/dist/render/behaviouralRunners.js.map +1 -1
- package/dist/render/configurationNotRead.d.ts +3 -0
- package/dist/render/configurationNotRead.d.ts.map +1 -0
- package/dist/render/configurationNotRead.js +17 -0
- package/dist/render/configurationNotRead.js.map +1 -0
- package/dist/render/discoveryScope.d.ts +0 -37
- package/dist/render/discoveryScope.d.ts.map +1 -1
- package/dist/render/discoveryScope.js +3 -39
- package/dist/render/discoveryScope.js.map +1 -1
- package/dist/render/evidenceGrid.d.ts +1 -35
- package/dist/render/evidenceGrid.d.ts.map +1 -1
- package/dist/render/evidenceGrid.js +21 -103
- package/dist/render/evidenceGrid.js.map +1 -1
- package/dist/render/excludedSteps.d.ts +0 -26
- package/dist/render/excludedSteps.d.ts.map +1 -1
- package/dist/render/excludedSteps.js +4 -32
- package/dist/render/excludedSteps.js.map +1 -1
- package/dist/render/fitnessFunctions.d.ts +3 -0
- package/dist/render/fitnessFunctions.d.ts.map +1 -0
- package/dist/render/fitnessFunctions.js +12 -0
- package/dist/render/fitnessFunctions.js.map +1 -0
- package/dist/render/json.d.ts +0 -11
- package/dist/render/json.d.ts.map +1 -1
- package/dist/render/json.js +0 -11
- package/dist/render/json.js.map +1 -1
- package/dist/render/markdown.d.ts +1 -55
- package/dist/render/markdown.d.ts.map +1 -1
- package/dist/render/markdown.js +128 -467
- package/dist/render/markdown.js.map +1 -1
- package/dist/render/provenanceSection.d.ts +0 -22
- package/dist/render/provenanceSection.d.ts.map +1 -1
- package/dist/render/provenanceSection.js +10 -53
- package/dist/render/provenanceSection.js.map +1 -1
- package/dist/render/reconcilerSteps.d.ts +0 -25
- package/dist/render/reconcilerSteps.d.ts.map +1 -1
- package/dist/render/reconcilerSteps.js +5 -30
- package/dist/render/reconcilerSteps.js.map +1 -1
- package/dist/render/runVerdict.d.ts +0 -38
- package/dist/render/runVerdict.d.ts.map +1 -1
- package/dist/render/runVerdict.js +62 -129
- package/dist/render/runVerdict.js.map +1 -1
- package/dist/render/scenarioCodeErrorsSection.d.ts +3 -0
- package/dist/render/scenarioCodeErrorsSection.d.ts.map +1 -0
- package/dist/render/scenarioCodeErrorsSection.js +45 -0
- package/dist/render/scenarioCodeErrorsSection.js.map +1 -0
- package/dist/render/stepAccounting.d.ts +0 -36
- package/dist/render/stepAccounting.d.ts.map +1 -1
- package/dist/render/stepAccounting.js +5 -49
- package/dist/render/stepAccounting.js.map +1 -1
- package/dist/render/testVolume.d.ts +0 -25
- package/dist/render/testVolume.d.ts.map +1 -1
- package/dist/render/testVolume.js +4 -35
- package/dist/render/testVolume.js.map +1 -1
- package/package.json +4 -1
- package/dist/domain/checkCharacteristics.d.ts +0 -88
- package/dist/domain/checkCharacteristics.d.ts.map +0 -1
- package/dist/domain/checkCharacteristics.js +0 -109
- package/dist/domain/checkCharacteristics.js.map +0 -1
- package/dist/domain/fitnessChecks.d.ts +0 -79
- package/dist/domain/fitnessChecks.d.ts.map +0 -1
- package/dist/domain/fitnessChecks.js +0 -81
- package/dist/domain/fitnessChecks.js.map +0 -1
- package/dist/domain/qualityCheckFaultMessages.d.ts +0 -43
- package/dist/domain/qualityCheckFaultMessages.d.ts.map +0 -1
- package/dist/domain/qualityCheckFaultMessages.js +0 -38
- package/dist/domain/qualityCheckFaultMessages.js.map +0 -1
- package/dist/lib/featureCode.d.ts +0 -21
- package/dist/lib/featureCode.d.ts.map +0 -1
- package/dist/lib/featureCode.js +0 -24
- package/dist/lib/featureCode.js.map +0 -1
- package/dist/parse/corpusCodeFaults.d.ts +0 -76
- package/dist/parse/corpusCodeFaults.d.ts.map +0 -1
- package/dist/parse/corpusCodeFaults.js +0 -121
- package/dist/parse/corpusCodeFaults.js.map +0 -1
- package/dist/parse/corpusFaults.d.ts +0 -124
- package/dist/parse/corpusFaults.d.ts.map +0 -1
- package/dist/parse/corpusFaults.js +0 -72
- package/dist/parse/corpusFaults.js.map +0 -1
- package/dist/parse/corpusGrammarFaults.d.ts +0 -71
- package/dist/parse/corpusGrammarFaults.d.ts.map +0 -1
- package/dist/parse/corpusGrammarFaults.js +0 -292
- package/dist/parse/corpusGrammarFaults.js.map +0 -1
- package/dist/parse/runningStaticChecks.d.ts +0 -125
- package/dist/parse/runningStaticChecks.d.ts.map +0 -1
- package/dist/parse/runningStaticChecks.js +0 -316
- package/dist/parse/runningStaticChecks.js.map +0 -1
- package/dist/render/staticChecks.d.ts +0 -23
- package/dist/render/staticChecks.d.ts.map +0 -1
- package/dist/render/staticChecks.js +0 -69
- package/dist/render/staticChecks.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scenarioCodeErrorsSection.js","sourceRoot":"","sources":["../../src/render/scenarioCodeErrorsSection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEnE,SAAS,OAAO,CAAC,CAAS,EAAE,IAAY;IACtC,OAAO,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,cAAc,CAAC,UAA8C;IACpE,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,aAAa,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACnF,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC;IAClD,IAAI,YAAY,KAAK,CAAC;QAAE,OAAO,aAAa,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAC5D,OAAO,CAAC,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,EACjE,OAAO,CAAC,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAClE,CAAC;IACF,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAChH,OAAO,aAAa,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,YAAY,KAAK,YAAY;QAAE,OAAO,aAAa,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC;IAChG,MAAM,aAAa,GAAG,YAAY,GAAG,YAAY,CAAC;IAClD,MAAM,IAAI,GAAG,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9G,OAAO,aAAa,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAAmB,EAAY,EAAE;IACzE,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACvD,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC;IACzC,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;IAC3E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,KAAK,GACT,MAAM,CAAC,MAAM,KAAK,CAAC;QACjB,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,oBAAoB,CAAC;QACjD,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACvE,OAAO;QACL,OAAO;QACP,EAAE;QACF,aAAa,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC,KAAK,CAAC;QAC3D,EAAE;QACF,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;QAClE,EAAE;QACF,aAAa;QACb,EAAE;KACH,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,39 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WHAT BECAME OF EVERY STEP THIS RUN READ (@SCN-USG-018) — the population, the four dispositions,
|
|
3
|
-
* and whether they add back up to it.
|
|
4
|
-
*
|
|
5
|
-
* THE SECTION IS THIS AXIS'S FIRST NON-NEGOTIABLE MADE CHECKABLE. Nothing seen is dropped: a step
|
|
6
|
-
* that reaches the reader leaves it as a candidate fitness check, as one of the runners the target
|
|
7
|
-
* named, as the reconciler, or as a step the consumer called a non-check, and there is no fifth
|
|
8
|
-
* outcome. Every section above this one names what a step BECAME, so a step that became nothing is
|
|
9
|
-
* missing from none of them and every one reads exactly as it would have read had the step never
|
|
10
|
-
* existed. This is the only cut of the report that can see an absence, and seeing absences is what
|
|
11
|
-
* the whole axis is for.
|
|
12
|
-
*
|
|
13
|
-
* BOTH TOTALS, SIDE BY SIDE, AND THE SUM IS NOT THE READER'S TO MAKE. `Accounted for` is the
|
|
14
|
-
* figure the count itself arrived at; a reader adding the four dispositions up for themselves
|
|
15
|
-
* would be checking their own arithmetic against nothing, and would go on agreeing with a report
|
|
16
|
-
* whose four figures had lost a step between them. Stated as a pair, the identity is something a
|
|
17
|
-
* consumer reads rather than derives.
|
|
18
|
-
*
|
|
19
|
-
* A TABLE AND THEN A SENTENCE, because the two answer different readers. The row is what a
|
|
20
|
-
* consumer compares against their own pipeline — four candidates and three non-checks is a claim
|
|
21
|
-
* about their file they can check. The line under it is the verdict, and where the figures
|
|
22
|
-
* disagree it names both of them, because a bare "does not balance" over numbers a reader has to
|
|
23
|
-
* subtract for themselves is the report withholding the one thing it knows.
|
|
24
|
-
*
|
|
25
|
-
* Its own module rather than a further section in `markdown.ts`, which sits at a `max-lines`
|
|
26
|
-
* exception — and an exception excuses existing debt, never headroom. The precedent is
|
|
27
|
-
* `runVerdict.ts` and, along this axis, `discoveryScope.ts`, `behaviouralRunners.ts`,
|
|
28
|
-
* `excludedSteps.ts` and `reconcilerSteps.ts`.
|
|
29
|
-
*/
|
|
30
1
|
import type { RenderInput } from "../assemble/renderInput.js";
|
|
31
|
-
/**
|
|
32
|
-
* The accounting, or nothing at all.
|
|
33
|
-
*
|
|
34
|
-
* OMITTED WHERE THE RUN READ NO STEP, which is the only way the count can be empty: the section
|
|
35
|
-
* appears wherever there is a pipeline to account for, and a run handed no CI configuration
|
|
36
|
-
* renders byte-identically to before.
|
|
37
|
-
*/
|
|
38
2
|
export declare const stepAccountingSection: (report: RenderInput) => string[];
|
|
39
3
|
//# sourceMappingURL=stepAccounting.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stepAccounting.d.ts","sourceRoot":"","sources":["../../src/render/stepAccounting.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"stepAccounting.d.ts","sourceRoot":"","sources":["../../src/render/stepAccounting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAS9D,eAAO,MAAM,qBAAqB,GAAI,QAAQ,WAAW,KAAG,MAAM,EAcjE,CAAC"}
|
|
@@ -1,60 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
* WHAT BECAME OF EVERY STEP THIS RUN READ (@SCN-USG-018) — the population, the four dispositions,
|
|
3
|
-
* and whether they add back up to it.
|
|
4
|
-
*
|
|
5
|
-
* THE SECTION IS THIS AXIS'S FIRST NON-NEGOTIABLE MADE CHECKABLE. Nothing seen is dropped: a step
|
|
6
|
-
* that reaches the reader leaves it as a candidate fitness check, as one of the runners the target
|
|
7
|
-
* named, as the reconciler, or as a step the consumer called a non-check, and there is no fifth
|
|
8
|
-
* outcome. Every section above this one names what a step BECAME, so a step that became nothing is
|
|
9
|
-
* missing from none of them and every one reads exactly as it would have read had the step never
|
|
10
|
-
* existed. This is the only cut of the report that can see an absence, and seeing absences is what
|
|
11
|
-
* the whole axis is for.
|
|
12
|
-
*
|
|
13
|
-
* BOTH TOTALS, SIDE BY SIDE, AND THE SUM IS NOT THE READER'S TO MAKE. `Accounted for` is the
|
|
14
|
-
* figure the count itself arrived at; a reader adding the four dispositions up for themselves
|
|
15
|
-
* would be checking their own arithmetic against nothing, and would go on agreeing with a report
|
|
16
|
-
* whose four figures had lost a step between them. Stated as a pair, the identity is something a
|
|
17
|
-
* consumer reads rather than derives.
|
|
18
|
-
*
|
|
19
|
-
* A TABLE AND THEN A SENTENCE, because the two answer different readers. The row is what a
|
|
20
|
-
* consumer compares against their own pipeline — four candidates and three non-checks is a claim
|
|
21
|
-
* about their file they can check. The line under it is the verdict, and where the figures
|
|
22
|
-
* disagree it names both of them, because a bare "does not balance" over numbers a reader has to
|
|
23
|
-
* subtract for themselves is the report withholding the one thing it knows.
|
|
24
|
-
*
|
|
25
|
-
* Its own module rather than a further section in `markdown.ts`, which sits at a `max-lines`
|
|
26
|
-
* exception — and an exception excuses existing debt, never headroom. The precedent is
|
|
27
|
-
* `runVerdict.ts` and, along this axis, `discoveryScope.ts`, `behaviouralRunners.ts`,
|
|
28
|
-
* `excludedSteps.ts` and `reconcilerSteps.ts`.
|
|
29
|
-
*/
|
|
30
|
-
/**
|
|
31
|
-
* The verdict line — one sentence, and where the two totals disagree it states both.
|
|
32
|
-
*
|
|
33
|
-
* ONE SENTENCE FOR EITHER DISAGREEMENT, deliberately. A step accounted for as nothing and a step
|
|
34
|
-
* accounted for twice are opposite faults, but the reader's next move is the same in both cases
|
|
35
|
-
* and the figures already say which it is: a second sentence would be a branch nothing in this
|
|
36
|
-
* repository can reach, kept alive to describe a case the guards on the count forbid.
|
|
37
|
-
*/
|
|
1
|
+
import { CORE_MESSAGES, CoreMessage } from "../domain/messages.js";
|
|
38
2
|
const verdictOf = ({ stepsRead, accountedFor }) => accountedFor === stepsRead
|
|
39
|
-
?
|
|
40
|
-
: `- ${stepsRead
|
|
41
|
-
`add up to the steps this run read.`;
|
|
42
|
-
/**
|
|
43
|
-
* The accounting, or nothing at all.
|
|
44
|
-
*
|
|
45
|
-
* OMITTED WHERE THE RUN READ NO STEP, which is the only way the count can be empty: the section
|
|
46
|
-
* appears wherever there is a pipeline to account for, and a run handed no CI configuration
|
|
47
|
-
* renders byte-identically to before.
|
|
48
|
-
*/
|
|
3
|
+
? `- ${CORE_MESSAGES[CoreMessage.EveryStepAccountedFor]}`
|
|
4
|
+
: `- ${CORE_MESSAGES[CoreMessage.StepsNotAccountedFor](stepsRead, accountedFor)}`;
|
|
49
5
|
export const stepAccountingSection = (report) => {
|
|
50
6
|
const accounting = report.summary.stepAccounting;
|
|
51
7
|
if (accounting === undefined)
|
|
52
8
|
return [];
|
|
53
9
|
const { stepsRead, candidates, runners, reconciler, excluded, accountedFor } = accounting;
|
|
54
10
|
return [
|
|
55
|
-
|
|
11
|
+
CORE_MESSAGES[CoreMessage.StepAccountingHeading],
|
|
56
12
|
"",
|
|
57
|
-
|
|
13
|
+
CORE_MESSAGES[CoreMessage.StepAccountingTableHeader],
|
|
58
14
|
"| --- | --- | --- | --- | --- | --- |",
|
|
59
15
|
`| ${stepsRead} | ${candidates} | ${runners} | ${reconciler} | ${excluded} | ${accountedFor} |`,
|
|
60
16
|
"",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stepAccounting.js","sourceRoot":"","sources":["../../src/render/stepAccounting.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stepAccounting.js","sourceRoot":"","sources":["../../src/render/stepAccounting.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAkB,EAAU,EAAE,CACxE,YAAY,KAAK,SAAS;IACxB,CAAC,CAAC,KAAK,aAAa,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE;IACzD,CAAC,CAAC,KAAK,aAAa,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC;AAEtF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAmB,EAAY,EAAE;IACrE,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;IACjD,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC;IAC1F,OAAO;QACL,aAAa,CAAC,WAAW,CAAC,qBAAqB,CAAC;QAChD,EAAE;QACF,aAAa,CAAC,WAAW,CAAC,yBAAyB,CAAC;QACpD,uCAAuC;QACvC,KAAK,SAAS,MAAM,UAAU,MAAM,OAAO,MAAM,UAAU,MAAM,QAAQ,MAAM,YAAY,IAAI;QAC/F,EAAE;QACF,SAAS,CAAC,UAAU,CAAC;QACrB,EAAE;KACH,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,28 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* THE RUNTIME TEST-VOLUME CENSUS a run banked — the `### Test volume` cut under Summary views.
|
|
3
|
-
*
|
|
4
|
-
* Its own module rather than a section in `markdown.ts`, which sits at a `max-lines` exception —
|
|
5
|
-
* and an exception excuses existing debt, never headroom. Moved out whole at @SCN-USG-015, when
|
|
6
|
-
* the excluded-step cut beside it needed the room; `runVerdict.ts`, `staticChecks.ts` and
|
|
7
|
-
* `behaviouralRunners.ts` are the precedent, each moved for exactly this reason. It goes out
|
|
8
|
-
* BESIDE `staticChecks.ts` deliberately: that module's own header already calls this section its
|
|
9
|
-
* mirror on the runtime axis, and the two now sit where a reader looking for either finds both.
|
|
10
|
-
* NOTHING about the section changed in the move: same emitter, same lines, same omit-when-absent.
|
|
11
|
-
*/
|
|
12
1
|
import type { RenderInput } from "../assemble/renderInput.js";
|
|
13
|
-
/**
|
|
14
|
-
* Test volume (@SCN-RPT-010) — the evidence-observation side under Summary views, the
|
|
15
|
-
* counterpart to the Evidence reconciliation' evidence-obligation side. Renders the balancing identity
|
|
16
|
-
* (`N evidence observations = a on scenarios + b on phantom scenarios + c on the suspense scenario`,
|
|
17
|
-
* a DERIVED view of the retained aggregate, grouped by the SCENARIO-KIND each credit posted to)
|
|
18
|
-
* then the per-quality-check evidence observation table
|
|
19
|
-
* (all four runtime quality-checks, zeros shown — a fixed tally like Evidence reconciliation).
|
|
20
|
-
* Omitted only when no evidence-observation read is threaded (the 3-arg back-compat path). The
|
|
21
|
-
* identity holds BY CONSTRUCTION (one shared pass in src/evidenceObservations.ts); the renderer
|
|
22
|
-
* only sums what the aggregate already counted by kind. Quality-checks read as their tag words,
|
|
23
|
-
* lowercase (the label-=-tag rule). The numbers read off the report's materialised
|
|
24
|
-
* `summary.testVolume` + `summary.rawByRuntimeQualityCheck` (both Ledger folds, 3F-2103 — the
|
|
25
|
-
* `evidenceObservations` section retired).
|
|
26
|
-
*/
|
|
27
2
|
export declare const testVolumeSection: (report: RenderInput) => string[];
|
|
28
3
|
//# sourceMappingURL=testVolume.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testVolume.d.ts","sourceRoot":"","sources":["../../src/render/testVolume.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"testVolume.d.ts","sourceRoot":"","sources":["../../src/render/testVolume.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG9D,eAAO,MAAM,iBAAiB,GAAI,QAAQ,WAAW,KAAG,MAAM,EAkB7D,CAAC"}
|
|
@@ -1,48 +1,17 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* THE RUNTIME TEST-VOLUME CENSUS a run banked — the `### Test volume` cut under Summary views.
|
|
3
|
-
*
|
|
4
|
-
* Its own module rather than a section in `markdown.ts`, which sits at a `max-lines` exception —
|
|
5
|
-
* and an exception excuses existing debt, never headroom. Moved out whole at @SCN-USG-015, when
|
|
6
|
-
* the excluded-step cut beside it needed the room; `runVerdict.ts`, `staticChecks.ts` and
|
|
7
|
-
* `behaviouralRunners.ts` are the precedent, each moved for exactly this reason. It goes out
|
|
8
|
-
* BESIDE `staticChecks.ts` deliberately: that module's own header already calls this section its
|
|
9
|
-
* mirror on the runtime axis, and the two now sit where a reader looking for either finds both.
|
|
10
|
-
* NOTHING about the section changed in the move: same emitter, same lines, same omit-when-absent.
|
|
11
|
-
*/
|
|
12
1
|
import { RUNTIME_QUALITY_CHECKS } from "../domain/ledger.js";
|
|
13
|
-
|
|
14
|
-
* Test volume (@SCN-RPT-010) — the evidence-observation side under Summary views, the
|
|
15
|
-
* counterpart to the Evidence reconciliation' evidence-obligation side. Renders the balancing identity
|
|
16
|
-
* (`N evidence observations = a on scenarios + b on phantom scenarios + c on the suspense scenario`,
|
|
17
|
-
* a DERIVED view of the retained aggregate, grouped by the SCENARIO-KIND each credit posted to)
|
|
18
|
-
* then the per-quality-check evidence observation table
|
|
19
|
-
* (all four runtime quality-checks, zeros shown — a fixed tally like Evidence reconciliation).
|
|
20
|
-
* Omitted only when no evidence-observation read is threaded (the 3-arg back-compat path). The
|
|
21
|
-
* identity holds BY CONSTRUCTION (one shared pass in src/evidenceObservations.ts); the renderer
|
|
22
|
-
* only sums what the aggregate already counted by kind. Quality-checks read as their tag words,
|
|
23
|
-
* lowercase (the label-=-tag rule). The numbers read off the report's materialised
|
|
24
|
-
* `summary.testVolume` + `summary.rawByRuntimeQualityCheck` (both Ledger folds, 3F-2103 — the
|
|
25
|
-
* `evidenceObservations` section retired).
|
|
26
|
-
*/
|
|
2
|
+
import { CORE_MESSAGES, CoreMessage } from "../domain/messages.js";
|
|
27
3
|
export const testVolumeSection = (report) => {
|
|
28
4
|
const volume = report.summary.testVolume;
|
|
29
5
|
const raw = report.summary.rawByRuntimeQualityCheck;
|
|
30
6
|
if (!volume || !raw)
|
|
31
7
|
return [];
|
|
32
8
|
const total = volume.totalEvidenceObservations;
|
|
33
|
-
// Three DIRECT reads off the materialised kind-counts — the renderer does no arithmetic on this
|
|
34
|
-
// line. The three terms are grouped by the SCENARIO-KIND each credit posted to (the canon
|
|
35
|
-
// grouping): on scenarios (a scenario's account), on phantom scenarios (invented
|
|
36
|
-
// phantom-scenario accounts — many can exist, hence the plural) and on the suspense scenario (the
|
|
37
|
-
// one suspense account, singular — includes broken). The identity total = onScenario +
|
|
38
|
-
// onPhantomScenario + onSuspenseScenario holds BY CONSTRUCTION (one shared runtimeObservationTally
|
|
39
|
-
// fold), so the three printed terms cannot drift from the total.
|
|
40
9
|
const lines = [
|
|
41
|
-
|
|
10
|
+
CORE_MESSAGES[CoreMessage.TestVolumeHeading],
|
|
42
11
|
"",
|
|
43
|
-
|
|
12
|
+
CORE_MESSAGES[CoreMessage.TestVolumeSum](total, volume.onScenario, volume.onPhantomScenario, volume.onSuspenseScenario),
|
|
44
13
|
"",
|
|
45
|
-
|
|
14
|
+
CORE_MESSAGES[CoreMessage.TestVolumeTableHeader],
|
|
46
15
|
"| --- | --- |",
|
|
47
16
|
];
|
|
48
17
|
for (const qualityCheck of RUNTIME_QUALITY_CHECKS) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testVolume.js","sourceRoot":"","sources":["../../src/render/testVolume.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"testVolume.js","sourceRoot":"","sources":["../../src/render/testVolume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAmB,EAAY,EAAE;IACjE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC;IACpD,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,yBAAyB,CAAC;IAC/C,MAAM,KAAK,GAAG;QACZ,aAAa,CAAC,WAAW,CAAC,iBAAiB,CAAC;QAC5C,EAAE;QACF,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,kBAAkB,CAAC;QACvH,EAAE;QACF,aAAa,CAAC,WAAW,CAAC,qBAAqB,CAAC;QAChD,eAAe;KAChB,CAAC;IACF,KAAK,MAAM,YAAY,IAAI,sBAAsB,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,KAAK,YAAY,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@3f-consulting/spec-controller-core",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.70",
|
|
4
4
|
"description": "The pure, embeddable reconciliation core behind spec-controller — Gherkin/@SCN parse, the evidence model, reconcile primitives, and renderers. No CLI, no I/O.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"reconciliation",
|
|
@@ -32,6 +32,9 @@
|
|
|
32
32
|
"publishConfig": {
|
|
33
33
|
"access": "public"
|
|
34
34
|
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"fast-check": "4.10.1"
|
|
37
|
+
},
|
|
35
38
|
"scripts": {
|
|
36
39
|
"build": "tsc -p tsconfig.build.json"
|
|
37
40
|
},
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* THE PORTFOLIO'S CHECK CHARACTERISTICS — the words that may name what a fitness check asserts.
|
|
3
|
-
*
|
|
4
|
-
* WHAT THIS IS FOR NOW — A ROLL-UP VOCABULARY, NOT A GATE (3F-3167). A fitness scenario carries
|
|
5
|
-
* one tag, `@fitness`, and names its characteristic as a FIELD on its configured row. The word is
|
|
6
|
-
* therefore a REPORTING LABEL: it is what a report groups its fitness rows by and what the
|
|
7
|
-
* portfolio says out loud about where a product is weak. Nothing parses it, and no check in this
|
|
8
|
-
* repository holds a manifest to this list any more.
|
|
9
|
-
*
|
|
10
|
-
* THE GATE THAT USED TO (3F-2996, retired 3F-3167). The set of words that could name a
|
|
11
|
-
* characteristic was once read out of the target's own check registry and
|
|
12
|
-
* `specController.thresholds`, so adding a registry entry was simultaneously the act that MINTED
|
|
13
|
-
* a characteristic and the act that CERTIFIED it. Fourteen tags for seven characteristics were
|
|
14
|
-
* built over a month in a repository that reconciles its own tree on every push, and nothing
|
|
15
|
-
* redded once (3F-2994). `lint:check-characteristics` closed that, along with a minting ceremony
|
|
16
|
-
* for words canon had not named — and both left when the tag stopped doing two jobs. A word that
|
|
17
|
-
* only labels a roll-up cannot be minted into the parser by a typo, because the parser does not
|
|
18
|
-
* read it. Whether the portfolio SHOULD carry a given word is a canon question, asked of people.
|
|
19
|
-
*
|
|
20
|
-
* THE ROSTER IS STILL THE PORTFOLIO'S, AND IT STILL ARRIVES BY VERSION. Canon names this package
|
|
21
|
-
* as the machine-readable form's home — *"a `spec-controller-core` export or its own shared
|
|
22
|
-
* package … from which each product DERIVES its legal set via its pinned version, refreshed on a
|
|
23
|
-
* bump — never a hand-typed roster"* (`fitness-functions.md` → *Static checks*). Every reconciled
|
|
24
|
-
* product already installs this package to run `balance`, so the export is the smaller of the two
|
|
25
|
-
* shapes canon offers: nothing is published that was not published before, and no consumer gains
|
|
26
|
-
* a dependency. What changed at 3F-3167 is what a consumer DOES with it — group a report, not
|
|
27
|
-
* refuse a build.
|
|
28
|
-
*
|
|
29
|
-
* ON THE PUBLIC `.` BARREL, NEVER `./internal`. A roster only the monorepo can import is
|
|
30
|
-
* reachable by exactly the one product that does not need it.
|
|
31
|
-
*
|
|
32
|
-
* AND THE BARREL ENTRY IS NOT A FROZEN CONTRACT — it stays on its merits (3F-3410). This used to
|
|
33
|
-
* say the entry was a "v1 contract change", reconciled against a hand-written surface updated in
|
|
34
|
-
* the same act. Both halves are gone: that surface left at 3F-3449, and a 0.x package does not
|
|
35
|
-
* freeze its exports, it drops the dead ones in a prerelease (operator, 2026-09-16). So nothing
|
|
36
|
-
* keeps this export here by inertia, and 3F-3410 — which deleted the obligation-side observer from
|
|
37
|
-
* this same barrel for having no caller — asked directly whether this one had one. It does, and not
|
|
38
|
-
* in this repository: canon names it (below), and a sibling product holds a vendored copy naming
|
|
39
|
-
* this module as its source, to be replaced by the import. A shared vocabulary's consumers are
|
|
40
|
-
* outside the repository that publishes it, so a grep of this tree is the wrong population to
|
|
41
|
-
* measure it by.
|
|
42
|
-
*
|
|
43
|
-
* ═══ THIS FILE IS A VENDORED COPY, AND SAYS SO ═══
|
|
44
|
-
*
|
|
45
|
-
* Canon lives in the `strategy` repository, which this one's CI never checks out and a public
|
|
46
|
-
* consumer of an MIT-licensed tool would not have at all — the arrangement the operator ruled
|
|
47
|
-
* for exactly this case (2026-08-03, 3F-2296). So this list is transcribed, and
|
|
48
|
-
* holding it to canon belongs to the strategy repository's CI, where every product is visible. It
|
|
49
|
-
* says so on its face rather than leaving a reader to wonder whether the reconciliation was
|
|
50
|
-
* forgotten.
|
|
51
|
-
*
|
|
52
|
-
* PURE DATA AND ONE PREDICATE — no I/O, nothing imported, so it sits in `domain/` beside
|
|
53
|
-
* the fitness-row readers, and `pnpm lint:boundaries` stays green by construction — the whole of
|
|
54
|
-
* what asks that question, now that `domainPurity` has gone at 3F-3438.
|
|
55
|
-
*/
|
|
56
|
-
/**
|
|
57
|
-
* The characteristics the portfolio carries, transcribed from `fitness-functions.md`.
|
|
58
|
-
*
|
|
59
|
-
* THE WORDS ONLY — WHICH CHECKS SIT UNDER EACH IS NOT RECORDED HERE, AND THAT IS THE POINT
|
|
60
|
-
* (3F-3410). This docblock used to carry canon's grouped-by-characteristic sentence, naming the
|
|
61
|
-
* member checks per word. Canon removed that column on 2026-09-16 and said why in terms: the list
|
|
62
|
-
* had been transcribed HERE, so one unread list had become two drifting ones, and by then most of
|
|
63
|
-
* the checks it named had been deleted from this repository. Membership is recorded once, on each
|
|
64
|
-
* product's own `specController.fitnessChecks` rows — the only place the answer is true and the
|
|
65
|
-
* only place any reconciliation reads it (`dry`: the rows are the fact).
|
|
66
|
-
*
|
|
67
|
-
* TWO GROUPS, WHICH IS CANON'S OWN SPLIT AND NOT A MEMBERSHIP CLAIM. The static checks read the
|
|
68
|
-
* source (or, for `self-balance`, the PRODUCED EVIDENCE rather than the source); the measured ones
|
|
69
|
-
* are assessed by running the suite and measuring it (canon, *Runtime fitness functions*).
|
|
70
|
-
*
|
|
71
|
-
* BARE, AND SORTED BY NEITHER. The words carry no `@` because every reader hands this list bare
|
|
72
|
-
* terms (`bareTerm`, 3F-2976), and the order is canon's own so a reader diffing the two documents
|
|
73
|
-
* reads them in the same sequence.
|
|
74
|
-
*/
|
|
75
|
-
export declare const PORTFOLIO_CHECK_CHARACTERISTICS: readonly string[];
|
|
76
|
-
/**
|
|
77
|
-
* Whether the portfolio roster carries this characteristic.
|
|
78
|
-
*
|
|
79
|
-
* EXACT, AND NEVER A NEAR-MATCH COURTESY. A word the roster does not carry is not resolved to the
|
|
80
|
-
* roster word it resembles: the mint is the act being surfaced, and quietly reading `complexty`
|
|
81
|
-
* as `complexity` would hide exactly what a caller reads this to make visible.
|
|
82
|
-
*
|
|
83
|
-
* The term arrives BARE. Every reader in this repository reaches the roster through the resolvers
|
|
84
|
-
* that already store both terms bare, so stripping a sigil here would be a second reading of what
|
|
85
|
-
* a term bare is — the disagreement between readers that 3F-2976 spent a slice removing.
|
|
86
|
-
*/
|
|
87
|
-
export declare function isPortfolioCharacteristic(characteristic: string): boolean;
|
|
88
|
-
//# sourceMappingURL=checkCharacteristics.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"checkCharacteristics.d.ts","sourceRoot":"","sources":["../../src/domain/checkCharacteristics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,+BAA+B,EAAE,SAAS,MAAM,EAmB5D,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAEzE"}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* THE PORTFOLIO'S CHECK CHARACTERISTICS — the words that may name what a fitness check asserts.
|
|
3
|
-
*
|
|
4
|
-
* WHAT THIS IS FOR NOW — A ROLL-UP VOCABULARY, NOT A GATE (3F-3167). A fitness scenario carries
|
|
5
|
-
* one tag, `@fitness`, and names its characteristic as a FIELD on its configured row. The word is
|
|
6
|
-
* therefore a REPORTING LABEL: it is what a report groups its fitness rows by and what the
|
|
7
|
-
* portfolio says out loud about where a product is weak. Nothing parses it, and no check in this
|
|
8
|
-
* repository holds a manifest to this list any more.
|
|
9
|
-
*
|
|
10
|
-
* THE GATE THAT USED TO (3F-2996, retired 3F-3167). The set of words that could name a
|
|
11
|
-
* characteristic was once read out of the target's own check registry and
|
|
12
|
-
* `specController.thresholds`, so adding a registry entry was simultaneously the act that MINTED
|
|
13
|
-
* a characteristic and the act that CERTIFIED it. Fourteen tags for seven characteristics were
|
|
14
|
-
* built over a month in a repository that reconciles its own tree on every push, and nothing
|
|
15
|
-
* redded once (3F-2994). `lint:check-characteristics` closed that, along with a minting ceremony
|
|
16
|
-
* for words canon had not named — and both left when the tag stopped doing two jobs. A word that
|
|
17
|
-
* only labels a roll-up cannot be minted into the parser by a typo, because the parser does not
|
|
18
|
-
* read it. Whether the portfolio SHOULD carry a given word is a canon question, asked of people.
|
|
19
|
-
*
|
|
20
|
-
* THE ROSTER IS STILL THE PORTFOLIO'S, AND IT STILL ARRIVES BY VERSION. Canon names this package
|
|
21
|
-
* as the machine-readable form's home — *"a `spec-controller-core` export or its own shared
|
|
22
|
-
* package … from which each product DERIVES its legal set via its pinned version, refreshed on a
|
|
23
|
-
* bump — never a hand-typed roster"* (`fitness-functions.md` → *Static checks*). Every reconciled
|
|
24
|
-
* product already installs this package to run `balance`, so the export is the smaller of the two
|
|
25
|
-
* shapes canon offers: nothing is published that was not published before, and no consumer gains
|
|
26
|
-
* a dependency. What changed at 3F-3167 is what a consumer DOES with it — group a report, not
|
|
27
|
-
* refuse a build.
|
|
28
|
-
*
|
|
29
|
-
* ON THE PUBLIC `.` BARREL, NEVER `./internal`. A roster only the monorepo can import is
|
|
30
|
-
* reachable by exactly the one product that does not need it.
|
|
31
|
-
*
|
|
32
|
-
* AND THE BARREL ENTRY IS NOT A FROZEN CONTRACT — it stays on its merits (3F-3410). This used to
|
|
33
|
-
* say the entry was a "v1 contract change", reconciled against a hand-written surface updated in
|
|
34
|
-
* the same act. Both halves are gone: that surface left at 3F-3449, and a 0.x package does not
|
|
35
|
-
* freeze its exports, it drops the dead ones in a prerelease (operator, 2026-09-16). So nothing
|
|
36
|
-
* keeps this export here by inertia, and 3F-3410 — which deleted the obligation-side observer from
|
|
37
|
-
* this same barrel for having no caller — asked directly whether this one had one. It does, and not
|
|
38
|
-
* in this repository: canon names it (below), and a sibling product holds a vendored copy naming
|
|
39
|
-
* this module as its source, to be replaced by the import. A shared vocabulary's consumers are
|
|
40
|
-
* outside the repository that publishes it, so a grep of this tree is the wrong population to
|
|
41
|
-
* measure it by.
|
|
42
|
-
*
|
|
43
|
-
* ═══ THIS FILE IS A VENDORED COPY, AND SAYS SO ═══
|
|
44
|
-
*
|
|
45
|
-
* Canon lives in the `strategy` repository, which this one's CI never checks out and a public
|
|
46
|
-
* consumer of an MIT-licensed tool would not have at all — the arrangement the operator ruled
|
|
47
|
-
* for exactly this case (2026-08-03, 3F-2296). So this list is transcribed, and
|
|
48
|
-
* holding it to canon belongs to the strategy repository's CI, where every product is visible. It
|
|
49
|
-
* says so on its face rather than leaving a reader to wonder whether the reconciliation was
|
|
50
|
-
* forgotten.
|
|
51
|
-
*
|
|
52
|
-
* PURE DATA AND ONE PREDICATE — no I/O, nothing imported, so it sits in `domain/` beside
|
|
53
|
-
* the fitness-row readers, and `pnpm lint:boundaries` stays green by construction — the whole of
|
|
54
|
-
* what asks that question, now that `domainPurity` has gone at 3F-3438.
|
|
55
|
-
*/
|
|
56
|
-
/**
|
|
57
|
-
* The characteristics the portfolio carries, transcribed from `fitness-functions.md`.
|
|
58
|
-
*
|
|
59
|
-
* THE WORDS ONLY — WHICH CHECKS SIT UNDER EACH IS NOT RECORDED HERE, AND THAT IS THE POINT
|
|
60
|
-
* (3F-3410). This docblock used to carry canon's grouped-by-characteristic sentence, naming the
|
|
61
|
-
* member checks per word. Canon removed that column on 2026-09-16 and said why in terms: the list
|
|
62
|
-
* had been transcribed HERE, so one unread list had become two drifting ones, and by then most of
|
|
63
|
-
* the checks it named had been deleted from this repository. Membership is recorded once, on each
|
|
64
|
-
* product's own `specController.fitnessChecks` rows — the only place the answer is true and the
|
|
65
|
-
* only place any reconciliation reads it (`dry`: the rows are the fact).
|
|
66
|
-
*
|
|
67
|
-
* TWO GROUPS, WHICH IS CANON'S OWN SPLIT AND NOT A MEMBERSHIP CLAIM. The static checks read the
|
|
68
|
-
* source (or, for `self-balance`, the PRODUCED EVIDENCE rather than the source); the measured ones
|
|
69
|
-
* are assessed by running the suite and measuring it (canon, *Runtime fitness functions*).
|
|
70
|
-
*
|
|
71
|
-
* BARE, AND SORTED BY NEITHER. The words carry no `@` because every reader hands this list bare
|
|
72
|
-
* terms (`bareTerm`, 3F-2976), and the order is canon's own so a reader diffing the two documents
|
|
73
|
-
* reads them in the same sequence.
|
|
74
|
-
*/
|
|
75
|
-
export const PORTFOLIO_CHECK_CHARACTERISTICS = [
|
|
76
|
-
// Static checks
|
|
77
|
-
"complexity",
|
|
78
|
-
"function-length",
|
|
79
|
-
"tech-conformance",
|
|
80
|
-
"vocab",
|
|
81
|
-
"traceability",
|
|
82
|
-
"lint",
|
|
83
|
-
"flag-hygiene",
|
|
84
|
-
"doc-accuracy",
|
|
85
|
-
"typecheck",
|
|
86
|
-
"security",
|
|
87
|
-
"licence",
|
|
88
|
-
"bundle-size",
|
|
89
|
-
"self-balance",
|
|
90
|
-
// Measured
|
|
91
|
-
"ci-run-time",
|
|
92
|
-
"coverage",
|
|
93
|
-
"mutation",
|
|
94
|
-
];
|
|
95
|
-
/**
|
|
96
|
-
* Whether the portfolio roster carries this characteristic.
|
|
97
|
-
*
|
|
98
|
-
* EXACT, AND NEVER A NEAR-MATCH COURTESY. A word the roster does not carry is not resolved to the
|
|
99
|
-
* roster word it resembles: the mint is the act being surfaced, and quietly reading `complexty`
|
|
100
|
-
* as `complexity` would hide exactly what a caller reads this to make visible.
|
|
101
|
-
*
|
|
102
|
-
* The term arrives BARE. Every reader in this repository reaches the roster through the resolvers
|
|
103
|
-
* that already store both terms bare, so stripping a sigil here would be a second reading of what
|
|
104
|
-
* a term bare is — the disagreement between readers that 3F-2976 spent a slice removing.
|
|
105
|
-
*/
|
|
106
|
-
export function isPortfolioCharacteristic(characteristic) {
|
|
107
|
-
return PORTFOLIO_CHECK_CHARACTERISTICS.includes(characteristic);
|
|
108
|
-
}
|
|
109
|
-
//# sourceMappingURL=checkCharacteristics.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"checkCharacteristics.js","sourceRoot":"","sources":["../../src/domain/checkCharacteristics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAsB;IAChE,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB,kBAAkB;IAClB,OAAO;IACP,cAAc;IACd,MAAM;IACN,cAAc;IACd,cAAc;IACd,WAAW;IACX,UAAU;IACV,SAAS;IACT,aAAa;IACb,cAAc;IACd,WAAW;IACX,aAAa;IACb,UAAU;IACV,UAAU;CACX,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,yBAAyB,CAAC,cAAsB;IAC9D,OAAO,+BAA+B,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* THE FITNESS CHECK ROWS — what a CONVERTED check says about itself, keyed by the `@SCN` it is
|
|
3
|
-
* about.
|
|
4
|
-
*
|
|
5
|
-
* @SCN the row what the corpus then reads
|
|
6
|
-
* SCN-FIT-001 { characteristic: complexity } a @fitness scenario owes `complexity`
|
|
7
|
-
*
|
|
8
|
-
* THE TAG NAMES THE AXIS AND THE ROW NAMES THE SUBJECT. A bare characteristic tag answered two
|
|
9
|
-
* questions at once — how a claim is proved, and what it is about — and the tier tags answer only
|
|
10
|
-
* the first. So a converted scenario carries `@fitness` alone, and the characteristic moves here,
|
|
11
|
-
* where it stays a first-class word the roll-up still groups by.
|
|
12
|
-
*
|
|
13
|
-
* NOT A SECOND OBLIGATION SHAPE. What a `@fitness` scenario raises is the same
|
|
14
|
-
* `{ qualityCheck: "lint", staticCheck: <characteristic> }` a registered bare tag raises today, so
|
|
15
|
-
* the pair key, the reconciler's static arm and the report's roll-up are all untouched. What
|
|
16
|
-
* changed is only where the word came from.
|
|
17
|
-
*
|
|
18
|
-
* NOT THE (RETIRED) CHECK REGISTRY, AND THE DIFFERENCE IS THE SEAM THIS RETIRES. That registry
|
|
19
|
-
* answered "which check is this runnable script handle", because a handle does not know what it
|
|
20
|
-
* is for; the `@SCN`
|
|
21
|
-
* is then resolved through the corpus, a second hop. A converted check is never discovered as a
|
|
22
|
-
* handle — it is a scenario that ran, carrying its own tag line — so the `@SCN` is the KEY here
|
|
23
|
-
* rather than something a lookup has to recover.
|
|
24
|
-
*
|
|
25
|
-
* PURE AND INJECTED — the rows arrive as data, read from the TARGET's own manifest at the app edge
|
|
26
|
-
* (`specController.fitnessChecks`), the stance the retired `thresholdsOf` took. A target that
|
|
27
|
-
* configures nothing raises nothing, so the reading is inert on a corpus
|
|
28
|
-
* nobody has converted.
|
|
29
|
-
*/
|
|
30
|
-
/**
|
|
31
|
-
* ONE CONFIGURED ROW as the obligation rule reads it.
|
|
32
|
-
*
|
|
33
|
-
* The `scn` a row states is not a member here: it is this index's KEY, so a row cannot name one
|
|
34
|
-
* scenario and be filed under another. The command a row states is not a member either — it is the
|
|
35
|
-
* COMMAND half of the row and nothing on the debit side reads it. Every row is credited by its own
|
|
36
|
-
* step's outcome in the run's record, so the characteristic is the whole of what the ledger reads.
|
|
37
|
-
*/
|
|
38
|
-
export interface FitnessCheck {
|
|
39
|
-
/** The bare characteristic this check asserts (`complexity`). */
|
|
40
|
-
readonly characteristic: string;
|
|
41
|
-
}
|
|
42
|
-
/** The rows as the rule reads them — bare `@SCN` → the row naming that scenario's check. */
|
|
43
|
-
export type FitnessCheckIndex = ReadonlyMap<string, FitnessCheck>;
|
|
44
|
-
/**
|
|
45
|
-
* Build the index from the rows a manifest holds.
|
|
46
|
-
*
|
|
47
|
-
* A LIST, NOT A BLOCK KEYED BY `@SCN`, and the shape is the row's own argument: a row is what a
|
|
48
|
-
* check says about ITSELF — its `@SCN`, its characteristic, its command — so no one of those three
|
|
49
|
-
* is promoted above the others by being the key somebody has to write it under. The `@SCN` becomes
|
|
50
|
-
* the key HERE, where a lookup needs one.
|
|
51
|
-
*
|
|
52
|
-
* A MALFORMED ROW IS DROPPED, NOT TRUSTED AND NOT THROWN ON — the defensive stance the whole
|
|
53
|
-
* `specController.*` family takes. Config is data from outside, and a reader that throws on a typo
|
|
54
|
-
* turns one bad character into a run that produces no verdict at all, which is loud nowhere; a
|
|
55
|
-
* dropped row leaves its scenario naming no characteristic, which the corpus reports.
|
|
56
|
-
*/
|
|
57
|
-
export declare function fitnessChecksOf(entries: unknown): FitnessCheckIndex;
|
|
58
|
-
/**
|
|
59
|
-
* ONE CONFIGURED ROW THE TARGET'S CORPUS CARRIES NO SCENARIO FOR (3F-3472) — a check the manifest
|
|
60
|
-
* declares and nothing in the corpus specifies.
|
|
61
|
-
*
|
|
62
|
-
* THE MIRROR OF `unconfiguredFitnessScenarios`, AND THE HALF THE BOOKS COULD NOT SEE. That one
|
|
63
|
-
* reads a `@fitness` scenario no row names; this reads a row no scenario names. The asymmetry
|
|
64
|
-
* between what each EARNS is the two facts' own: a scenario naming no row names no characteristic,
|
|
65
|
-
* so there is nothing to put on the books and the census says who — a row names one, so there IS a
|
|
66
|
-
* debit, and `features/fitness-checks.feature` promises it as "an Evidence Obligation nothing
|
|
67
|
-
* observed".
|
|
68
|
-
*
|
|
69
|
-
* IT CARRIES THE CHARACTERISTIC BECAUSE THE OBLIGATION IT RAISES NAMES ONE. The `@SCN` alone would
|
|
70
|
-
* leave the reader of this reading to go back to the index for the other half, which is the second
|
|
71
|
-
* read `readTargetCorpus` composes its readings together to foreclose.
|
|
72
|
-
*/
|
|
73
|
-
export interface UnspecifiedFitnessRow {
|
|
74
|
-
/** The `@SCN` the row states, which no scenario in the target's corpus carries. */
|
|
75
|
-
readonly scnId: string;
|
|
76
|
-
/** The bare characteristic the row asserts (`complexity`) — what its debit is owed at. */
|
|
77
|
-
readonly characteristic: string;
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=fitnessChecks.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fitnessChecks.d.ts","sourceRoot":"","sources":["../../src/domain/fitnessChecks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,iEAAiE;IACjE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,4FAA4F;AAC5F,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AA2BlE;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,iBAAiB,CAQnE;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,qBAAqB;IACpC,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0FAA0F;IAC1F,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* THE FITNESS CHECK ROWS — what a CONVERTED check says about itself, keyed by the `@SCN` it is
|
|
3
|
-
* about.
|
|
4
|
-
*
|
|
5
|
-
* @SCN the row what the corpus then reads
|
|
6
|
-
* SCN-FIT-001 { characteristic: complexity } a @fitness scenario owes `complexity`
|
|
7
|
-
*
|
|
8
|
-
* THE TAG NAMES THE AXIS AND THE ROW NAMES THE SUBJECT. A bare characteristic tag answered two
|
|
9
|
-
* questions at once — how a claim is proved, and what it is about — and the tier tags answer only
|
|
10
|
-
* the first. So a converted scenario carries `@fitness` alone, and the characteristic moves here,
|
|
11
|
-
* where it stays a first-class word the roll-up still groups by.
|
|
12
|
-
*
|
|
13
|
-
* NOT A SECOND OBLIGATION SHAPE. What a `@fitness` scenario raises is the same
|
|
14
|
-
* `{ qualityCheck: "lint", staticCheck: <characteristic> }` a registered bare tag raises today, so
|
|
15
|
-
* the pair key, the reconciler's static arm and the report's roll-up are all untouched. What
|
|
16
|
-
* changed is only where the word came from.
|
|
17
|
-
*
|
|
18
|
-
* NOT THE (RETIRED) CHECK REGISTRY, AND THE DIFFERENCE IS THE SEAM THIS RETIRES. That registry
|
|
19
|
-
* answered "which check is this runnable script handle", because a handle does not know what it
|
|
20
|
-
* is for; the `@SCN`
|
|
21
|
-
* is then resolved through the corpus, a second hop. A converted check is never discovered as a
|
|
22
|
-
* handle — it is a scenario that ran, carrying its own tag line — so the `@SCN` is the KEY here
|
|
23
|
-
* rather than something a lookup has to recover.
|
|
24
|
-
*
|
|
25
|
-
* PURE AND INJECTED — the rows arrive as data, read from the TARGET's own manifest at the app edge
|
|
26
|
-
* (`specController.fitnessChecks`), the stance the retired `thresholdsOf` took. A target that
|
|
27
|
-
* configures nothing raises nothing, so the reading is inert on a corpus
|
|
28
|
-
* nobody has converted.
|
|
29
|
-
*/
|
|
30
|
-
import { bareTerm } from "../lib/bareTerm.js";
|
|
31
|
-
/**
|
|
32
|
-
* One entry as a manifest spells it, read into the pair a lookup can use, or `null` where it names
|
|
33
|
-
* nothing one can.
|
|
34
|
-
*
|
|
35
|
-
* BOTH TERMS ARE STORED BARE. A manifest written by hand will sooner or later spell an `@SCN` — and
|
|
36
|
-
* a characteristic — the way a feature file does, and both lookups match bare; stripping once here
|
|
37
|
-
* rather than at every call site is the stance the retired `thresholdsOf` took.
|
|
38
|
-
*
|
|
39
|
-
* A ROW NAMING NEITHER TERM IS DROPPED WHOLE, never half-read. The two terms make one claim
|
|
40
|
-
* together — THIS scenario asserts THIS characteristic — so a row missing either says nothing a
|
|
41
|
-
* lookup can act on, and there is no lenient reading that does not invent one of them.
|
|
42
|
-
*/
|
|
43
|
-
function fitnessCheckOf(entry) {
|
|
44
|
-
// THE TWO STRING READS ARE THE WHOLE GUARD, and a shape test ahead of them would add no teeth: a
|
|
45
|
-
// string, a number, a list and a function all answer `undefined` here, so each is refused by the
|
|
46
|
-
// read that matters rather than by a clause restating it. The optional chain is what covers the
|
|
47
|
-
// two values a property read would throw on.
|
|
48
|
-
const named = entry;
|
|
49
|
-
if (typeof named?.scn !== "string" || typeof named.characteristic !== "string")
|
|
50
|
-
return null;
|
|
51
|
-
const scnId = bareTerm(named.scn);
|
|
52
|
-
const characteristic = bareTerm(named.characteristic);
|
|
53
|
-
if (scnId === "" || characteristic === "")
|
|
54
|
-
return null;
|
|
55
|
-
return [scnId, { characteristic }];
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Build the index from the rows a manifest holds.
|
|
59
|
-
*
|
|
60
|
-
* A LIST, NOT A BLOCK KEYED BY `@SCN`, and the shape is the row's own argument: a row is what a
|
|
61
|
-
* check says about ITSELF — its `@SCN`, its characteristic, its command — so no one of those three
|
|
62
|
-
* is promoted above the others by being the key somebody has to write it under. The `@SCN` becomes
|
|
63
|
-
* the key HERE, where a lookup needs one.
|
|
64
|
-
*
|
|
65
|
-
* A MALFORMED ROW IS DROPPED, NOT TRUSTED AND NOT THROWN ON — the defensive stance the whole
|
|
66
|
-
* `specController.*` family takes. Config is data from outside, and a reader that throws on a typo
|
|
67
|
-
* turns one bad character into a run that produces no verdict at all, which is loud nowhere; a
|
|
68
|
-
* dropped row leaves its scenario naming no characteristic, which the corpus reports.
|
|
69
|
-
*/
|
|
70
|
-
export function fitnessChecksOf(entries) {
|
|
71
|
-
if (!Array.isArray(entries))
|
|
72
|
-
return new Map();
|
|
73
|
-
const index = new Map();
|
|
74
|
-
for (const entry of entries) {
|
|
75
|
-
const row = fitnessCheckOf(entry);
|
|
76
|
-
if (row !== null)
|
|
77
|
-
index.set(row[0], row[1]);
|
|
78
|
-
}
|
|
79
|
-
return index;
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=fitnessChecks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fitnessChecks.js","sourceRoot":"","sources":["../../src/domain/fitnessChecks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAkB9C;;;;;;;;;;;GAWG;AACH,SAAS,cAAc,CAAC,KAAc;IACpC,iGAAiG;IACjG,iGAAiG;IACjG,gGAAgG;IAChG,6CAA6C;IAC7C,MAAM,KAAK,GAAG,KAAuE,CAAC;IACtF,IAAI,OAAO,KAAK,EAAE,GAAG,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC5F,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACtD,IAAI,KAAK,KAAK,EAAE,IAAI,cAAc,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACvD,OAAO,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,OAA6B,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,GAAG,KAAK,IAAI;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|