@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qualityCheckReconciliation.js","sourceRoot":"","sources":["../../src/domain/qualityCheckReconciliation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"qualityCheckReconciliation.js","sourceRoot":"","sources":["../../src/domain/qualityCheckReconciliation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* THE ERROR A REFUSED MINTING THROWS (@SCN-MSG-001, 3F-2872) — a code and its parameters, with the
|
|
3
|
-
* prose derived rather than embedded.
|
|
4
|
-
*
|
|
5
|
-
* `message` is still rendered, by indexing the catalogue, so a stack trace reads as it always did;
|
|
6
|
-
* what a CALLER reads is `code` and `fault`, and that is the whole contract. No test reads the
|
|
7
|
-
* message, and none may: the prose is the one thing here allowed to be rewritten without a ticket.
|
|
8
|
-
*
|
|
9
|
-
* WHY THIS IS ITS OWN MODULE, AND NOT BESIDE THE ENUM. The catalogue must import the enum to key
|
|
10
|
-
* itself, and this class must import the catalogue to render. Housing the class with the enum
|
|
11
|
-
* therefore closes a RUNTIME import cycle: entering at `qualityCheckFault.ts` would evaluate the
|
|
12
|
-
* catalogue while the enum was still uninitialised, and every computed key would read `undefined`.
|
|
13
|
-
* Splitting the vocabulary (the enum + union), the data (the catalogue) and the behaviour (this
|
|
14
|
-
* class) into three modules makes the dependency a straight line — and leaves the catalogue alone
|
|
15
|
-
* in its file, which is what lets `stryker.config.mjs`'s `mutate` exclusion name a pure-data target
|
|
16
|
-
* and nothing else. The exclusion is the config's, not a scenario's: @SCN-MSG-002 claims only that
|
|
17
|
-
* every code has a message carrying its own fault's parameters (3F-3490).
|
|
18
|
-
*/
|
|
19
1
|
import { QualityCheckFaultCode, type QualityCheckFault } from "./qualityCheckFault.js";
|
|
20
2
|
export declare class QualityCheckReconciliationFault extends Error {
|
|
21
3
|
readonly fault: QualityCheckFault;
|
|
22
4
|
constructor(fault: QualityCheckFault);
|
|
23
|
-
/** Which divergence this is — the discriminant, lifted for a caller that does not want the payload. */
|
|
24
5
|
get code(): QualityCheckFaultCode;
|
|
25
6
|
}
|
|
26
7
|
//# sourceMappingURL=qualityCheckReconciliationFault.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qualityCheckReconciliationFault.d.ts","sourceRoot":"","sources":["../../src/domain/qualityCheckReconciliationFault.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"qualityCheckReconciliationFault.d.ts","sourceRoot":"","sources":["../../src/domain/qualityCheckReconciliationFault.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGvF,qBAAa,+BAAgC,SAAQ,KAAK;IAC5C,QAAQ,CAAC,KAAK,EAAE,iBAAiB;gBAAxB,KAAK,EAAE,iBAAiB;IAK7C,IAAI,IAAI,IAAI,qBAAqB,CAEhC;CACF"}
|
|
@@ -1,34 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
* THE ERROR A REFUSED MINTING THROWS (@SCN-MSG-001, 3F-2872) — a code and its parameters, with the
|
|
3
|
-
* prose derived rather than embedded.
|
|
4
|
-
*
|
|
5
|
-
* `message` is still rendered, by indexing the catalogue, so a stack trace reads as it always did;
|
|
6
|
-
* what a CALLER reads is `code` and `fault`, and that is the whole contract. No test reads the
|
|
7
|
-
* message, and none may: the prose is the one thing here allowed to be rewritten without a ticket.
|
|
8
|
-
*
|
|
9
|
-
* WHY THIS IS ITS OWN MODULE, AND NOT BESIDE THE ENUM. The catalogue must import the enum to key
|
|
10
|
-
* itself, and this class must import the catalogue to render. Housing the class with the enum
|
|
11
|
-
* therefore closes a RUNTIME import cycle: entering at `qualityCheckFault.ts` would evaluate the
|
|
12
|
-
* catalogue while the enum was still uninitialised, and every computed key would read `undefined`.
|
|
13
|
-
* Splitting the vocabulary (the enum + union), the data (the catalogue) and the behaviour (this
|
|
14
|
-
* class) into three modules makes the dependency a straight line — and leaves the catalogue alone
|
|
15
|
-
* in its file, which is what lets `stryker.config.mjs`'s `mutate` exclusion name a pure-data target
|
|
16
|
-
* and nothing else. The exclusion is the config's, not a scenario's: @SCN-MSG-002 claims only that
|
|
17
|
-
* every code has a message carrying its own fault's parameters (3F-3490).
|
|
18
|
-
*/
|
|
19
|
-
import { QUALITY_CHECK_FAULT_MESSAGES } from "./qualityCheckFaultMessages.js";
|
|
1
|
+
import { QUALITY_CHECK_FAULT_MESSAGES } from "./messages.js";
|
|
20
2
|
export class QualityCheckReconciliationFault extends Error {
|
|
21
3
|
fault;
|
|
22
4
|
constructor(fault) {
|
|
23
|
-
// The cast is the standard correlated-union workaround: TypeScript cannot see that
|
|
24
|
-
// `MESSAGES[fault.code]` accepts this `fault`, though the mapped type guarantees it key by key.
|
|
25
5
|
super(QUALITY_CHECK_FAULT_MESSAGES[fault.code](fault));
|
|
26
6
|
this.fault = fault;
|
|
27
|
-
// The identifier, never a re-typed string: a literal here would put the class's own name back
|
|
28
|
-
// on the mutated surface — the exact move this feature exists to undo.
|
|
29
7
|
this.name = QualityCheckReconciliationFault.name;
|
|
30
8
|
}
|
|
31
|
-
/** Which divergence this is — the discriminant, lifted for a caller that does not want the payload. */
|
|
32
9
|
get code() {
|
|
33
10
|
return this.fault.code;
|
|
34
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qualityCheckReconciliationFault.js","sourceRoot":"","sources":["../../src/domain/qualityCheckReconciliationFault.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"qualityCheckReconciliationFault.js","sourceRoot":"","sources":["../../src/domain/qualityCheckReconciliationFault.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAE7D,MAAM,OAAO,+BAAgC,SAAQ,KAAK;IACnC;IAArB,YAAqB,KAAwB;QAC3C,KAAK,CAAE,4BAA4B,CAAC,KAAK,CAAC,IAAI,CAAsC,CAAC,KAAK,CAAC,CAAC,CAAC;QAD1E,UAAK,GAAL,KAAK,CAAmB;QAE3C,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC,IAAI,CAAC;IACnD,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type ScenarioCodeErrorKind = "foreign-scn-code" | "no-feature-code" | "duplicate-feature-code";
|
|
2
|
+
export interface ScenarioCodeError {
|
|
3
|
+
readonly kind: ScenarioCodeErrorKind;
|
|
4
|
+
readonly files: readonly string[];
|
|
5
|
+
readonly namedFeatureCode?: string;
|
|
6
|
+
readonly namedFeatureFiles?: readonly string[];
|
|
7
|
+
readonly message: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ScenarioCodePopulation {
|
|
10
|
+
readonly featureFiles: number;
|
|
11
|
+
readonly featureCodes: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function hasScenarioCodeErrors(reconciliation: {
|
|
14
|
+
readonly scenarioCodeErrors?: readonly ScenarioCodeError[];
|
|
15
|
+
}): boolean;
|
|
16
|
+
//# sourceMappingURL=scenarioCodeError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scenarioCodeError.d.ts","sourceRoot":"","sources":["../../src/domain/scenarioCodeError.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,wBAAwB,CAAC;AAEtG,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,qBAAqB,CAAC,cAAc,EAAE;IACpD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC5D,GAAG,OAAO,CAEV"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scenarioCodeError.js","sourceRoot":"","sources":["../../src/domain/scenarioCodeError.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,qBAAqB,CAAC,cAErC;IACC,OAAO,CAAC,cAAc,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -1,226 +1,21 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* THE SCENARIO RECONCILIATION — the account (canon: "bookkeeping term: Account"), holding its
|
|
3
|
-
* posted debits and credits, its reconciled sub-rows, and its binary verdict. This module
|
|
4
|
-
* co-locates the concept's type with its OWN behaviour: `verdictFor` (the binary roll-up) and
|
|
5
|
-
* `reconcilingItemsOf` (the non-balanced items), the pure derivations that were the reconcile
|
|
6
|
-
* orchestration's private helpers (module, not class; the rule lives WITH the concept).
|
|
7
|
-
*/
|
|
8
1
|
import type { EvidenceObligation, EvidenceObservation, PendingItem } from "./journal.js";
|
|
9
2
|
import type { QualityCheckReconciliation } from "./qualityCheckReconciliation.js";
|
|
10
|
-
/**
|
|
11
|
-
* The scenario-level VERDICT — its OWN type, distinct from Outcome
|
|
12
|
-
* (superseding the `ScenarioOutcome = Outcome` collapse).
|
|
13
|
-
*
|
|
14
|
-
* A ledger is BINARY: `balanced` (every evidenceObligation balances — zero
|
|
15
|
-
* reconciling items) or `out-of-balance` (one or more). The two discrepancy kinds
|
|
16
|
-
* (failing, missing) are different problems, not points
|
|
17
|
-
* on one scale, so the verdict does NOT rank them into a single picked outcome — an
|
|
18
|
-
* out-of-balance scenario carries the full LIST of its non-balanced reconciling
|
|
19
|
-
* items (`ScenarioReconciliation.reconcilingItems`), reported in full by the renderers.
|
|
20
|
-
*/
|
|
21
3
|
export type ScenarioVerdict = "balanced" | "out-of-balance";
|
|
22
|
-
/**
|
|
23
|
-
* The scenario-kind discriminator — which KIND of scenario a Scenario
|
|
24
|
-
* Reconciliation row is *about* (Account ≠ Scenario):
|
|
25
|
-
* - `scenario` — a real scenario (the ordinary row).
|
|
26
|
-
* - `phantom-scenario` — a cited-but-UNKNOWN scenario id: an evidence observation
|
|
27
|
-
* cites an `@SCN` no feature carries (outcome
|
|
28
|
-
* `cites-unknown-scenario`; @SCN-LDG-006).
|
|
29
|
-
* - `suspense-scenario` — the placeholder for credits citing NO scenario (outcome
|
|
30
|
-
* `cites-no-scenario`; arrives with LDG-007).
|
|
31
|
-
* The enum carries all three now; LDG-006 PRODUCES only `scenario` + `phantom-scenario`.
|
|
32
|
-
* Reserve `scenario`/`scenarios` for the real kind — the collection is the
|
|
33
|
-
* `scenarioReconciliations`, never `scenarios`.
|
|
34
|
-
*/
|
|
35
4
|
export type ScenarioKind = "scenario" | "phantom-scenario" | "suspense-scenario";
|
|
36
|
-
/** A scenario's reconciliation outcome — its per-evidenceObligation outcomes + the verdict. */
|
|
37
5
|
export interface ScenarioReconciliation {
|
|
38
6
|
scnId: string;
|
|
39
|
-
/**
|
|
40
|
-
* The scenario-kind this row is about — `scenario` on a real row, `phantom-scenario` on a
|
|
41
|
-
* cited-but-unknown row, `suspense-scenario` on the cites-nothing placeholder.
|
|
42
|
-
*
|
|
43
|
-
* REQUIRED (3F-1861). It was optional, defaulting to `scenario`, "for back-compat with
|
|
44
|
-
* hand-built fixtures" — the model made ambiguous to accommodate the test data. Stating the
|
|
45
|
-
* kind is now unskippable.
|
|
46
|
-
*/
|
|
47
7
|
kind: ScenarioKind;
|
|
48
|
-
/**
|
|
49
|
-
* The binary scenario verdict: `balanced` iff EVERY required quality-check
|
|
50
|
-
* balances; otherwise `out-of-balance`.
|
|
51
|
-
*/
|
|
52
8
|
verdict: ScenarioVerdict;
|
|
53
|
-
/**
|
|
54
|
-
* The POSTED CREDITS — every evidence observation that posts to THIS account (@SCN-LDG-022).
|
|
55
|
-
* The account is the Scenario Reconciliation (canon: "bookkeeping term: Account"), and this is
|
|
56
|
-
* where its credits SIT: canon's Ledger is "the evidence obligations (debits) and evidence
|
|
57
|
-
* observations (credits) organised by real or invented scenario, keyed by quality-check".
|
|
58
|
-
* Named for canon's vocabulary — NEVER `credits`, which is the bookkeeping ROOT of the metaphor,
|
|
59
|
-
* not the vocabulary (the same reason Evidence Reconciliation rejects the alias "trial balance",
|
|
60
|
-
* "kept as the bookkeeping root of the metaphor").
|
|
61
|
-
*
|
|
62
|
-
* POSTING IS NOT CLASSIFYING. An observation posts here whatever it later reconciles to — or
|
|
63
|
-
* even when it reconciles to NOTHING. A credit citing a `<quality-check>pending` obligation
|
|
64
|
-
* produces no `QualityCheckReconciliation` at all (the obligation is partitioned off before the
|
|
65
|
-
* match, and the pending pair keeps the credit out of `no-evidence-obligation`), and it posts here ANYWAY:
|
|
66
|
-
* a misclassification must MISFILE an entry, never vaporise it. So this array is NOT derivable
|
|
67
|
-
* from `qualityCheckReconciliations` — that is the whole point of the layer.
|
|
68
|
-
*
|
|
69
|
-
* THE ACCOUNT IS THE CITATION, never the outcome. A credit citing a REAL @SCN posts to that
|
|
70
|
-
* scenario's account; one citing an unknown @SCN posts to that phantom account; one citing NO
|
|
71
|
-
* scenario posts to suspense. Exactly one account each, jointly exhaustive over the input.
|
|
72
|
-
*
|
|
73
|
-
* REQUIRED (3F-1861) — `[]` states "nothing posted" explicitly. It was optional, defaulting to
|
|
74
|
-
* `[]` "for back-compat with hand-built fixtures", which collapsed "nothing posted" and
|
|
75
|
-
* "unstated" into the same absence: a reader could not tell them apart, and a fold read 0 on a
|
|
76
|
-
* fixture that had merely never spoken.
|
|
77
|
-
*/
|
|
78
9
|
evidenceObservations: EvidenceObservation[];
|
|
79
|
-
/**
|
|
80
|
-
* The POSTED DEBITS — every evidence obligation THIS scenario RAISES (@SCN-LDG-023), keyed by
|
|
81
|
-
* quality-check. The debit half of `evidenceObservations` above: canon's Ledger is "the evidence
|
|
82
|
-
* obligations (debits) and evidence observations (credits) organised by real or invented
|
|
83
|
-
* scenario, KEYED BY QUALITY-CHECK", and this is where an account's debits SIT.
|
|
84
|
-
*
|
|
85
|
-
* Named for canon's vocabulary — NEVER `debits`, the bookkeeping ROOT of the metaphor rather than
|
|
86
|
-
* the vocabulary (the same reason Evidence Reconciliation rejects the alias "trial balance",
|
|
87
|
-
* "kept as the bookkeeping root of the metaphor"). The name is free because 3F-1846 renamed the
|
|
88
|
-
* misnomer that held it — see `qualityCheckReconciliations` below.
|
|
89
|
-
*
|
|
90
|
-
* POSTING IS NOT CLASSIFYING, on this side too. A `<quality-check>pending` obligation partitions
|
|
91
|
-
* off to a one-sided Pending Item BEFORE the observation match and earns NO
|
|
92
|
-
* `QualityCheckReconciliation` at all — and it posts here ANYWAY. So this array is NOT derivable
|
|
93
|
-
* from `qualityCheckReconciliations`; that is the whole point of the layer.
|
|
94
|
-
*
|
|
95
|
-
* THE ACCOUNT IS THE SCENARIO ITSELF. Unlike a credit there is no citation to follow and no
|
|
96
|
-
* suspense: an obligation always has a real account, by construction. The accounts a CREDIT
|
|
97
|
-
* mints — phantom and suspense — raise nothing, so their debit side is empty. That asymmetry
|
|
98
|
-
* is real, not an omission.
|
|
99
|
-
*
|
|
100
|
-
* REQUIRED (3F-1861) — `[]` states "nothing raised" explicitly, which is the honest value on a
|
|
101
|
-
* phantom or suspense account. It was optional, defaulting to `[]` "for back-compat with
|
|
102
|
-
* hand-built fixtures", which made the real asymmetry above indistinguishable from a fixture
|
|
103
|
-
* that had simply not said.
|
|
104
|
-
*/
|
|
105
10
|
evidenceObligations: EvidenceObligation[];
|
|
106
|
-
/**
|
|
107
|
-
* Every reconciled quality-check's outcome (the full per-quality-check breakdown) — the SUB-ROWS
|
|
108
|
-
* of this account, typed `QualityCheckReconciliation[]`. Renamed from `evidenceObligations`
|
|
109
|
-
* (3F-1846): it holds reconciled sub-rows, not posted debits, and canon lists "reconciled
|
|
110
|
-
* evidence obligation" under Quality Check Reconciliation's REJECTED ALIASES — so the old name
|
|
111
|
-
* carried a rejected alias. The rename frees `evidenceObligations` for the real posted debits
|
|
112
|
-
* (3F-1847).
|
|
113
|
-
*/
|
|
114
11
|
qualityCheckReconciliations: QualityCheckReconciliation[];
|
|
115
|
-
/**
|
|
116
|
-
* The non-balanced reconciling items — EMPTY when balanced; otherwise EVERY
|
|
117
|
-
* non-balanced evidenceObligation (no prioritisation, no picked winner), in document
|
|
118
|
-
* order. This is the list an out-of-balance verdict carries.
|
|
119
|
-
*/
|
|
120
12
|
reconcilingItems: QualityCheckReconciliation[];
|
|
121
|
-
/**
|
|
122
|
-
* The one-sided PENDING ITEMS — one per `<quality-check>pending` obligation the
|
|
123
|
-
* scenario carries (evidence-manifesto §11B). PARTITIONED OFF before reconciliation:
|
|
124
|
-
* a Pending Item is never a Reconciling Item (never in `evidenceObligations` /
|
|
125
|
-
* `reconcilingItems`), so `verdictFor` / `reconcilingItemsOf` / `isBalanced` need no
|
|
126
|
-
* pending-awareness. REQUIRED — `[]` when the scenario raised no pending obligation. (The
|
|
127
|
-
* comment here claimed it was OPTIONAL with an `ABSENCE ≡ []` default; the field never was.
|
|
128
|
-
* Corrected with 3F-1861, which removed that convention from the fields that really had it.)
|
|
129
|
-
*/
|
|
130
13
|
pendingItems: PendingItem[];
|
|
131
14
|
}
|
|
132
|
-
/**
|
|
133
|
-
* Reduce a scenario's reconciling items to its binary VERDICT:
|
|
134
|
-
* `balanced` IFF the scenario has NO reconciling item; otherwise `out-of-balance`,
|
|
135
|
-
* carrying the FULL list of non-balanced items (no prioritisation, no picked
|
|
136
|
-
* winner — `reconcilingItemsOf` carries them all, the renderers list them all).
|
|
137
|
-
* The verdict is DERIVED from reconciling-item emptiness, so the two stay in lock
|
|
138
|
-
* step by construction (an out-of-balance verdict always has ≥1 item; a balanced
|
|
139
|
-
* one always has zero).
|
|
140
|
-
*
|
|
141
|
-
* Empty-list case (@SCN-PND-007): a scenario reconciling to an EMPTY
|
|
142
|
-
* evidenceObligations set has no reconciling item, so it is `balanced` — verdict-neutral.
|
|
143
|
-
* This is the ONLY-PENDING scenario: its sole obligation partitioned off to a
|
|
144
|
-
* one-sided Pending Item upstream, leaving zero reconciled rows. A Pending Item
|
|
145
|
-
* never contributes a reconciling item, so it never tips the verdict. (Deriving
|
|
146
|
-
* from emptiness — not `every satisfied` over a non-empty list — is what makes the
|
|
147
|
-
* empty list read `balanced` rather than the earlier vacuous `out-of-balance`.)
|
|
148
|
-
*
|
|
149
|
-
* Both-missing is NOT this case: the degenerate zero-rows-on-both-sides scenario
|
|
150
|
-
* (no obligation, no pending, no citing observation) is posted ONE `both-missing`
|
|
151
|
-
* reconciling item UPSTREAM by `reconcile`, so its list is NON-empty and it stays
|
|
152
|
-
* `out-of-balance` — untouched by the emptiness derivation.
|
|
153
|
-
*/
|
|
154
15
|
export declare function verdictFor(evidenceObligations: QualityCheckReconciliation[]): ScenarioVerdict;
|
|
155
|
-
/**
|
|
156
|
-
* The non-balanced reconciling items — EVERY one (no prioritisation, no picked
|
|
157
|
-
* winner), in document order. Empty when the scenario is balanced.
|
|
158
|
-
*/
|
|
159
16
|
export declare function reconcilingItemsOf(evidenceObligations: QualityCheckReconciliation[]): QualityCheckReconciliation[];
|
|
160
|
-
/**
|
|
161
|
-
* Is this row about a REAL scenario? (3F-2230.)
|
|
162
|
-
*
|
|
163
|
-
* Canon, Scenario: a `Scenario` names only the REAL thing — a cited-but-unknown id is a
|
|
164
|
-
* **phantom scenario**, and the bucket for uncited credits is the **suspense scenario**; neither
|
|
165
|
-
* is a scenario. This function is that sentence; every consumer that needs the real-scenario cut
|
|
166
|
-
* asks it rather than restating it.
|
|
167
|
-
*
|
|
168
|
-
* It had no home and was open-coded FIVE times — four in the renderer, one in the Ledger's lint
|
|
169
|
-
* fold — as the double negative `kind !== "phantom-scenario" && kind !== "suspense-scenario"`. They
|
|
170
|
-
* agreed by copy, not by construction: any one could have grown a clause alone and nothing would
|
|
171
|
-
* have redded.
|
|
172
|
-
*
|
|
173
|
-
* STATED POSITIVELY, which is not merely tidier. `ScenarioKind` has exactly three values, so the
|
|
174
|
-
* double negative is equivalent TODAY — but only by exhaustion. A fourth kind would silently fall
|
|
175
|
-
* into the real-scenario cut under the negative form and be excluded under this one, and canon is
|
|
176
|
-
* unambiguous about which is right: `scenario` is reserved for the REAL thing, so a kind nobody
|
|
177
|
-
* has taught this function about is not one.
|
|
178
|
-
*/
|
|
179
17
|
export declare function isScenario(row: ScenarioReconciliation): boolean;
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
* per static-check obligation the scenario named (3F-2203).
|
|
183
|
-
*
|
|
184
|
-
* The OBLIGATION-side cut: `lint` reconciliations only ever arise from an obligation, so this
|
|
185
|
-
* is the row's named-static-check count as well as its list. It is the single source both the
|
|
186
|
-
* renderer's grid cell and the Ledger's `lintTally` read — they each re-derived it before, agreeing
|
|
187
|
-
* by copy.
|
|
188
|
-
*/
|
|
189
|
-
export declare function staticCheckReconciliationsOf(row: ScenarioReconciliation): QualityCheckReconciliation[];
|
|
190
|
-
/**
|
|
191
|
-
* How many of a row's named static checks are PRESENT (3F-2203) — the count of `lint`
|
|
192
|
-
* reconciliations that found a real script, whether or not it is wired.
|
|
193
|
-
*
|
|
194
|
-
* PRESENCE IS NOT QUALITY, and that is the whole rule: `satisfied` (wired into CI over the real
|
|
195
|
-
* source) and `watermelon` (the script exists but guards nothing) BOTH count, because both mean a
|
|
196
|
-
* static check is THERE. Only `missing` — no script at all — is absent. The watermelon's inadequacy
|
|
197
|
-
* is quality, and quality is reported in the reconciling items (🍉), never by shrinking this count.
|
|
198
|
-
*
|
|
199
|
-
* A domain fact, not a rendering choice: which outcomes imply the check exists is the outcome
|
|
200
|
-
* vocabulary's business, the same class as `OUT_OF_BALANCE_OUTCOMES`. The renderer READS it.
|
|
201
|
-
*/
|
|
202
|
-
export declare function presentStaticCheckCountOf(row: ScenarioReconciliation): number;
|
|
203
|
-
/**
|
|
204
|
-
* A real scenario row's SUB-ROWS — the reconciled debits and the credit-side no-evidence-obligation items
|
|
205
|
-
* together, degenerating to the ONE `both-missing` item when the row reconciled to nothing either
|
|
206
|
-
* way (@SCN-LDG-009, 3F-2204). The row-SHAPE rule, so it lives with the row.
|
|
207
|
-
*
|
|
208
|
-
* BOTH-MISSING is the NEITHER-side outcome: zero obligations AND zero no-evidence-obligation credits.
|
|
209
|
-
* It is detected on ROWS-EMITTED — the concatenated set being empty — never on
|
|
210
|
-
* `evidenceObligations.length === 0`. That distinction is load-bearing: a zero-obligation scenario
|
|
211
|
-
* whose `@SCN` IS cited by a stray credit (@SCN-LDG-010, the twin) already produced a `no-evidence-obligation`
|
|
212
|
-
* row above, so it falls through here and is never both-missing. Keying on the obligation count
|
|
213
|
-
* instead would post a spurious degenerate item beside a real one.
|
|
214
|
-
*
|
|
215
|
-
* THE PENDING CLAUSE (@SCN-PND-004) — the degenerate item fires only on zero rows AND zero Pending
|
|
216
|
-
* Items. A scenario whose ONLY obligation is pending reconciles to zero rows on both sides and is
|
|
217
|
-
* NOT both-missing: it is balanced-with-pending, the partition having made "nothing is reconciled"
|
|
218
|
-
* true by construction. Without the clause an only-pending scenario would post a spurious
|
|
219
|
-
* both-missing and red a run canon says is deferred, not broken. (A bare-empty scenario — no
|
|
220
|
-
* obligation, no pending, no citation — is still both-missing, which is the point of the rule.)
|
|
221
|
-
*
|
|
222
|
-
* This retires the zero-evidence-scenario warning (@SCN-WRN-001 Update): a zero-evidence scenario is
|
|
223
|
-
* an out-of-balance row now, not a separate authoring-quality axis excluded from the balance.
|
|
224
|
-
*/
|
|
18
|
+
export declare function fitnessFunctionReconciliationsOf(row: ScenarioReconciliation): QualityCheckReconciliation[];
|
|
19
|
+
export declare function presentFitnessFunctionCountOf(row: ScenarioReconciliation): number;
|
|
225
20
|
export declare function qualityCheckReconciliationsOf(reconciledEvidenceObligations: readonly QualityCheckReconciliation[], noEvidenceObligationItems: readonly QualityCheckReconciliation[], pendingItems: readonly PendingItem[]): QualityCheckReconciliation[];
|
|
226
21
|
//# sourceMappingURL=scenarioReconciliation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenarioReconciliation.d.ts","sourceRoot":"","sources":["../../src/domain/scenarioReconciliation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"scenarioReconciliation.d.ts","sourceRoot":"","sources":["../../src/domain/scenarioReconciliation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACZ,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAGlF,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,gBAAgB,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;AAEjF,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,eAAe,CAAC;IACzB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,2BAA2B,EAAE,0BAA0B,EAAE,CAAC;IAC1D,gBAAgB,EAAE,0BAA0B,EAAE,CAAC;IAC/C,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AAED,wBAAgB,UAAU,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,GAAG,eAAe,CAE7F;AAED,wBAAgB,kBAAkB,CAChC,mBAAmB,EAAE,0BAA0B,EAAE,GAChD,0BAA0B,EAAE,CAE9B;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAE/D;AAED,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,sBAAsB,GAC1B,0BAA0B,EAAE,CAE9B;AAED,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,sBAAsB,GAAG,MAAM,CAIjF;AAED,wBAAgB,6BAA6B,CAC3C,6BAA6B,EAAE,SAAS,0BAA0B,EAAE,EACpE,yBAAyB,EAAE,SAAS,0BAA0B,EAAE,EAChE,YAAY,EAAE,SAAS,WAAW,EAAE,GACnC,0BAA0B,EAAE,CAG9B"}
|
|
@@ -1,116 +1,19 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* THE SCENARIO RECONCILIATION — the account (canon: "bookkeeping term: Account"), holding its
|
|
3
|
-
* posted debits and credits, its reconciled sub-rows, and its binary verdict. This module
|
|
4
|
-
* co-locates the concept's type with its OWN behaviour: `verdictFor` (the binary roll-up) and
|
|
5
|
-
* `reconcilingItemsOf` (the non-balanced items), the pure derivations that were the reconcile
|
|
6
|
-
* orchestration's private helpers (module, not class; the rule lives WITH the concept).
|
|
7
|
-
*/
|
|
8
|
-
// The degenerate item's CONSTRUCTION stays with the item concept; the rule for WHEN a row carries
|
|
9
|
-
// it instead of its sub-rows is the ROW's, so it lives here (3F-2204).
|
|
10
1
|
import { bothMissingReconciliation } from "./qualityCheckReconciliation.js";
|
|
11
|
-
/**
|
|
12
|
-
* Reduce a scenario's reconciling items to its binary VERDICT:
|
|
13
|
-
* `balanced` IFF the scenario has NO reconciling item; otherwise `out-of-balance`,
|
|
14
|
-
* carrying the FULL list of non-balanced items (no prioritisation, no picked
|
|
15
|
-
* winner — `reconcilingItemsOf` carries them all, the renderers list them all).
|
|
16
|
-
* The verdict is DERIVED from reconciling-item emptiness, so the two stay in lock
|
|
17
|
-
* step by construction (an out-of-balance verdict always has ≥1 item; a balanced
|
|
18
|
-
* one always has zero).
|
|
19
|
-
*
|
|
20
|
-
* Empty-list case (@SCN-PND-007): a scenario reconciling to an EMPTY
|
|
21
|
-
* evidenceObligations set has no reconciling item, so it is `balanced` — verdict-neutral.
|
|
22
|
-
* This is the ONLY-PENDING scenario: its sole obligation partitioned off to a
|
|
23
|
-
* one-sided Pending Item upstream, leaving zero reconciled rows. A Pending Item
|
|
24
|
-
* never contributes a reconciling item, so it never tips the verdict. (Deriving
|
|
25
|
-
* from emptiness — not `every satisfied` over a non-empty list — is what makes the
|
|
26
|
-
* empty list read `balanced` rather than the earlier vacuous `out-of-balance`.)
|
|
27
|
-
*
|
|
28
|
-
* Both-missing is NOT this case: the degenerate zero-rows-on-both-sides scenario
|
|
29
|
-
* (no obligation, no pending, no citing observation) is posted ONE `both-missing`
|
|
30
|
-
* reconciling item UPSTREAM by `reconcile`, so its list is NON-empty and it stays
|
|
31
|
-
* `out-of-balance` — untouched by the emptiness derivation.
|
|
32
|
-
*/
|
|
33
2
|
export function verdictFor(evidenceObligations) {
|
|
34
3
|
return reconcilingItemsOf(evidenceObligations).length === 0 ? "balanced" : "out-of-balance";
|
|
35
4
|
}
|
|
36
|
-
/**
|
|
37
|
-
* The non-balanced reconciling items — EVERY one (no prioritisation, no picked
|
|
38
|
-
* winner), in document order. Empty when the scenario is balanced.
|
|
39
|
-
*/
|
|
40
5
|
export function reconcilingItemsOf(evidenceObligations) {
|
|
41
6
|
return evidenceObligations.filter((r) => r.outcome !== "satisfied");
|
|
42
7
|
}
|
|
43
|
-
/**
|
|
44
|
-
* Is this row about a REAL scenario? (3F-2230.)
|
|
45
|
-
*
|
|
46
|
-
* Canon, Scenario: a `Scenario` names only the REAL thing — a cited-but-unknown id is a
|
|
47
|
-
* **phantom scenario**, and the bucket for uncited credits is the **suspense scenario**; neither
|
|
48
|
-
* is a scenario. This function is that sentence; every consumer that needs the real-scenario cut
|
|
49
|
-
* asks it rather than restating it.
|
|
50
|
-
*
|
|
51
|
-
* It had no home and was open-coded FIVE times — four in the renderer, one in the Ledger's lint
|
|
52
|
-
* fold — as the double negative `kind !== "phantom-scenario" && kind !== "suspense-scenario"`. They
|
|
53
|
-
* agreed by copy, not by construction: any one could have grown a clause alone and nothing would
|
|
54
|
-
* have redded.
|
|
55
|
-
*
|
|
56
|
-
* STATED POSITIVELY, which is not merely tidier. `ScenarioKind` has exactly three values, so the
|
|
57
|
-
* double negative is equivalent TODAY — but only by exhaustion. A fourth kind would silently fall
|
|
58
|
-
* into the real-scenario cut under the negative form and be excluded under this one, and canon is
|
|
59
|
-
* unambiguous about which is right: `scenario` is reserved for the REAL thing, so a kind nobody
|
|
60
|
-
* has taught this function about is not one.
|
|
61
|
-
*/
|
|
62
8
|
export function isScenario(row) {
|
|
63
9
|
return row.kind === "scenario";
|
|
64
10
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
* per static-check obligation the scenario named (3F-2203).
|
|
68
|
-
*
|
|
69
|
-
* The OBLIGATION-side cut: `lint` reconciliations only ever arise from an obligation, so this
|
|
70
|
-
* is the row's named-static-check count as well as its list. It is the single source both the
|
|
71
|
-
* renderer's grid cell and the Ledger's `lintTally` read — they each re-derived it before, agreeing
|
|
72
|
-
* by copy.
|
|
73
|
-
*/
|
|
74
|
-
export function staticCheckReconciliationsOf(row) {
|
|
75
|
-
return row.qualityCheckReconciliations.filter((r) => r.qualityCheck === "lint");
|
|
11
|
+
export function fitnessFunctionReconciliationsOf(row) {
|
|
12
|
+
return row.qualityCheckReconciliations.filter((r) => r.qualityCheck === "fitness");
|
|
76
13
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
* reconciliations that found a real script, whether or not it is wired.
|
|
80
|
-
*
|
|
81
|
-
* PRESENCE IS NOT QUALITY, and that is the whole rule: `satisfied` (wired into CI over the real
|
|
82
|
-
* source) and `watermelon` (the script exists but guards nothing) BOTH count, because both mean a
|
|
83
|
-
* static check is THERE. Only `missing` — no script at all — is absent. The watermelon's inadequacy
|
|
84
|
-
* is quality, and quality is reported in the reconciling items (🍉), never by shrinking this count.
|
|
85
|
-
*
|
|
86
|
-
* A domain fact, not a rendering choice: which outcomes imply the check exists is the outcome
|
|
87
|
-
* vocabulary's business, the same class as `OUT_OF_BALANCE_OUTCOMES`. The renderer READS it.
|
|
88
|
-
*/
|
|
89
|
-
export function presentStaticCheckCountOf(row) {
|
|
90
|
-
return staticCheckReconciliationsOf(row).filter((r) => r.outcome === "satisfied" || r.outcome === "watermelon").length;
|
|
14
|
+
export function presentFitnessFunctionCountOf(row) {
|
|
15
|
+
return fitnessFunctionReconciliationsOf(row).filter((r) => r.outcome === "satisfied" || r.outcome === "watermelon").length;
|
|
91
16
|
}
|
|
92
|
-
/**
|
|
93
|
-
* A real scenario row's SUB-ROWS — the reconciled debits and the credit-side no-evidence-obligation items
|
|
94
|
-
* together, degenerating to the ONE `both-missing` item when the row reconciled to nothing either
|
|
95
|
-
* way (@SCN-LDG-009, 3F-2204). The row-SHAPE rule, so it lives with the row.
|
|
96
|
-
*
|
|
97
|
-
* BOTH-MISSING is the NEITHER-side outcome: zero obligations AND zero no-evidence-obligation credits.
|
|
98
|
-
* It is detected on ROWS-EMITTED — the concatenated set being empty — never on
|
|
99
|
-
* `evidenceObligations.length === 0`. That distinction is load-bearing: a zero-obligation scenario
|
|
100
|
-
* whose `@SCN` IS cited by a stray credit (@SCN-LDG-010, the twin) already produced a `no-evidence-obligation`
|
|
101
|
-
* row above, so it falls through here and is never both-missing. Keying on the obligation count
|
|
102
|
-
* instead would post a spurious degenerate item beside a real one.
|
|
103
|
-
*
|
|
104
|
-
* THE PENDING CLAUSE (@SCN-PND-004) — the degenerate item fires only on zero rows AND zero Pending
|
|
105
|
-
* Items. A scenario whose ONLY obligation is pending reconciles to zero rows on both sides and is
|
|
106
|
-
* NOT both-missing: it is balanced-with-pending, the partition having made "nothing is reconciled"
|
|
107
|
-
* true by construction. Without the clause an only-pending scenario would post a spurious
|
|
108
|
-
* both-missing and red a run canon says is deferred, not broken. (A bare-empty scenario — no
|
|
109
|
-
* obligation, no pending, no citation — is still both-missing, which is the point of the rule.)
|
|
110
|
-
*
|
|
111
|
-
* This retires the zero-evidence-scenario warning (@SCN-WRN-001 Update): a zero-evidence scenario is
|
|
112
|
-
* an out-of-balance row now, not a separate authoring-quality axis excluded from the balance.
|
|
113
|
-
*/
|
|
114
17
|
export function qualityCheckReconciliationsOf(reconciledEvidenceObligations, noEvidenceObligationItems, pendingItems) {
|
|
115
18
|
const rows = [...reconciledEvidenceObligations, ...noEvidenceObligationItems];
|
|
116
19
|
return rows.length === 0 && pendingItems.length === 0 ? [bothMissingReconciliation()] : rows;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenarioReconciliation.js","sourceRoot":"","sources":["../../src/domain/scenarioReconciliation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scenarioReconciliation.js","sourceRoot":"","sources":["../../src/domain/scenarioReconciliation.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAiB5E,MAAM,UAAU,UAAU,CAAC,mBAAiD;IAC1E,OAAO,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC;AAC9F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,mBAAiD;IAEjD,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,WAAW,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAA2B;IACpD,OAAO,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,GAA2B;IAE3B,OAAO,GAAG,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,GAA2B;IACvE,OAAO,gCAAgC,CAAC,GAAG,CAAC,CAAC,MAAM,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,KAAK,YAAY,CAC/D,CAAC,MAAM,CAAC;AACX,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,6BAAoE,EACpE,yBAAgE,EAChE,YAAoC;IAEpC,MAAM,IAAI,GAAG,CAAC,GAAG,6BAA6B,EAAE,GAAG,yBAAyB,CAAC,CAAC;IAC9E,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/F,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface ScnOccurrence {
|
|
2
|
+
readonly text: string;
|
|
3
|
+
readonly path: string;
|
|
4
|
+
readonly line: number;
|
|
5
|
+
readonly commit?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface AllocationRequest {
|
|
8
|
+
readonly part: string;
|
|
9
|
+
readonly headerCodes: readonly string[];
|
|
10
|
+
readonly isNew?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface UnknownPart {
|
|
13
|
+
readonly kind: "unknown-part";
|
|
14
|
+
readonly part: string;
|
|
15
|
+
readonly headerCodes: readonly string[];
|
|
16
|
+
}
|
|
17
|
+
export interface Allocation {
|
|
18
|
+
readonly kind: "allocated";
|
|
19
|
+
readonly code: string;
|
|
20
|
+
readonly highest: {
|
|
21
|
+
readonly code: string;
|
|
22
|
+
readonly occurrence: ScnOccurrence;
|
|
23
|
+
} | null;
|
|
24
|
+
readonly alreadyHeaded?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export declare function nextScnCode(request: AllocationRequest, occurrences: readonly ScnOccurrence[]): Allocation | UnknownPart;
|
|
27
|
+
//# sourceMappingURL=scnAllocation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scnAllocation.d.ts","sourceRoot":"","sources":["../../src/domain/scnAllocation.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAA;KAAE,GAAG,IAAI,CAAC;IACvF,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AA0BD,wBAAgB,WAAW,CAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,aAAa,EAAE,GAAG,UAAU,GAAG,WAAW,CASvH"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { SCN_ID_SOURCE, featureCodeOf } from "./featureCode.js";
|
|
2
|
+
const NUMBER_WIDTH = 3;
|
|
3
|
+
const SCN_CODES = new RegExp(SCN_ID_SOURCE, "g");
|
|
4
|
+
function numberOf(code) {
|
|
5
|
+
return Number(code.slice(code.lastIndexOf("-") + 1));
|
|
6
|
+
}
|
|
7
|
+
function outranks(code, occurrence, highest) {
|
|
8
|
+
const difference = numberOf(code) - numberOf(highest.code);
|
|
9
|
+
return difference > 0 || (difference === 0 && occurrence.commit === undefined && highest.occurrence.commit !== undefined);
|
|
10
|
+
}
|
|
11
|
+
function highestOf(part, occurrences) {
|
|
12
|
+
let highest = null;
|
|
13
|
+
for (const occurrence of occurrences) {
|
|
14
|
+
for (const [code] of occurrence.text.matchAll(SCN_CODES)) {
|
|
15
|
+
if (featureCodeOf(code) !== part)
|
|
16
|
+
continue;
|
|
17
|
+
if (highest === null || outranks(code, occurrence, highest))
|
|
18
|
+
highest = { code, occurrence };
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return highest;
|
|
22
|
+
}
|
|
23
|
+
export function nextScnCode(request, occurrences) {
|
|
24
|
+
const headed = request.headerCodes.includes(request.part);
|
|
25
|
+
if (!headed && request.isNew !== true) {
|
|
26
|
+
return { kind: "unknown-part", part: request.part, headerCodes: [...new Set(request.headerCodes)].sort() };
|
|
27
|
+
}
|
|
28
|
+
const highest = highestOf(request.part, occurrences);
|
|
29
|
+
const next = (highest === null ? 0 : numberOf(highest.code)) + 1;
|
|
30
|
+
const code = `SCN-${request.part}-${String(next).padStart(NUMBER_WIDTH, "0")}`;
|
|
31
|
+
return headed && request.isNew === true ? { kind: "allocated", code, highest, alreadyHeaded: true } : { kind: "allocated", code, highest };
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=scnAllocation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scnAllocation.js","sourceRoot":"","sources":["../../src/domain/scnAllocation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA4BhE,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AAEjD,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,UAAyB,EAAE,OAA2C;IACpG,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,OAAO,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;AAC5H,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,WAAqC;IACpE,IAAI,OAAO,GAA0B,IAAI,CAAC;IAC1C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACzD,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI;gBAAE,SAAS;YAC3C,IAAI,OAAO,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC;gBAAE,OAAO,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC9F,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAA0B,EAAE,WAAqC;IAC3F,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACtC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IAC7G,CAAC;IACD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,OAAO,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC;IAC/E,OAAO,MAAM,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC7I,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Ledger } from "./ledger.js";
|
|
2
|
+
import { type ScenarioCodeError } from "./scenarioCodeError.js";
|
|
3
|
+
export type VerdictCode = 0 | 1 | 3 | 4 | 5;
|
|
4
|
+
export interface VerdictInputs {
|
|
5
|
+
readonly ledger: Ledger;
|
|
6
|
+
readonly scenarioCodeErrors?: readonly ScenarioCodeError[];
|
|
7
|
+
readonly strict: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function verdictCode(run: VerdictInputs): VerdictCode;
|
|
10
|
+
//# sourceMappingURL=verdictCode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verdictCode.d.ts","sourceRoot":"","sources":["../../src/domain/verdictCode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEvF,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC3D,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,WAAW,CAO3D"}
|