@produtype/core 0.54.0 → 0.55.0

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.
@@ -17,6 +17,8 @@ export interface CategoryScore {
17
17
  assessedCount: number;
18
18
  criticalCount: number;
19
19
  highCount: number;
20
+ /** Checks in this category that reached no verdict. */
21
+ unknownCount: number;
20
22
  /** True when nothing in the analysis touched this category, so the score is not evidence of health. */
21
23
  notAssessed: boolean;
22
24
  }
@@ -112,6 +112,14 @@ function buildCategoryScores(findings) {
112
112
  verifiedCount: assessed.filter((finding) => finding.status === 'passed').length,
113
113
  /** Checks in this category that reached a verdict either way. */
114
114
  assessedCount: assessed.length,
115
+ /**
116
+ * Checks in this category that did not.
117
+ *
118
+ * "Taking payments: 1 check verified, nothing outstanding" appeared under "what
119
+ * already works" on the strength of one check out of eleven in that category.
120
+ * The count that stops the misreading is the one that was missing.
121
+ */
122
+ unknownCount: categoryFindings.filter((finding) => finding.status === 'unknown').length,
115
123
  criticalCount: actionable.filter((finding) => finding.severity === 'critical').length,
116
124
  highCount: actionable.filter((finding) => finding.severity === 'high').length,
117
125
  /**
@@ -211,7 +211,22 @@ function buildStrengths(categoryScores, findings) {
211
211
  const strengths = strongCategories.slice(0, 3).map((entry) => {
212
212
  const label = CATEGORY_LABEL[entry.category];
213
213
  const checks = entry.verifiedCount === 1 ? '1 check' : `${entry.verifiedCount} checks`;
214
- return `${label}: ${checks} verified, nothing outstanding`;
214
+ /**
215
+ * The coverage, not a claim of completeness.
216
+ *
217
+ * "Taking payments: 1 check verified, nothing outstanding" told a reader their
218
+ * billing was in good shape on the strength of one check. Forty-nine of ninety
219
+ * strengths across the verification corpus read that way. "Nothing outstanding"
220
+ * means "no finding among the checks that ran", and in a category where one check
221
+ * ran and ten did not, that is a sentence about this analyzer rather than about
222
+ * the product.
223
+ *
224
+ * Saying how many did not run is what stops the misreading, and it costs four
225
+ * words.
226
+ */
227
+ return entry.unknownCount > 0
228
+ ? `${label}: ${checks} verified, ${entry.unknownCount} not assessed`
229
+ : `${label}: ${checks} verified`;
215
230
  });
216
231
  if (strengths.length === 0 && passed.length > 0) {
217
232
  strengths.push(`${passed.length} individual ${passed.length === 1 ? 'check' : 'checks'} already pass`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@produtype/core",
3
- "version": "0.54.0",
3
+ "version": "0.55.0",
4
4
  "description": "Deterministic CLI and library that analyzes a web application repository and reports how far it is from production-ready for the kind of product it is meant to be.",
5
5
  "license": "MIT",
6
6
  "bin": {