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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/assemble/evidenceReconciliationFromSources.js +0 -7
  2. package/dist/assemble/evidenceReconciliationFromSources.js.map +1 -1
  3. package/dist/domain/messages.d.ts +191 -0
  4. package/dist/domain/messages.d.ts.map +1 -0
  5. package/dist/domain/messages.js +279 -0
  6. package/dist/domain/messages.js.map +1 -0
  7. package/dist/domain/qualityCheckReconciliationFault.js +1 -1
  8. package/dist/domain/qualityCheckReconciliationFault.js.map +1 -1
  9. package/dist/parse/scenarioCodeErrors.d.ts.map +1 -1
  10. package/dist/parse/scenarioCodeErrors.js +7 -17
  11. package/dist/parse/scenarioCodeErrors.js.map +1 -1
  12. package/dist/render/behaviouralRunners.d.ts.map +1 -1
  13. package/dist/render/behaviouralRunners.js +6 -5
  14. package/dist/render/behaviouralRunners.js.map +1 -1
  15. package/dist/render/configurationNotRead.d.ts.map +1 -1
  16. package/dist/render/configurationNotRead.js +5 -5
  17. package/dist/render/configurationNotRead.js.map +1 -1
  18. package/dist/render/discoveryScope.d.ts.map +1 -1
  19. package/dist/render/discoveryScope.js +3 -2
  20. package/dist/render/discoveryScope.js.map +1 -1
  21. package/dist/render/excludedSteps.d.ts.map +1 -1
  22. package/dist/render/excludedSteps.js +4 -3
  23. package/dist/render/excludedSteps.js.map +1 -1
  24. package/dist/render/markdown.d.ts.map +1 -1
  25. package/dist/render/markdown.js +48 -50
  26. package/dist/render/markdown.js.map +1 -1
  27. package/dist/render/provenanceSection.d.ts.map +1 -1
  28. package/dist/render/provenanceSection.js +10 -9
  29. package/dist/render/provenanceSection.js.map +1 -1
  30. package/dist/render/reconcilerSteps.d.ts.map +1 -1
  31. package/dist/render/reconcilerSteps.js +5 -4
  32. package/dist/render/reconcilerSteps.js.map +1 -1
  33. package/dist/render/runVerdict.d.ts.map +1 -1
  34. package/dist/render/runVerdict.js +22 -30
  35. package/dist/render/runVerdict.js.map +1 -1
  36. package/dist/render/scenarioCodeErrorsSection.d.ts.map +1 -1
  37. package/dist/render/scenarioCodeErrorsSection.js +20 -17
  38. package/dist/render/scenarioCodeErrorsSection.js.map +1 -1
  39. package/dist/render/staticChecks.d.ts.map +1 -1
  40. package/dist/render/staticChecks.js +3 -2
  41. package/dist/render/staticChecks.js.map +1 -1
  42. package/dist/render/stepAccounting.js +5 -5
  43. package/dist/render/stepAccounting.js.map +1 -1
  44. package/dist/render/testVolume.d.ts.map +1 -1
  45. package/dist/render/testVolume.js +4 -3
  46. package/dist/render/testVolume.js.map +1 -1
  47. package/package.json +1 -1
  48. package/dist/domain/qualityCheckFaultMessages.d.ts +0 -8
  49. package/dist/domain/qualityCheckFaultMessages.d.ts.map +0 -1
  50. package/dist/domain/qualityCheckFaultMessages.js +0 -10
  51. package/dist/domain/qualityCheckFaultMessages.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"reconcilerSteps.js","sourceRoot":"","sources":["../../src/render/reconcilerSteps.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,GAAqD;IACnE,UAAU,EAAE,kDAAkD;IAC9D,OAAO,EAAE,2DAA2D;CACrE,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAmB,EAAY,EAAE;IACjE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;IACnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO;QACL,oBAAoB;QACpB,EAAE;QACF,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,IAAI,sBAAsB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;QACpF,EAAE;KACH,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"reconcilerSteps.js","sourceRoot":"","sources":["../../src/render/reconcilerSteps.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,UAAU,GAAqD;IACnE,UAAU,EAAE,aAAa,CAAC,WAAW,CAAC,oBAAoB,CAAC;IAC3D,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,iBAAiB,CAAC;CACtD,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAmB,EAAY,EAAE;IACjE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;IACnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO;QACL,aAAa,CAAC,WAAW,CAAC,iBAAiB,CAAC;QAC5C,EAAE;QACF,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,aAAa,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC1G,EAAE;KACH,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"runVerdict.d.ts","sourceRoot":"","sources":["../../src/render/runVerdict.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAmF9D,eAAO,MAAM,iBAAiB,GAAI,QAAQ,WAAW,KAAG,MAAM,EAmB7D,CAAC"}
1
+ {"version":3,"file":"runVerdict.d.ts","sourceRoot":"","sources":["../../src/render/runVerdict.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAwE9D,eAAO,MAAM,iBAAiB,GAAI,QAAQ,WAAW,KAAG,MAAM,EAgB7D,CAAC"}
@@ -1,51 +1,44 @@
1
1
  import { isBalanced, hasPendingItems } from "../domain/ledger.js";
2
2
  import { hasScenarioCodeErrors } from "../domain/scenarioCodeError.js";
3
3
  import { verdictCode } from "../domain/verdictCode.js";
4
+ import { CORE_MESSAGES, CoreMessage } from "../domain/messages.js";
4
5
  const DEFAULT_CORPUS_DIR = "features";
5
6
  function corpusExamined(provenance) {
6
7
  return provenance.inputs.features ?? DEFAULT_CORPUS_DIR;
7
8
  }
8
9
  function scenarioCodeErrorsVerdict(reconciliation) {
9
- const alsoOutOfBalance = isBalanced(reconciliation)
10
- ? ""
11
- : " The accounts do not agree either: at least one Scenario Reconciliation carries a reconciling item.";
10
+ const alsoOutOfBalance = isBalanced(reconciliation) ? "" : CORE_MESSAGES[CoreMessage.AlsoOutOfBalance];
12
11
  return {
13
- headline: "**SCENARIO CODE ERRORS**",
14
- exit: "exit 1",
15
- gloss: "the corpus files a scenario code under the wrong feature, so the by-feature grouping " +
16
- `cannot be trusted. Read \`## Scenario code errors\` above.${alsoOutOfBalance} This run FAILED.`,
12
+ headline: CORE_MESSAGES[CoreMessage.ScenarioCodeErrorsHeadline],
13
+ exit: CORE_MESSAGES[CoreMessage.VerdictExit](1),
14
+ gloss: CORE_MESSAGES[CoreMessage.ScenarioCodeErrorsGloss](alsoOutOfBalance),
17
15
  };
18
16
  }
19
17
  const OUT_OF_BALANCE = {
20
- headline: "**OUT-OF-BALANCE**",
21
- exit: "exit 1",
22
- gloss: "the accounts do not agree. At least one Scenario Reconciliation carries a reconciling item. This run FAILED.",
18
+ headline: CORE_MESSAGES[CoreMessage.OutOfBalanceHeadline],
19
+ exit: CORE_MESSAGES[CoreMessage.VerdictExit](1),
20
+ gloss: CORE_MESSAGES[CoreMessage.OutOfBalanceGloss],
23
21
  };
24
22
  const UNSOUND = {
25
- headline: "**UNSOUND**",
26
- exit: "exit 4",
27
- gloss: "the evidence could not be TRUSTED to reconcile. A proof never ran, so the behaviour " +
28
- "it proves was never exercised. Read the run-integrity stamp above before any count " +
29
- "below it.",
23
+ headline: CORE_MESSAGES[CoreMessage.UnsoundHeadline],
24
+ exit: CORE_MESSAGES[CoreMessage.VerdictExit](4),
25
+ gloss: CORE_MESSAGES[CoreMessage.UnsoundGloss],
30
26
  };
31
27
  const PENDING = {
32
- headline: "**PENDING**",
33
- exit: "exit 3",
34
- gloss: "every Scenario Reconciliation balances, but Pending Items are outstanding and this run " +
35
- "treats a deferral as a failure (`--strict`). This run FAILED.",
28
+ headline: CORE_MESSAGES[CoreMessage.PendingHeadline],
29
+ exit: CORE_MESSAGES[CoreMessage.VerdictExit](3),
30
+ gloss: CORE_MESSAGES[CoreMessage.PendingGloss],
36
31
  };
37
32
  const BALANCED = {
38
- headline: "**BALANCED**",
39
- exit: "exit 0",
40
- gloss: "every Scenario Reconciliation balances: scenario, phantom and suspense alike.",
33
+ headline: CORE_MESSAGES[CoreMessage.BalancedHeadline],
34
+ exit: CORE_MESSAGES[CoreMessage.VerdictExit](0),
35
+ gloss: CORE_MESSAGES[CoreMessage.BalancedGloss],
41
36
  };
42
37
  function nothingToReconcile(corpusDir) {
43
38
  return {
44
- headline: "**NOTHING TO RECONCILE**",
45
- exit: "exit 5",
46
- gloss: "there were no accounts to agree. The ledger carries no Scenario Reconciliation at " +
47
- `all, so this run has NO BASIS FOR A VERDICT — nothing was declared in \`${corpusDir}\` ` +
48
- "and nothing was produced. Not balanced: a run that examined nothing must not certify.",
39
+ headline: CORE_MESSAGES[CoreMessage.NothingToReconcileHeadline],
40
+ exit: CORE_MESSAGES[CoreMessage.VerdictExit](5),
41
+ gloss: CORE_MESSAGES[CoreMessage.NothingToReconcileGloss](corpusDir),
49
42
  };
50
43
  }
51
44
  function verdictFor(code, reconciliation, corpusDir, codeErrors) {
@@ -71,11 +64,10 @@ export const runVerdictSection = (report) => {
71
64
  strict: report.runProvenance.strict === true,
72
65
  });
73
66
  const verdict = verdictFor(code, reconciliation, corpusExamined(report.runProvenance), codeErrors);
74
- const lines = ["### Run verdict", "", `${verdict.headline} — ${verdict.gloss} (${verdict.exit})`];
67
+ const lines = [CORE_MESSAGES[CoreMessage.RunVerdictHeading], "", `${verdict.headline} — ${verdict.gloss} (${verdict.exit})`];
75
68
  if (code === 0 && hasPendingItems(reconciliation)) {
76
69
  lines.push("");
77
- lines.push("⏳ Pending Items are outstanding — deferred, not out-of-balance, so the verdict stands. " +
78
- "A run that treats a deferral as a failure gives exit 3 under `--strict`.");
70
+ lines.push(CORE_MESSAGES[CoreMessage.PendingItemsOutstanding]);
79
71
  }
80
72
  lines.push("");
81
73
  return lines;
@@ -1 +1 @@
1
- {"version":3,"file":"runVerdict.js","sourceRoot":"","sources":["../../src/render/runVerdict.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runVerdict.js","sourceRoot":"","sources":["../../src/render/runVerdict.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scenarioCodeErrorsSection.d.ts","sourceRoot":"","sources":["../../src/render/scenarioCodeErrorsSection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAyB9D,eAAO,MAAM,yBAAyB,GAAI,QAAQ,WAAW,KAAG,MAAM,EAoBrE,CAAC"}
1
+ {"version":3,"file":"scenarioCodeErrorsSection.d.ts","sourceRoot":"","sources":["../../src/render/scenarioCodeErrorsSection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AA0B9D,eAAO,MAAM,yBAAyB,GAAI,QAAQ,WAAW,KAAG,MAAM,EAsBrE,CAAC"}
@@ -1,41 +1,44 @@
1
- const DUPLICATE_LINE = "A duplicated @SCN code is not listed here: it is reported on its account's rows, as `duplicate-scn-code`.";
1
+ import { CORE_MESSAGES, CoreMessage } from "../domain/messages.js";
2
2
  function counted(n, noun) {
3
3
  return `${n} ${noun}${n === 1 ? "" : "s"}`;
4
4
  }
5
5
  function cleanStatement(population) {
6
- const inFile = "every coded scenario sits in the file its code names";
7
6
  if (population === undefined)
8
- return `Scenario codes are clean, and ${inFile}.`;
7
+ return CORE_MESSAGES[CoreMessage.ScenarioCodesClean];
9
8
  const { featureFiles, featureCodes } = population;
10
9
  if (featureFiles === 0)
11
- return "No feature file was judged, so this section vouches for no scenario code.";
12
- const over = `Scenario codes are clean over ${counted(featureFiles, "feature file")} carrying ${counted(featureCodes, "feature code")}`;
13
- if (featureCodes === 0)
14
- return `${over}: no scenario in ${featureFiles === 1 ? "it" : "them"} carries an @SCN code to misfile.`;
10
+ return CORE_MESSAGES[CoreMessage.NoFeatureFileJudged];
11
+ const over = CORE_MESSAGES[CoreMessage.ScenarioCodesCleanOver](counted(featureFiles, CORE_MESSAGES[CoreMessage.FeatureFileNoun]), counted(featureCodes, CORE_MESSAGES[CoreMessage.FeatureCodeNoun]));
12
+ if (featureCodes === 0) {
13
+ const them = featureFiles === 1 ? CORE_MESSAGES[CoreMessage.ItPronoun] : CORE_MESSAGES[CoreMessage.ThemPronoun];
14
+ return CORE_MESSAGES[CoreMessage.CleanNoCodedScenario](over, them);
15
+ }
15
16
  if (featureCodes === featureFiles)
16
- return `${over}: each file carries a code of its own, and ${inFile}.`;
17
+ return CORE_MESSAGES[CoreMessage.CleanEachFileOwnCode](over);
17
18
  const uncoded = featureFiles - featureCodes;
18
- return (`${over}: each code is carried by exactly one file, ${inFile}, and the other ${uncoded} ` +
19
- `${uncoded === 1 ? "holds" : "hold"} no coded scenario.`);
19
+ const hold = uncoded === 1 ? CORE_MESSAGES[CoreMessage.HoldsVerb] : CORE_MESSAGES[CoreMessage.HoldVerb];
20
+ return CORE_MESSAGES[CoreMessage.CleanOthersUncoded](over, uncoded, hold);
20
21
  }
21
22
  export const scenarioCodeErrorsSection = (report) => {
22
23
  if (report.scenarioCodeErrors === undefined)
23
24
  return [];
24
25
  const errors = report.scenarioCodeErrors;
26
+ const heading = CORE_MESSAGES[CoreMessage.ScenarioCodeErrorsHeading];
27
+ const duplicateLine = CORE_MESSAGES[CoreMessage.DuplicateScnCodeNotListed];
25
28
  if (errors.length === 0) {
26
- return ["## Scenario code errors", "", cleanStatement(report.scenarioCodePopulation), "", DUPLICATE_LINE, ""];
29
+ return [heading, "", cleanStatement(report.scenarioCodePopulation), "", duplicateLine, ""];
27
30
  }
28
- const count = errors.length === 1 ? "1 scenario code error" : `${errors.length} scenario code errors`;
31
+ const count = errors.length === 1
32
+ ? CORE_MESSAGES[CoreMessage.OneScenarioCodeError]
33
+ : CORE_MESSAGES[CoreMessage.ScenarioCodeErrorCount](errors.length);
29
34
  return [
30
- "## Scenario code errors",
35
+ heading,
31
36
  "",
32
- `${count} — each misfiles a scenario code, so the by-feature cut below cannot be trusted, and ` +
33
- "the run fails (exit 1). Every account still reconciles as it would if the code were filed " +
34
- "correctly.",
37
+ CORE_MESSAGES[CoreMessage.ScenarioCodeErrorsFraming](count),
35
38
  "",
36
39
  ...errors.map((error) => `- \`${error.kind}\` — ${error.message}`),
37
40
  "",
38
- DUPLICATE_LINE,
41
+ duplicateLine,
39
42
  "",
40
43
  ];
41
44
  };
@@ -1 +1 @@
1
- {"version":3,"file":"scenarioCodeErrorsSection.js","sourceRoot":"","sources":["../../src/render/scenarioCodeErrorsSection.ts"],"names":[],"mappings":"AAGA,MAAM,cAAc,GAClB,2GAA2G,CAAC;AAE9G,SAAS,OAAO,CAAC,CAAS,EAAE,IAAY;IACtC,OAAO,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,cAAc,CAAC,UAA8C;IACpE,MAAM,MAAM,GAAG,sDAAsD,CAAC;IACtE,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,iCAAiC,MAAM,GAAG,CAAC;IAChF,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC;IAClD,IAAI,YAAY,KAAK,CAAC;QAAE,OAAO,2EAA2E,CAAC;IAC3G,MAAM,IAAI,GAAG,iCAAiC,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,aAAa,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,CAAC;IACxI,IAAI,YAAY,KAAK,CAAC;QAAE,OAAO,GAAG,IAAI,oBAAoB,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,mCAAmC,CAAC;IAChI,IAAI,YAAY,KAAK,YAAY;QAAE,OAAO,GAAG,IAAI,8CAA8C,MAAM,GAAG,CAAC;IACzG,MAAM,OAAO,GAAG,YAAY,GAAG,YAAY,CAAC;IAC5C,OAAO,CACL,GAAG,IAAI,+CAA+C,MAAM,mBAAmB,OAAO,GAAG;QACzF,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,qBAAqB,CACzD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAAmB,EAAY,EAAE;IACzE,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACvD,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC;IACzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,yBAAyB,EAAE,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;IAChH,CAAC;IACD,MAAM,KAAK,GACT,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,uBAAuB,CAAC;IAC1F,OAAO;QACL,yBAAyB;QACzB,EAAE;QACF,GAAG,KAAK,uFAAuF;YAC7F,4FAA4F;YAC5F,YAAY;QACd,EAAE;QACF,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;QAClE,EAAE;QACF,cAAc;QACd,EAAE;KACH,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"scenarioCodeErrorsSection.js","sourceRoot":"","sources":["../../src/render/scenarioCodeErrorsSection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"staticChecks.d.ts","sourceRoot":"","sources":["../../src/render/staticChecks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,eAAO,MAAM,mBAAmB,GAAI,QAAQ,WAAW,KAAG,MAAM,EAQ/D,CAAC"}
1
+ {"version":3,"file":"staticChecks.d.ts","sourceRoot":"","sources":["../../src/render/staticChecks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG9D,eAAO,MAAM,mBAAmB,GAAI,QAAQ,WAAW,KAAG,MAAM,EAQ/D,CAAC"}
@@ -1,10 +1,11 @@
1
+ import { CORE_MESSAGES, CoreMessage } from "../domain/messages.js";
1
2
  export const staticChecksSection = (report) => {
2
3
  const { staticChecks: counts } = report.summary;
3
4
  if (!counts)
4
5
  return [];
5
6
  return [
6
- "### Static checks", "",
7
- `${counts.runningStaticCheckCount} static check(s) run, ${counts.uncitedStaticCheckCount} uncited static check(s).`,
7
+ CORE_MESSAGES[CoreMessage.StaticChecksHeading], "",
8
+ CORE_MESSAGES[CoreMessage.StaticChecksCounts](counts.runningStaticCheckCount, counts.uncitedStaticCheckCount),
8
9
  "",
9
10
  ];
10
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"staticChecks.js","sourceRoot":"","sources":["../../src/render/staticChecks.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAmB,EAAY,EAAE;IACnE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;IAChD,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO;QACL,mBAAmB,EAAE,EAAE;QACvB,GAAG,MAAM,CAAC,uBAAuB,yBAAyB,MAAM,CAAC,uBAAuB,2BAA2B;QACnH,EAAE;KACH,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"staticChecks.js","sourceRoot":"","sources":["../../src/render/staticChecks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAmB,EAAY,EAAE;IACnE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;IAChD,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO;QACL,aAAa,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,EAAE;QAClD,aAAa,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,uBAAuB,CAAC;QAC7G,EAAE;KACH,CAAC;AACJ,CAAC,CAAC"}
@@ -1,16 +1,16 @@
1
+ import { CORE_MESSAGES, CoreMessage } from "../domain/messages.js";
1
2
  const verdictOf = ({ stepsRead, accountedFor }) => accountedFor === stepsRead
2
- ? "- every step this run read is accounted for."
3
- : `- ${stepsRead} step(s) read, ${accountedFor} accounted for — the four dispositions do not ` +
4
- `add up to the steps this run read.`;
3
+ ? `- ${CORE_MESSAGES[CoreMessage.EveryStepAccountedFor]}`
4
+ : `- ${CORE_MESSAGES[CoreMessage.StepsNotAccountedFor](stepsRead, accountedFor)}`;
5
5
  export const stepAccountingSection = (report) => {
6
6
  const accounting = report.summary.stepAccounting;
7
7
  if (accounting === undefined)
8
8
  return [];
9
9
  const { stepsRead, candidates, runners, reconciler, excluded, accountedFor } = accounting;
10
10
  return [
11
- "### Step accounting",
11
+ CORE_MESSAGES[CoreMessage.StepAccountingHeading],
12
12
  "",
13
- "| Steps read | Candidates | Runners | Reconciler | Excluded | Accounted for |",
13
+ CORE_MESSAGES[CoreMessage.StepAccountingTableHeader],
14
14
  "| --- | --- | --- | --- | --- | --- |",
15
15
  `| ${stepsRead} | ${candidates} | ${runners} | ${reconciler} | ${excluded} | ${accountedFor} |`,
16
16
  "",
@@ -1 +1 @@
1
- {"version":3,"file":"stepAccounting.js","sourceRoot":"","sources":["../../src/render/stepAccounting.ts"],"names":[],"mappings":"AAGA,MAAM,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAkB,EAAU,EAAE,CACxE,YAAY,KAAK,SAAS;IACxB,CAAC,CAAC,8CAA8C;IAChD,CAAC,CAAC,KAAK,SAAS,kBAAkB,YAAY,gDAAgD;QAC5F,oCAAoC,CAAC;AAE3C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAmB,EAAY,EAAE;IACrE,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;IACjD,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC;IAC1F,OAAO;QACL,qBAAqB;QACrB,EAAE;QACF,+EAA+E;QAC/E,uCAAuC;QACvC,KAAK,SAAS,MAAM,UAAU,MAAM,OAAO,MAAM,UAAU,MAAM,QAAQ,MAAM,YAAY,IAAI;QAC/F,EAAE;QACF,SAAS,CAAC,UAAU,CAAC;QACrB,EAAE;KACH,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"stepAccounting.js","sourceRoot":"","sources":["../../src/render/stepAccounting.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAkB,EAAU,EAAE,CACxE,YAAY,KAAK,SAAS;IACxB,CAAC,CAAC,KAAK,aAAa,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE;IACzD,CAAC,CAAC,KAAK,aAAa,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC;AAEtF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAmB,EAAY,EAAE;IACrE,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;IACjD,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC;IAC1F,OAAO;QACL,aAAa,CAAC,WAAW,CAAC,qBAAqB,CAAC;QAChD,EAAE;QACF,aAAa,CAAC,WAAW,CAAC,yBAAyB,CAAC;QACpD,uCAAuC;QACvC,KAAK,SAAS,MAAM,UAAU,MAAM,OAAO,MAAM,UAAU,MAAM,QAAQ,MAAM,YAAY,IAAI;QAC/F,EAAE;QACF,SAAS,CAAC,UAAU,CAAC;QACrB,EAAE;KACH,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"testVolume.d.ts","sourceRoot":"","sources":["../../src/render/testVolume.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,eAAO,MAAM,iBAAiB,GAAI,QAAQ,WAAW,KAAG,MAAM,EAkB7D,CAAC"}
1
+ {"version":3,"file":"testVolume.d.ts","sourceRoot":"","sources":["../../src/render/testVolume.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG9D,eAAO,MAAM,iBAAiB,GAAI,QAAQ,WAAW,KAAG,MAAM,EAkB7D,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { RUNTIME_QUALITY_CHECKS } from "../domain/ledger.js";
2
+ import { CORE_MESSAGES, CoreMessage } from "../domain/messages.js";
2
3
  export const testVolumeSection = (report) => {
3
4
  const volume = report.summary.testVolume;
4
5
  const raw = report.summary.rawByRuntimeQualityCheck;
@@ -6,11 +7,11 @@ export const testVolumeSection = (report) => {
6
7
  return [];
7
8
  const total = volume.totalEvidenceObservations;
8
9
  const lines = [
9
- "### Test volume",
10
+ CORE_MESSAGES[CoreMessage.TestVolumeHeading],
10
11
  "",
11
- `${total} evidence observations = ${volume.onScenario} on scenarios + ${volume.onPhantomScenario} on phantom scenarios + ${volume.onSuspenseScenario} on the suspense scenario.`,
12
+ CORE_MESSAGES[CoreMessage.TestVolumeSum](total, volume.onScenario, volume.onPhantomScenario, volume.onSuspenseScenario),
12
13
  "",
13
- "| Quality-check | Evidence observations |",
14
+ CORE_MESSAGES[CoreMessage.TestVolumeTableHeader],
14
15
  "| --- | --- |",
15
16
  ];
16
17
  for (const qualityCheck of RUNTIME_QUALITY_CHECKS) {
@@ -1 +1 @@
1
- {"version":3,"file":"testVolume.js","sourceRoot":"","sources":["../../src/render/testVolume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAmB,EAAY,EAAE;IACjE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC;IACpD,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,yBAAyB,CAAC;IAC/C,MAAM,KAAK,GAAG;QACZ,iBAAiB;QACjB,EAAE;QACF,GAAG,KAAK,4BAA4B,MAAM,CAAC,UAAU,mBAAmB,MAAM,CAAC,iBAAiB,2BAA2B,MAAM,CAAC,kBAAkB,4BAA4B;QAChL,EAAE;QACF,2CAA2C;QAC3C,eAAe;KAChB,CAAC;IACF,KAAK,MAAM,YAAY,IAAI,sBAAsB,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,KAAK,YAAY,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
1
+ {"version":3,"file":"testVolume.js","sourceRoot":"","sources":["../../src/render/testVolume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAmB,EAAY,EAAE;IACjE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC;IACpD,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,yBAAyB,CAAC;IAC/C,MAAM,KAAK,GAAG;QACZ,aAAa,CAAC,WAAW,CAAC,iBAAiB,CAAC;QAC5C,EAAE;QACF,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,kBAAkB,CAAC;QACvH,EAAE;QACF,aAAa,CAAC,WAAW,CAAC,qBAAqB,CAAC;QAChD,eAAe;KAChB,CAAC;IACF,KAAK,MAAM,YAAY,IAAI,sBAAsB,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,KAAK,YAAY,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@3f-consulting/spec-controller-core",
3
- "version": "0.1.0-alpha.50",
3
+ "version": "0.1.0-alpha.52",
4
4
  "description": "The pure, embeddable reconciliation core behind spec-controller — Gherkin/@SCN parse, the evidence model, reconcile primitives, and renderers. No CLI, no I/O.",
5
5
  "keywords": [
6
6
  "reconciliation",
@@ -1,8 +0,0 @@
1
- import { QualityCheckFaultCode, type QualityCheckFault } from "./qualityCheckFault.js";
2
- export type QualityCheckFaultMessages = {
3
- readonly [C in QualityCheckFaultCode]: (fault: Extract<QualityCheckFault, {
4
- code: C;
5
- }>) => string;
6
- };
7
- export declare const QUALITY_CHECK_FAULT_MESSAGES: QualityCheckFaultMessages;
8
- //# sourceMappingURL=qualityCheckFaultMessages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"qualityCheckFaultMessages.d.ts","sourceRoot":"","sources":["../../src/domain/qualityCheckFaultMessages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEvF,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,CAAC,IAAI,qBAAqB,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,KAAK,MAAM;CAClG,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,yBAS1C,CAAC"}
@@ -1,10 +0,0 @@
1
- import { QualityCheckFaultCode } from "./qualityCheckFault.js";
2
- export const QUALITY_CHECK_FAULT_MESSAGES = {
3
- [QualityCheckFaultCode.ObligationSideDivergesFromCanon]: (fault) => `QualityCheckReconciliation invariant (@SCN-LDG-030): outcome "${fault.outcome}" requires the ` +
4
- `evidence obligation (debit) side to be ${fault.required}, but it was ` +
5
- `${fault.actual}.`,
6
- [QualityCheckFaultCode.ObservationSideDivergesFromCanon]: (fault) => `QualityCheckReconciliation invariant (@SCN-LDG-030): outcome "${fault.outcome}" requires the ` +
7
- `evidence observation (credit) side to be ${fault.required}, but it was ` +
8
- `${fault.actual}.`,
9
- };
10
- //# sourceMappingURL=qualityCheckFaultMessages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"qualityCheckFaultMessages.js","sourceRoot":"","sources":["../../src/domain/qualityCheckFaultMessages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAA0B,MAAM,wBAAwB,CAAC;AAMvF,MAAM,CAAC,MAAM,4BAA4B,GAA8B;IACrE,CAAC,qBAAqB,CAAC,+BAA+B,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CACjE,iEAAiE,KAAK,CAAC,OAAO,iBAAiB;QAC/F,0CAA0C,KAAK,CAAC,QAAQ,eAAe;QACvE,GAAG,KAAK,CAAC,MAAM,GAAG;IACpB,CAAC,qBAAqB,CAAC,gCAAgC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAClE,iEAAiE,KAAK,CAAC,OAAO,iBAAiB;QAC/F,4CAA4C,KAAK,CAAC,QAAQ,eAAe;QACzE,GAAG,KAAK,CAAC,MAAM,GAAG;CACrB,CAAC"}