@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,16 @@
|
|
|
1
|
+
import { hasBrokenEvidence, hasNothingToReconcile, hasPendingItems, isBalanced } from "./ledger.js";
|
|
2
|
+
import { hasScenarioCodeErrors } from "./scenarioCodeError.js";
|
|
3
|
+
export function verdictCode(run) {
|
|
4
|
+
if (hasNothingToReconcile(run.ledger))
|
|
5
|
+
return 5;
|
|
6
|
+
if (hasBrokenEvidence(run.ledger))
|
|
7
|
+
return 4;
|
|
8
|
+
if (hasScenarioCodeErrors(run))
|
|
9
|
+
return 1;
|
|
10
|
+
if (!isBalanced(run.ledger))
|
|
11
|
+
return 1;
|
|
12
|
+
if (run.strict && hasPendingItems(run.ledger))
|
|
13
|
+
return 3;
|
|
14
|
+
return 0;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=verdictCode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verdictCode.js","sourceRoot":"","sources":["../../src/domain/verdictCode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpG,OAAO,EAAE,qBAAqB,EAA0B,MAAM,wBAAwB,CAAC;AAUvF,MAAM,UAAU,WAAW,CAAC,GAAkB;IAC5C,IAAI,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,CAAC;IAChD,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,CAAC;IAC5C,IAAI,qBAAqB,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,CAAC;IACtC,IAAI,GAAG,CAAC,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,CAAC;IACxD,OAAO,CAAC,CAAC;AACX,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,57 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* `@3f-consulting/spec-controller-core` package.
|
|
4
|
-
*
|
|
5
|
-
* This re-exports the v1 contract surface — what a downstream consumer builds
|
|
6
|
-
* on.
|
|
7
|
-
*
|
|
8
|
-
* NOTHING HOLDS IT TO A LIST, AND THAT IS NEW (3F-3449). Until that commit a
|
|
9
|
-
* `@unit` drift guard reconciled this barrel's actual exports against a surface
|
|
10
|
-
* written down for it in the repository's check tree, both directions, so a
|
|
11
|
-
* symbol added here or dropped reds CI. The list and its arm are gone, with the
|
|
12
|
-
* rest of the packaging checks this repository wrote for itself, and no
|
|
13
|
-
* replacement runs: the community's instrument is a generated `api-extractor`
|
|
14
|
-
* report, adopted at the 1.0 boundary where a stability promise exists again.
|
|
15
|
-
* SO AN EXPORT ADDED TO OR REMOVED FROM THIS FILE IS A DECISION NOBODY IS
|
|
16
|
-
* FORCED TO NOTICE. Treat a change here as a contract change on the strength of
|
|
17
|
-
* where you are typing it, because no gate will say so — and `0.x` promises
|
|
18
|
-
* nothing (`doc/compatibility.md`).
|
|
19
|
-
*
|
|
20
|
-
* SELECTIVE re-exports, NOT `export *`: the pure boundary is deliberate. The
|
|
21
|
-
* core surface is filtered to pure symbols — no `fs` / `process.cwd` /
|
|
22
|
-
* `child_process`. The impure application layer (file reading, git-derived
|
|
23
|
-
* provenance, output routing, run-store, the CLI itself) lives in the
|
|
24
|
-
* `spec-controller` package, not here.
|
|
25
|
-
*
|
|
26
|
-
* Groups + order are this file's own, kept because a reader uses them; they no
|
|
27
|
-
* longer mirror an enumeration held elsewhere, because there is no longer one.
|
|
28
|
-
* Values are re-exported with `export { … }`; types with `export type { … }`,
|
|
29
|
-
* so the runtime namespace carries only the value bindings.
|
|
30
|
-
*/
|
|
31
|
-
export type { QualityCheck, RuntimeQualityCheck, EvidenceStatus, EvidenceObligation, Scenario, RuntimeEvidenceObservation, GuardEvidenceObservation, EvidenceObservation, Outcome, ScenarioVerdict, ScenarioKind, QualityCheckReconciliation, ScenarioReconciliation, Ledger, } from "./model.js";
|
|
32
|
-
export { parseScenarios, countScnOccurrences, parseUntaggedScenarios, proseOnlyCodes } from "./parse/scenarios.js";
|
|
1
|
+
export type { QualityCheck, RuntimeQualityCheck, EvidenceStatus, EvidenceObligation, Scenario, RuntimeEvidenceObservation, FitnessEvidenceObservation, EvidenceObservation, Outcome, ScenarioVerdict, ScenarioKind, QualityCheckReconciliation, ScenarioReconciliation, Ledger, } from "./model.js";
|
|
2
|
+
export { parseScenarios, countScnOccurrences, parseUntaggedScenarios } from "./parse/scenarios.js";
|
|
33
3
|
export { evidenceObligations } from "./census/evidenceObligations.js";
|
|
34
|
-
export type { EvidenceObligations, UntaggedScenario } from "./census/evidenceObligations.js";
|
|
4
|
+
export type { EvidenceObligations, SharedScnCode, UntaggedScenario } from "./census/evidenceObligations.js";
|
|
5
|
+
export { sharedScnCodesOf, untaggedScenarioId } from "./census/evidenceObligations.js";
|
|
35
6
|
export { reconcile, evidenceReconciliationOf } from "./domain/evidenceReconciliation.js";
|
|
7
|
+
export { hasScenarioCodeErrors } from "./domain/scenarioCodeError.js";
|
|
8
|
+
export type { ScenarioCodeError, ScenarioCodeErrorKind, ScenarioCodePopulation } from "./domain/scenarioCodeError.js";
|
|
36
9
|
export { isBalanced, hasPendingItems, hasBrokenEvidence, hasNothingToReconcile, } from "./domain/ledger.js";
|
|
10
|
+
export { verdictCode } from "./domain/verdictCode.js";
|
|
11
|
+
export type { VerdictCode, VerdictInputs } from "./domain/verdictCode.js";
|
|
12
|
+
export { nextScnCode } from "./domain/scnAllocation.js";
|
|
13
|
+
export type { Allocation, AllocationRequest, ScnOccurrence, UnknownPart } from "./domain/scnAllocation.js";
|
|
37
14
|
export { parseVitestEvidenceObservations } from "./parse/vitest.js";
|
|
38
15
|
export type { VitestJsonReport } from "./parse/vitest.js";
|
|
39
16
|
export { parseCucumberEvidenceObservations } from "./parse/cucumber.js";
|
|
40
17
|
export type { CucumberJsonReport } from "./parse/cucumber.js";
|
|
41
|
-
export {
|
|
42
|
-
export {
|
|
18
|
+
export { runningFitnessFunctions } from "./parse/runningFitnessFunctions.js";
|
|
19
|
+
export { commandInvokesScript } from "./parse/checkScriptsRunInCI.js";
|
|
43
20
|
export type { PackageJsonScripts } from "./parse/checkScriptsRunInCI.js";
|
|
44
21
|
export { assembleRenderInput } from "./assemble/renderInput.js";
|
|
45
|
-
export type { EvidenceReconciliation, RenderInput, ReportMetadata, Summary, ScenarioReconciliationTotals, EvidenceObligationTotals, MissingByQualityCheck, TestVolumeTotals,
|
|
22
|
+
export type { EvidenceReconciliation, RenderInput, ReportMetadata, Summary, ScenarioReconciliationTotals, EvidenceObligationTotals, MissingByQualityCheck, TestVolumeTotals, FitnessFunctionTotals, FitnessTally, EvidenceObligationsSection, } from "./assemble/renderInput.js";
|
|
46
23
|
export { evidenceReconciliationFromSources } from "./assemble/evidenceReconciliationFromSources.js";
|
|
47
|
-
export { corpusFaults } from "./parse/corpusFaults.js";
|
|
48
|
-
export type { CorpusFault } from "./parse/corpusFaults.js";
|
|
49
24
|
export { renderJson } from "./render/json.js";
|
|
50
25
|
export { renderMarkdown, renderReport, renderReportFromJson } from "./render/markdown.js";
|
|
51
26
|
export type { FeatureNames } from "./render/markdown.js";
|
|
52
27
|
export { provenanceObject, projectProvenance, projectProvenanceObject } from "./provenance/provenance.js";
|
|
53
28
|
export type { RunContext, RunInputs, ProvenanceObject, ProvenanceFacts, ProvenanceInput } from "./provenance/provenance.js";
|
|
54
|
-
export {
|
|
55
|
-
export { featureCodeOf } from "./lib/featureCode.js";
|
|
29
|
+
export { featureCodeOf, isFeaturePart } from "./domain/featureCode.js";
|
|
56
30
|
export { relativizeToRoot } from "./lib/portablePath.js";
|
|
57
31
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,0BAA0B,EAC1B,0BAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,eAAe,EACf,YAAY,EACZ,0BAA0B,EAC1B,sBAAsB,EACtB,MAAM,GACP,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAC5G,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAEvF,OAAO,EAAE,SAAS,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,YAAY,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACtH,OAAO,EACL,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE3G,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AACpE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AACxE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,YAAY,EACV,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,OAAO,EACP,4BAA4B,EAC5B,wBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,iCAAiC,EAAE,MAAM,iDAAiD,CAAC;AAEpG,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC1F,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC1G,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE5H,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,100 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
* The public core barrel — the single entrypoint of the
|
|
3
|
-
* `@3f-consulting/spec-controller-core` package.
|
|
4
|
-
*
|
|
5
|
-
* This re-exports the v1 contract surface — what a downstream consumer builds
|
|
6
|
-
* on.
|
|
7
|
-
*
|
|
8
|
-
* NOTHING HOLDS IT TO A LIST, AND THAT IS NEW (3F-3449). Until that commit a
|
|
9
|
-
* `@unit` drift guard reconciled this barrel's actual exports against a surface
|
|
10
|
-
* written down for it in the repository's check tree, both directions, so a
|
|
11
|
-
* symbol added here or dropped reds CI. The list and its arm are gone, with the
|
|
12
|
-
* rest of the packaging checks this repository wrote for itself, and no
|
|
13
|
-
* replacement runs: the community's instrument is a generated `api-extractor`
|
|
14
|
-
* report, adopted at the 1.0 boundary where a stability promise exists again.
|
|
15
|
-
* SO AN EXPORT ADDED TO OR REMOVED FROM THIS FILE IS A DECISION NOBODY IS
|
|
16
|
-
* FORCED TO NOTICE. Treat a change here as a contract change on the strength of
|
|
17
|
-
* where you are typing it, because no gate will say so — and `0.x` promises
|
|
18
|
-
* nothing (`doc/compatibility.md`).
|
|
19
|
-
*
|
|
20
|
-
* SELECTIVE re-exports, NOT `export *`: the pure boundary is deliberate. The
|
|
21
|
-
* core surface is filtered to pure symbols — no `fs` / `process.cwd` /
|
|
22
|
-
* `child_process`. The impure application layer (file reading, git-derived
|
|
23
|
-
* provenance, output routing, run-store, the CLI itself) lives in the
|
|
24
|
-
* `spec-controller` package, not here.
|
|
25
|
-
*
|
|
26
|
-
* Groups + order are this file's own, kept because a reader uses them; they no
|
|
27
|
-
* longer mirror an enumeration held elsewhere, because there is no longer one.
|
|
28
|
-
* Values are re-exported with `export { … }`; types with `export type { … }`,
|
|
29
|
-
* so the runtime namespace carries only the value bindings.
|
|
30
|
-
*/
|
|
31
|
-
// --- Scenario parse (`parse/scenarios.ts`) ---
|
|
32
|
-
export { parseScenarios, countScnOccurrences, parseUntaggedScenarios, proseOnlyCodes } from "./parse/scenarios.js";
|
|
33
|
-
// --- Evidence-obligation census (`census/evidenceObligations.ts`) ---
|
|
1
|
+
export { parseScenarios, countScnOccurrences, parseUntaggedScenarios } from "./parse/scenarios.js";
|
|
34
2
|
export { evidenceObligations } from "./census/evidenceObligations.js";
|
|
35
|
-
|
|
3
|
+
export { sharedScnCodesOf, untaggedScenarioId } from "./census/evidenceObligations.js";
|
|
36
4
|
export { reconcile, evidenceReconciliationOf } from "./domain/evidenceReconciliation.js";
|
|
37
|
-
|
|
38
|
-
// be re-exported through `reconcile/reconcile.js` — a shell kept alive purely to preserve importer
|
|
39
|
-
// paths after 3F-1994 sent the behaviour home. No symbol is re-exported through a module that does
|
|
40
|
-
// not own it.
|
|
5
|
+
export { hasScenarioCodeErrors } from "./domain/scenarioCodeError.js";
|
|
41
6
|
export { isBalanced, hasPendingItems, hasBrokenEvidence, hasNothingToReconcile, } from "./domain/ledger.js";
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
// 6 symbols + `EvidenceObservationsSection` left this frozen-in-intent surface. Pre-freeze, no
|
|
45
|
-
// external consumer (unpublished package; only workspace dependents, all rewired).
|
|
46
|
-
// The static evidence-observation census (`census/staticEvidenceObservations.ts`) is RETIRED
|
|
47
|
-
// (3F-2119): its counting folds onto the Ledger (`staticObservationTally`, an internal domain fold),
|
|
48
|
-
// and its 2 symbols (`countStaticEvidenceObservationKinds` value / `StaticEvidenceObservationKindCounts`
|
|
49
|
-
// type) left this frozen-in-intent surface. `StaticCheckTotals` (the materialised headline, now
|
|
50
|
-
// Ledger-fold-sourced) STAYS on the barrel. Pre-freeze, no external consumer (unpublished package;
|
|
51
|
-
// only workspace dependents, all rewired).
|
|
52
|
-
// --- Parse — result/CI readers (`parse/*`) ---
|
|
7
|
+
export { verdictCode } from "./domain/verdictCode.js";
|
|
8
|
+
export { nextScnCode } from "./domain/scnAllocation.js";
|
|
53
9
|
export { parseVitestEvidenceObservations } from "./parse/vitest.js";
|
|
54
10
|
export { parseCucumberEvidenceObservations } from "./parse/cucumber.js";
|
|
55
|
-
export {
|
|
56
|
-
export {
|
|
57
|
-
// --- Evidence Reconciliation (the concept, `domain/evidenceReconciliation.ts`) + the RENDER
|
|
58
|
-
// INPUT the adapters frame around it (`assemble/renderInput.ts`). `RenderInput` is deliberately
|
|
59
|
-
// NOT a canon word: canon reserves "the report" for the RENDERED ARTEFACT, so the payload a
|
|
60
|
-
// renderer consumes must not borrow it (3F-2234). ---
|
|
11
|
+
export { runningFitnessFunctions } from "./parse/runningFitnessFunctions.js";
|
|
12
|
+
export { commandInvokesScript } from "./parse/checkScriptsRunInCI.js";
|
|
61
13
|
export { assembleRenderInput } from "./assemble/renderInput.js";
|
|
62
|
-
// --- The RECONCILE COMPOSITION over a target's already-read sources
|
|
63
|
-
// (`assemble/evidenceReconciliationFromSources.ts`) ---
|
|
64
|
-
// THE ONE ENTRY POINT THIS BARREL GAINS AT 3F-3086, and the reason it is here rather than on
|
|
65
|
-
// `./internal`: a published module — the CLI's ingest edge — has to reach the composition, and
|
|
66
|
-
// `./internal` is not published (3F-2837, unamended). The nine symbols it composes stay internal,
|
|
67
|
-
// so the surface a consumer's v1 contract carries widens by one name and nothing else.
|
|
68
14
|
export { evidenceReconciliationFromSources } from "./assemble/evidenceReconciliationFromSources.js";
|
|
69
|
-
// --- The `@SCN` SCHEME'S OWN RULES over a target's corpus (`parse/corpusFaults.ts`) ---
|
|
70
|
-
// THE TWO NAMES THIS BARREL GAINS AT 3F-3300, and here for `evidenceReconciliationFromSources`'s
|
|
71
|
-
// reason: a published module — the `tags` command's CLI edge — has to reach the rule, and
|
|
72
|
-
// `./internal` is not published (3F-2837, unamended). `parseTaggedScenarios`, the tag-inheritance
|
|
73
|
-
// walk the grammar rules read, stays internal; what crosses is the CALLER, exactly as it did for
|
|
74
|
-
// the reconcile composition. The surface a consumer's v1 contract carries widens by two names —
|
|
75
|
-
// the function and the fault it reports — and by nothing else.
|
|
76
|
-
export { corpusFaults } from "./parse/corpusFaults.js";
|
|
77
|
-
// --- Render — model→string (`render/*`) ---
|
|
78
15
|
export { renderJson } from "./render/json.js";
|
|
79
16
|
export { renderMarkdown, renderReport, renderReportFromJson } from "./render/markdown.js";
|
|
80
|
-
// --- Provenance — pure subset (`provenance/provenance.ts`) ---
|
|
81
17
|
export { provenanceObject, projectProvenance, projectProvenanceObject } from "./provenance/provenance.js";
|
|
82
|
-
|
|
83
|
-
// ON THE PUBLIC BARREL BY DESIGN, NOT ON `./internal` (3F-2996). The roster is what makes the
|
|
84
|
-
// check vocabulary SHARED, so it has to be reachable by a product that installs this package and
|
|
85
|
-
// never sees this repository's `tests/checks/` folder; `./internal` is monorepo-scoped and would
|
|
86
|
-
// publish it to exactly the one consumer that does not need it. A product derives its legal set
|
|
87
|
-
// from its PINNED version and refreshes it on a bump — which is the property a hand-typed
|
|
88
|
-
// per-product list cannot have.
|
|
89
|
-
//
|
|
90
|
-
// AND IT IS A REPORTING VOCABULARY NOW, NOT A GATE (3F-3167). No check in this repository reads
|
|
91
|
-
// it any more: the collapse to one `@fitness` tag moved the characteristic onto a configured row
|
|
92
|
-
// as a FIELD, and a word that only labels a roll-up needs no parser holding it. Whether the
|
|
93
|
-
// portfolio should carry a given word is a question for canon, asked of people. So this export is
|
|
94
|
-
// what a consumer's report groups by and what the portfolio says out loud — the two jobs one
|
|
95
|
-
// token used to do, with the enforcing half retired rather than moved.
|
|
96
|
-
export { PORTFOLIO_CHECK_CHARACTERISTICS, isPortfolioCharacteristic } from "./domain/checkCharacteristics.js";
|
|
97
|
-
// --- Pure helpers ---
|
|
98
|
-
export { featureCodeOf } from "./lib/featureCode.js";
|
|
18
|
+
export { featureCodeOf, isFeaturePart } from "./domain/featureCode.js";
|
|
99
19
|
export { relativizeToRoot } from "./lib/portablePath.js";
|
|
100
20
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAEvF,OAAO,EAAE,SAAS,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,EACL,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AAExE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAGtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAehE,OAAO,EAAE,iCAAiC,EAAE,MAAM,iDAAiD,CAAC;AAEpG,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG1F,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAG1G,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/internal.d.ts
CHANGED
|
@@ -1,33 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
* The MONOREPO-INTERNAL shared surface of `@3f-consulting/spec-controller-core`
|
|
3
|
-
* — reached by the sibling `spec-controller` app via the package's `/internal`
|
|
4
|
-
* subpath export (`@3f-consulting/spec-controller-core/internal`).
|
|
5
|
-
*
|
|
6
|
-
* NOT THE PUBLIC v1 CONTRACT. The v1 surface is the `.` barrel (`index.ts`)
|
|
7
|
-
* alone, and this entry is deliberately outside it. Do NOT put public API here:
|
|
8
|
-
* a symbol an external consumer should depend on belongs on the `.` barrel, and
|
|
9
|
-
* putting it there is a contract decision NOTHING CHECKS — the drift guard that
|
|
10
|
-
* reconciled that barrel against a written-down enumeration, in both directions,
|
|
11
|
-
* left at 3F-3449 and has no replacement before 1.0.
|
|
12
|
-
* This file exists solely so in-repo consumers get a SANCTIONED seam for a
|
|
13
|
-
* core-internal helper instead of reaching into `core/src` by a deep relative
|
|
14
|
-
* path.
|
|
15
|
-
*
|
|
16
|
-
* Kept deliberately small: it re-exports only the internal helpers the app
|
|
17
|
-
* genuinely shares, one at a time, each with the reason it is shared here rather
|
|
18
|
-
* than promoted to the public contract.
|
|
19
|
-
*/
|
|
20
|
-
export { parseScnCitation, parseScnCitations } from "./lib/scnCitation.js";
|
|
1
|
+
export { SCN_ID_SOURCE } from "./domain/featureCode.js";
|
|
21
2
|
export { bareTerm } from "./lib/bareTerm.js";
|
|
22
3
|
export type { ScriptCitation } from "./parse/fitnessCitations.js";
|
|
23
|
-
export { parseTaggedScenarios } from "./parse/scenarios.js";
|
|
24
|
-
export type { TaggedScenario } from "./parse/scenarios.js";
|
|
25
4
|
export { FITNESS_AXIS_TAG } from "./parse/scenarios.js";
|
|
26
|
-
export {
|
|
27
|
-
export type { FitnessEvidenceObservation } from "./domain/journal.js";
|
|
28
|
-
export { ciRunSteps } from "./parse/checkScriptsRunInCI.js";
|
|
29
|
-
export type { CiRunStep } from "./parse/checkScriptsRunInCI.js";
|
|
5
|
+
export { isFitnessObservation } from "./domain/journal.js";
|
|
30
6
|
export { ciWorkflowSteps } from "./parse/checkScriptsRunInCI.js";
|
|
31
7
|
export type { CiWorkflowStep, CiStepAction } from "./parse/checkScriptsRunInCI.js";
|
|
32
|
-
export { resolveDeferralTags,
|
|
8
|
+
export { resolveDeferralTags, } from "./parse/targetManifest.js";
|
|
33
9
|
//# sourceMappingURL=internal.d.ts.map
|
package/dist/internal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,YAAY,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAEnF,OAAO,EACL,mBAAmB,GACpB,MAAM,2BAA2B,CAAC"}
|
package/dist/internal.js
CHANGED
|
@@ -1,98 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
* The MONOREPO-INTERNAL shared surface of `@3f-consulting/spec-controller-core`
|
|
3
|
-
* — reached by the sibling `spec-controller` app via the package's `/internal`
|
|
4
|
-
* subpath export (`@3f-consulting/spec-controller-core/internal`).
|
|
5
|
-
*
|
|
6
|
-
* NOT THE PUBLIC v1 CONTRACT. The v1 surface is the `.` barrel (`index.ts`)
|
|
7
|
-
* alone, and this entry is deliberately outside it. Do NOT put public API here:
|
|
8
|
-
* a symbol an external consumer should depend on belongs on the `.` barrel, and
|
|
9
|
-
* putting it there is a contract decision NOTHING CHECKS — the drift guard that
|
|
10
|
-
* reconciled that barrel against a written-down enumeration, in both directions,
|
|
11
|
-
* left at 3F-3449 and has no replacement before 1.0.
|
|
12
|
-
* This file exists solely so in-repo consumers get a SANCTIONED seam for a
|
|
13
|
-
* core-internal helper instead of reaching into `core/src` by a deep relative
|
|
14
|
-
* path.
|
|
15
|
-
*
|
|
16
|
-
* Kept deliberately small: it re-exports only the internal helpers the app
|
|
17
|
-
* genuinely shares, one at a time, each with the reason it is shared here rather
|
|
18
|
-
* than promoted to the public contract.
|
|
19
|
-
*/
|
|
20
|
-
// `parseScnCitation` / `parseScnCitations` — the ONE definition of the bracketed citation
|
|
21
|
-
// form. Shared because the two citation readers previously carried their own sigil-optional
|
|
22
|
-
// regexes and drifted from canon and from each other (3F-2368): the runtime reader minted a
|
|
23
|
-
// phantom scenario from fixture data, the scn-subissue gate let a prose mention vouch for a
|
|
24
|
-
// changed block. A second copy is exactly the fault, so the gate imports this one. Internal,
|
|
25
|
-
// not public — the form is spec-controller's own reading convention, not a v1 contract.
|
|
26
|
-
export { parseScnCitation, parseScnCitations } from "./lib/scnCitation.js";
|
|
27
|
-
// `bareTerm` — the ONE reading of what a term BARE is: whitespace around it is not part of it, and
|
|
28
|
-
// only a LEADING @ is a sigil. Shared because it was hand-copied seven times and the copies carried
|
|
29
|
-
// the same anchored-strip-before-trim ordering, so a term a target typed with a stray space in
|
|
30
|
-
// front of its @ was stored still carrying the @ and no bare lookup ever found it again — silently,
|
|
31
|
-
// since an absent key is a legitimate reading everywhere it is asked for (3F-2976). A caller outside
|
|
32
|
-
// the engine reaches it here rather than re-deriving it, which is what keeps its reading of a term
|
|
33
|
-
// the engine's by construction instead of by a comment saying it must be. Internal, not public — the sigil convention is spec-controller's own
|
|
34
|
-
// reading of a term, not a v1 contract, and the `.` barrel is where a v1 contract goes.
|
|
1
|
+
export { SCN_ID_SOURCE } from "./domain/featureCode.js";
|
|
35
2
|
export { bareTerm } from "./lib/bareTerm.js";
|
|
36
|
-
// `parseTaggedScenarios` — the corpus read BEFORE any obligation rule is applied, and the input
|
|
37
|
-
// the corpus hop above takes. Shared rather than re-derived at the edge: it is the single
|
|
38
|
-
// tag-inheritance walk both of `parseScenarios`' historical false-greens lived in, and a caller
|
|
39
|
-
// that rebuilt "which tags does this scenario carry" would be free to reproduce either one
|
|
40
|
-
// silently. Internal, not public — `parseScenarios` remains the v1 corpus surface.
|
|
41
|
-
export { parseTaggedScenarios } from "./parse/scenarios.js";
|
|
42
|
-
// `FITNESS_AXIS_TAG` — the ONE spelling of the word a CONVERTED check's scenario carries
|
|
43
|
-
// (`parse/scenarios`, @SCN-LNT-018). Shared because the corpus check's grammar rule (@SCN-STG-005)
|
|
44
|
-
// must admit exactly the scenarios the obligation rule raises against, and this word is the one
|
|
45
|
-
// source left of what names a check on a corpus — the registry retired (3F-3161) and the measured
|
|
46
|
-
// axis's ceilings with it (3F-3516); a converted check has no runnable script handle, only a
|
|
47
|
-
// configured row. A second spelling in `tests/checks/` would be a word the floor admitted while
|
|
48
|
-
// the engine raised nothing for it, or the reverse — the seam 3F-3126 spent a slice closing.
|
|
49
|
-
// A LITERAL RATHER THAN A RESOLVED SET, and deliberately: which words name a CHECK is the
|
|
50
|
-
// target's answer, which AXIS a scenario is on is the model's, exactly as `unit` is. Internal,
|
|
51
|
-
// not public — the `.` barrel carries the v1 contract and this is not one.
|
|
52
3
|
export { FITNESS_AXIS_TAG } from "./parse/scenarios.js";
|
|
53
|
-
|
|
54
|
-
// fields — its runnable handle, its `exists`, its `enforcedOverRealSource` — asks. The measured
|
|
55
|
-
// member it once told apart from left with the measured axis (3F-3516); it stays shared because a
|
|
56
|
-
// caller re-spelling the test inline would be free to spell it differently. Internal, not public.
|
|
57
|
-
export { isStaticCheckObservation } from "./domain/journal.js";
|
|
58
|
-
// `ciRunSteps` / `CiRunStep` — the CI walk `ciRunCommands` projects, carrying each `run:` step's
|
|
59
|
-
// `id:` and whether its red would abort the job. Shared so that no caller opens a second YAML walk
|
|
60
|
-
// to see `continue-on-error`: that key is on the same step mapping this walk already visits, and a
|
|
61
|
-
// second reader would be free to disagree with the first about which steps a workflow even runs —
|
|
62
|
-
// which is the silent disagreement the one-place rule exists to prevent (3F-3042). Its consumer
|
|
63
|
-
// OUTSIDE the engine is `tests/steps/lintReconciliation.steps.ts`, at twelve call sites, one of
|
|
64
|
-
// which reads `abortsJob`; `runningStaticChecks` reads the same walk in-engine for the `id:`
|
|
65
|
-
// (3F-3261). The local-ladder derivation was the other outside consumer until 3F-3475. Internal, not
|
|
66
|
-
// public — `ciRunCommands` remains
|
|
67
|
-
// the v1 contract for anyone outside, and putting this on the `.` barrel would widen the v1
|
|
68
|
-
// contract to buy nothing.
|
|
69
|
-
export { ciRunSteps } from "./parse/checkScriptsRunInCI.js";
|
|
70
|
-
// `ciWorkflowSteps` / `CiWorkflowStep` / `CiStepAction` — the SAME walk read whole: `uses:` steps
|
|
71
|
-
// as well as `run:` ones, each with the identity GitHub displays for it and the job it belongs to
|
|
72
|
-
// (3F-3352). `ciRunSteps` is its projection, so the pair cannot disagree about which steps a
|
|
73
|
-
// workflow runs — the third time that one-walk rule has held here, and for the reason it held the
|
|
74
|
-
// first two. Internal, not public, on the same footing as `ciRunSteps`: `ciRunCommands` remains
|
|
75
|
-
// the v1 contract for anyone outside, and the shape of a whole-pipeline step is a reading the
|
|
76
|
-
// discovery inversion (3F-3343) is still settling, so putting it on the v1 contract now would
|
|
77
|
-
// widen it for a surface no consumer has yet asked for.
|
|
4
|
+
export { isFitnessObservation } from "./domain/journal.js";
|
|
78
5
|
export { ciWorkflowSteps } from "./parse/checkScriptsRunInCI.js";
|
|
79
|
-
|
|
80
|
-
// mints the reconciler takes (`parse/targetManifest`). Shared because they moved INTO the
|
|
81
|
-
// engine and the tree's own gates still read a target's config through them: the corpus check
|
|
82
|
-
// (@SCN-STG-005) and the characteristic roster resolve the same rows and mints the
|
|
83
|
-
// reconciler does, and a second reader deciding independently which words a manifest names would
|
|
84
|
-
// admit a tag the engine raises nothing for. They sat at the app's ingest edge until 3F-3087,
|
|
85
|
-
// where they were the reason a PUBLISHED module imported this unpublished subpath — the fault
|
|
86
|
-
// 3F-3086 repairs. Internal, not public: where a target's rows and mints are AUTHORED
|
|
87
|
-
// is the registry-home question (increment D), so the shape of what these read is not a v1
|
|
88
|
-
// contract yet. Nothing under `tests/checks/`
|
|
89
|
-
// travels in a tarball (`tsconfig.build.json` emits `src` alone), so reaching them here is the
|
|
90
|
-
// seam working as 3F-2837 intended.
|
|
91
|
-
export { resolveDeferralTags, resolveFitnessChecks, } from "./parse/targetManifest.js";
|
|
92
|
-
// `readTargetCorpus` HAS LEFT THIS SEAM (3F-3089), and the removal is the point rather than tidying.
|
|
93
|
-
// It was shared here for exactly one consumer — the app's ingest edge, which composed the
|
|
94
|
-
// reconciliation itself — and the composition moved into the engine
|
|
95
|
-
// (`assemble/evidenceReconciliationFromSources`), which is what takes the last crossing off the
|
|
96
|
-
// published path. Nothing in this workspace reaches the corpus read any more, and this file
|
|
97
|
-
// re-exports only what the app genuinely shares.
|
|
6
|
+
export { resolveDeferralTags, } from "./parse/targetManifest.js";
|
|
98
7
|
//# sourceMappingURL=internal.js.map
|
package/dist/internal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGjE,OAAO,EACL,mBAAmB,GACpB,MAAM,2BAA2B,CAAC"}
|
package/dist/lib/bareTerm.d.ts
CHANGED
|
@@ -1,41 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The term-spelling helper — the ONE owner of what a term BARE is (@SCN-TRM-001). Sibling of
|
|
3
|
-
* `lib/featureCode.ts`, which owns the id grammar (`SCN-<FFF>-<NNN>`, Evidence Manifesto §9A),
|
|
4
|
-
* and of `lib/scnCitation.ts`, which owns the bracketed citation form. This owns the sigil and
|
|
5
|
-
* the whitespace around it.
|
|
6
|
-
*
|
|
7
|
-
* IT WAS SEVEN COPIES, SO ONE BUG WAS SEVEN BUGS. Every port that stores a hand-authored term as
|
|
8
|
-
* a key spelled the same two lines the same wrong way — `value.replace(/^@/, "").trim()` — and
|
|
9
|
-
* `^@` is anchored, so a leading space defeats it and the trim that follows removes the space and
|
|
10
|
-
* leaves the sigil. A term a target typed as `" @SCN-MSD-001"` was stored as `"@SCN-MSD-001"`
|
|
11
|
-
* under a key no bare lookup ever asks for, and nothing redded: `thresholdFor` answered null, a
|
|
12
|
-
* measurement row was dropped, a registry entry was absent, and all three are legitimate readings
|
|
13
|
-
* of a key the manifest never named. The correction is not the reordering. It is that a rule this
|
|
14
|
-
* small was hand-copied at all — `dry`'s "a rule stated twice is a rule obeyed in its laxest form"
|
|
15
|
-
* with the laxest form being all seven (3F-2976).
|
|
16
|
-
*
|
|
17
|
-
* WHAT IS IN SCOPE, AND WHERE THE RULE STOPS. Whitespace AROUND a term is not part of it, at
|
|
18
|
-
* either end and on both sides of the sigil — so `" @X "` and `"@ X"` both name `"X"`, and the
|
|
19
|
-
* second trim is not sanitiser creep: under a leading trim alone, `"@ X"` would store `" X"`,
|
|
20
|
-
* which is the same silent-miss class in a narrower spelling. After this, no input reaches storage
|
|
21
|
-
* carrying whitespace or a sigil.
|
|
22
|
-
*
|
|
23
|
-
* WHAT IS DELIBERATELY OUT, STATED SO THE OMISSIONS ARE NOT SILENT. A doubled sigil (`"@@X"` →
|
|
24
|
-
* `"@X"`) — a second `@` is a different spelling, not whitespace, and `/^@/` strips exactly one
|
|
25
|
-
* per @SCN-LNT-001's pinned "strips only a leading @". An @ spelled INSIDE a term
|
|
26
|
-
* (`"cucumber@e2e"`) — part of the name the target chose, and eating it would rename the pair to
|
|
27
|
-
* one no lookup asks for. Whitespace INSIDE a term — a different term, not a differently-spelled
|
|
28
|
-
* one. Case — not a whitespace question, and folding it would be a real semantic change.
|
|
29
|
-
*
|
|
30
|
-
* AN EMPTY ANSWER IS AN ANSWER. A value that is nothing but whitespace and a sigil bares to `""`,
|
|
31
|
-
* which every caller already drops as it drops an empty one — rather than storing `"@"`, a key
|
|
32
|
-
* nobody can ask for and a bar that could never be settled.
|
|
33
|
-
*/
|
|
34
|
-
/**
|
|
35
|
-
* The term as its bare spelling names it — trimmed, its LEADING sigil removed, trimmed again.
|
|
36
|
-
*
|
|
37
|
-
* The order is the whole of it. Trimming first is what lets the anchor see the sigil at all;
|
|
38
|
-
* trimming again is what stops a space between the sigil and the term riding into storage.
|
|
39
|
-
*/
|
|
40
1
|
export declare function bareTerm(value: string): string;
|
|
41
2
|
//# sourceMappingURL=bareTerm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bareTerm.d.ts","sourceRoot":"","sources":["../../src/lib/bareTerm.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"bareTerm.d.ts","sourceRoot":"","sources":["../../src/lib/bareTerm.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9C"}
|
package/dist/lib/bareTerm.js
CHANGED
|
@@ -1,42 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The term-spelling helper — the ONE owner of what a term BARE is (@SCN-TRM-001). Sibling of
|
|
3
|
-
* `lib/featureCode.ts`, which owns the id grammar (`SCN-<FFF>-<NNN>`, Evidence Manifesto §9A),
|
|
4
|
-
* and of `lib/scnCitation.ts`, which owns the bracketed citation form. This owns the sigil and
|
|
5
|
-
* the whitespace around it.
|
|
6
|
-
*
|
|
7
|
-
* IT WAS SEVEN COPIES, SO ONE BUG WAS SEVEN BUGS. Every port that stores a hand-authored term as
|
|
8
|
-
* a key spelled the same two lines the same wrong way — `value.replace(/^@/, "").trim()` — and
|
|
9
|
-
* `^@` is anchored, so a leading space defeats it and the trim that follows removes the space and
|
|
10
|
-
* leaves the sigil. A term a target typed as `" @SCN-MSD-001"` was stored as `"@SCN-MSD-001"`
|
|
11
|
-
* under a key no bare lookup ever asks for, and nothing redded: `thresholdFor` answered null, a
|
|
12
|
-
* measurement row was dropped, a registry entry was absent, and all three are legitimate readings
|
|
13
|
-
* of a key the manifest never named. The correction is not the reordering. It is that a rule this
|
|
14
|
-
* small was hand-copied at all — `dry`'s "a rule stated twice is a rule obeyed in its laxest form"
|
|
15
|
-
* with the laxest form being all seven (3F-2976).
|
|
16
|
-
*
|
|
17
|
-
* WHAT IS IN SCOPE, AND WHERE THE RULE STOPS. Whitespace AROUND a term is not part of it, at
|
|
18
|
-
* either end and on both sides of the sigil — so `" @X "` and `"@ X"` both name `"X"`, and the
|
|
19
|
-
* second trim is not sanitiser creep: under a leading trim alone, `"@ X"` would store `" X"`,
|
|
20
|
-
* which is the same silent-miss class in a narrower spelling. After this, no input reaches storage
|
|
21
|
-
* carrying whitespace or a sigil.
|
|
22
|
-
*
|
|
23
|
-
* WHAT IS DELIBERATELY OUT, STATED SO THE OMISSIONS ARE NOT SILENT. A doubled sigil (`"@@X"` →
|
|
24
|
-
* `"@X"`) — a second `@` is a different spelling, not whitespace, and `/^@/` strips exactly one
|
|
25
|
-
* per @SCN-LNT-001's pinned "strips only a leading @". An @ spelled INSIDE a term
|
|
26
|
-
* (`"cucumber@e2e"`) — part of the name the target chose, and eating it would rename the pair to
|
|
27
|
-
* one no lookup asks for. Whitespace INSIDE a term — a different term, not a differently-spelled
|
|
28
|
-
* one. Case — not a whitespace question, and folding it would be a real semantic change.
|
|
29
|
-
*
|
|
30
|
-
* AN EMPTY ANSWER IS AN ANSWER. A value that is nothing but whitespace and a sigil bares to `""`,
|
|
31
|
-
* which every caller already drops as it drops an empty one — rather than storing `"@"`, a key
|
|
32
|
-
* nobody can ask for and a bar that could never be settled.
|
|
33
|
-
*/
|
|
34
|
-
/**
|
|
35
|
-
* The term as its bare spelling names it — trimmed, its LEADING sigil removed, trimmed again.
|
|
36
|
-
*
|
|
37
|
-
* The order is the whole of it. Trimming first is what lets the anchor see the sigil at all;
|
|
38
|
-
* trimming again is what stops a space between the sigil and the term riding into storage.
|
|
39
|
-
*/
|
|
40
1
|
export function bareTerm(value) {
|
|
41
2
|
return value.trim().replace(/^@/, "").trim();
|
|
42
3
|
}
|
package/dist/lib/bareTerm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bareTerm.js","sourceRoot":"","sources":["../../src/lib/bareTerm.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"bareTerm.js","sourceRoot":"","sources":["../../src/lib/bareTerm.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portablePath.d.ts","sourceRoot":"","sources":["../../src/lib/portablePath.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"portablePath.d.ts","sourceRoot":"","sources":["../../src/lib/portablePath.ts"],"names":[],"mappings":"AAEA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAK/E"}
|
package/dist/lib/portablePath.js
CHANGED
|
@@ -1,24 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* relativizeToRoot — a PURE path-string transform, extracted and shared.
|
|
3
|
-
* No IO: the caller provides the run root (the IO — `process.cwd()` — stays at
|
|
4
|
-
* the CLI edge). A pure CORE utility both the evidenceObservations locators (`evidenceObservations.ts`) and the
|
|
5
|
-
* provenance inputs (`run/runContext.ts`) depend on, so the portability rule lives once
|
|
6
|
-
* — and, being side-effect-free, it sits cleanly in the public core through the Phase-B
|
|
7
|
-
* split (no app-layer inversion).
|
|
8
|
-
*
|
|
9
|
-
* Semantics (unchanged): a non-absolute path (a sentinel like
|
|
10
|
-
* `(unknown vitest file)`, an already-relative path) is returned unchanged; an absolute
|
|
11
|
-
* path UNDER `root` collapses to the relative path; an absolute path NOT under `root`
|
|
12
|
-
* (the relative path would escape via `..` or resolve absolute) falls back to the
|
|
13
|
-
* ORIGINAL string — never a `../../` leak. With no `root`, the path is returned verbatim.
|
|
14
|
-
*/
|
|
15
1
|
import { isAbsolute, relative } from "node:path";
|
|
16
2
|
export function relativizeToRoot(path, root) {
|
|
17
3
|
if (root === undefined || !isAbsolute(path))
|
|
18
4
|
return path;
|
|
19
5
|
const rel = relative(root, path);
|
|
20
|
-
if (rel
|
|
6
|
+
if (rel.startsWith("..") || isAbsolute(rel))
|
|
21
7
|
return path;
|
|
22
|
-
return rel;
|
|
8
|
+
return rel === "" ? "." : rel;
|
|
23
9
|
}
|
|
24
10
|
//# sourceMappingURL=portablePath.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portablePath.js","sourceRoot":"","sources":["../../src/lib/portablePath.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"portablePath.js","sourceRoot":"","sources":["../../src/lib/portablePath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAAwB;IACrE,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACzD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACzD,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAChC,CAAC"}
|
|
@@ -1,34 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The citation-form helper — the ONE owner of what a citation LOOKS LIKE in a Vitest
|
|
3
|
-
* `describe`/`it` title. Sibling of `lib/featureCode.ts`, which owns the id GRAMMAR
|
|
4
|
-
* (`SCN-<FFF>-<NNN>`, Evidence Manifesto §9A); this owns the wrapper that turns a
|
|
5
|
-
* mention of that id into a citation.
|
|
6
|
-
*
|
|
7
|
-
* A citation is the BRACKETED token — `[SCN-<FFF>-<NNN>]`. Canon assigns the forms per
|
|
8
|
-
* backend (evidence-manifesto.md): "The Vitest `describe`/`it` string includes
|
|
9
|
-
* `[SCN-007]`; the Cucumber-JS step block carries a `// @SCN-007` marker comment." The
|
|
10
|
-
* `@` form is Cucumber's marker and is NOT a Vitest citation here — deliberately, and
|
|
11
|
-
* that exclusion is the rule's teeth: `@SCN-…` is how this repository writes every prose
|
|
12
|
-
* cross-reference, in comments, headers and ticket references, so accepting it in a title
|
|
13
|
-
* would leave the false-citation class open on the form most likely to appear by accident.
|
|
14
|
-
*
|
|
15
|
-
* Before this module the two citation readers each carried their own sigil-OPTIONAL regex
|
|
16
|
-
* — `/\bSCN-[A-Z0-9]+-\d+\b/` in parse/vitest.ts and `/@?(SCN-[A-Z0-9]+-\d+)/g` in
|
|
17
|
-
* tests/checks/scnSubIssueGate.ts — so any SCN-shaped token anywhere in a title was a
|
|
18
|
-
* citation whatever it was doing there. On the runtime side that minted a phantom scenario
|
|
19
|
-
* from fixture data; on the static side it let a prose mention vouch for a changed test
|
|
20
|
-
* block, a false green. Two copies of the answer is how they drifted from canon and from
|
|
21
|
-
* each other, so there is one copy now and both import it (3F-2368).
|
|
22
|
-
*/
|
|
23
|
-
/**
|
|
24
|
-
* The FIRST bracketed scenario id cited in `text`, as a bare code, or null when `text`
|
|
25
|
-
* cites none. An SCN-shaped token without its brackets is prose and yields null.
|
|
26
|
-
*/
|
|
27
1
|
export declare function parseScnCitation(text: string): string | null;
|
|
28
|
-
/**
|
|
29
|
-
* EVERY bracketed scenario id cited in `text`, as bare codes, in document order and
|
|
30
|
-
* de-duplicated. The multi-citation read the scn-subissue gate needs, where one
|
|
31
|
-
* `describe` line may vouch for more than one scenario.
|
|
32
|
-
*/
|
|
33
|
-
export declare function parseScnCitations(text: string): string[];
|
|
34
2
|
//# sourceMappingURL=scnCitation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scnCitation.d.ts","sourceRoot":"","sources":["../../src/lib/scnCitation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scnCitation.d.ts","sourceRoot":"","sources":["../../src/lib/scnCitation.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG5D"}
|