@xenos1996/usa 2.5.0 → 2.7.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.
@@ -0,0 +1,415 @@
1
+ import { trailer, TRAILER_BEGIN, TRAILER_END } from './markdown.js';
2
+ /* ------------------------------------------------------------- constants -- */
3
+ /** Open = the finding blocks progression; UNKNOWN/PASS/NA are not open. */
4
+ const OPEN = new Set([
5
+ 'FAIL',
6
+ 'WRONG',
7
+ 'MISSING',
8
+ 'DEPRECATED',
9
+ 'EXPERIMENTAL',
10
+ ]);
11
+ /** Ordering, strongest first. */
12
+ const SEVERITY_ORDER = ['CRITICAL', 'HIGH', 'MEDIUM', 'LOW', 'FUTURE'];
13
+ /** Rule classes whose downgrade is a *safety* concern (never defer these). */
14
+ const SAFETY_CLASSES = new Set(['security', 'supply-chain', 'correctness']);
15
+ /** The seven foundation pillars, in canonical order, with human labels. */
16
+ const PILLARS = [
17
+ { id: 'docs', label: 'Docs' },
18
+ { id: 'governance', label: 'Governance' },
19
+ { id: 'ai-readiness', label: 'AI readiness' },
20
+ { id: 'testing', label: 'Testing' },
21
+ { id: 'environment', label: 'Environment' },
22
+ { id: 'pipelines', label: 'Pipelines' },
23
+ { id: 'standards', label: 'Standards' },
24
+ ];
25
+ /**
26
+ * Capabilities the deterministic engine deliberately does not perform. A fixed,
27
+ * honest list — the "what this tool did not audit" section. This is prose about
28
+ * the *method*, not a claim about the target, so it never goes stale with the
29
+ * repo.
30
+ */
31
+ const NOT_AUDITED = [
32
+ {
33
+ what: 'Reachability / taint analysis',
34
+ why: 'pattern matching is not semantic analysis; a dead-vs-live line is not distinguished',
35
+ },
36
+ {
37
+ what: 'Threat model / data-flow / authz matrix',
38
+ why: 'requires design-level reasoning, not file presence',
39
+ },
40
+ {
41
+ what: 'Secrets validity + full-history scan',
42
+ why: 'the engine greps HEAD patterns; gitleaks/trufflehog verify and scan history',
43
+ },
44
+ {
45
+ what: 'Dependency vulnerability scan (SBOM / CVE)',
46
+ why: '`osv-scanner`/`npm audit`/`syft` are deferred to the oracle/command layer',
47
+ },
48
+ {
49
+ what: 'Rate limiting, CSRF, auth existence, prototype pollution',
50
+ why: 'no rules cover them today — they are rule-set gaps, not clean verdicts',
51
+ },
52
+ { what: 'Runtime / observability reality', why: 'the audit reads files, not a running process' },
53
+ {
54
+ what: 'Benchmark against comparable repos',
55
+ why: 'a score without a reference class is a number, not a finding',
56
+ },
57
+ ];
58
+ /* ------------------------------------------------------------ core logic -- */
59
+ /** Open (non-suppressed, non-UNKNOWN, non-PASS) findings, strongest first. */
60
+ function openFindings(report) {
61
+ return report.findings
62
+ .filter((f) => !f.suppressedReason && OPEN.has(f.status))
63
+ .sort((a, b) => severityRank(b.severity) - severityRank(a.severity));
64
+ }
65
+ function severityRank(s) {
66
+ return SEVERITY_ORDER.indexOf(s);
67
+ }
68
+ function severityOfOpen(report) {
69
+ const open = openFindings(report);
70
+ if (open.length === 0)
71
+ return null;
72
+ return SEVERITY_ORDER.reduce((worst, s) => {
73
+ if (worst)
74
+ return worst;
75
+ const n = open.filter((f) => f.severity === s).length;
76
+ return n > 0 ? s : null;
77
+ }, null);
78
+ }
79
+ /** A posture verdict derived from the worst open finding, never a number. */
80
+ function posture(report) {
81
+ const worst = severityOfOpen(report);
82
+ if (worst === 'CRITICAL') {
83
+ return {
84
+ word: 'RED',
85
+ line: 'Not safe to connect to real data. Do not show a customer as “working”.',
86
+ };
87
+ }
88
+ if (worst === 'HIGH') {
89
+ return {
90
+ word: 'YELLOW',
91
+ line: 'Blocked by unresolved HIGH findings — do not ship until they are closed.',
92
+ };
93
+ }
94
+ if (worst === 'MEDIUM' || worst === 'LOW') {
95
+ return {
96
+ word: 'PROVISIONAL',
97
+ line: 'Usable for development and internal use; production exposure is not yet justified.',
98
+ };
99
+ }
100
+ return { word: 'PASS', line: 'No open findings — clean at the inspected depth.' };
101
+ }
102
+ /* ------------------------------------------------------------- rendering -- */
103
+ export function renderNarrative(report, profile) {
104
+ const out = [];
105
+ const p = (line = '') => out.push(line);
106
+ renderCover(p, report, profile);
107
+ renderVerdict(p, report, profile);
108
+ renderFoundation(p, report);
109
+ renderFires(p, report);
110
+ renderCracks(p, report);
111
+ renderVoids(p, report);
112
+ renderHonestScore(p, report, profile);
113
+ renderRoadmap(p, report);
114
+ renderNotAudited(p);
115
+ renderMachineRecord(p, report);
116
+ return out.join('\n');
117
+ }
118
+ function renderCover(p, report, profile) {
119
+ p(`# 🔍 Audit: \`${report.target.name}\``);
120
+ p();
121
+ p(`*A narrative audit — a verdict, not a checklist. Every claim below is derived from the ` +
122
+ `same deterministic evidence as the machine record at the bottom.*`);
123
+ p();
124
+ p('| | |');
125
+ p('|---|---|');
126
+ p(`| **Path** | \`${report.target.path}\` |`);
127
+ p(`| **Commit** | \`${report.target.commit ? report.target.commit.slice(0, 8) : 'n/a'}\` (${report.target.ref ?? 'detached'}) |`);
128
+ p(`| **Date** | ${report.generatedAt} |`);
129
+ p(`| **Stack** | ${list([...report.detection.languages, ...report.detection.frameworks])} |`);
130
+ p(`| **Platform** | ${list(report.detection.platforms) || 'unclassified'} |`);
131
+ p(`| **Maturity** | ${profile.label} (detected \`${report.detection.maturity}\`) |`);
132
+ p(`| **Depth** | ${report.options.depth} · automation coverage ${fmt(report.score.automationCoverage)}% |`);
133
+ p();
134
+ }
135
+ function renderVerdict(p, report, _profile) {
136
+ const v = posture(report);
137
+ const stamp = v.word === 'RED' ? '🔴' : v.word === 'YELLOW' ? '🟠' : v.word === 'PASS' ? '🟢' : '🟡';
138
+ p('## Verdict');
139
+ p();
140
+ p(`**${stamp} ${v.word}** — ${v.line}`);
141
+ p();
142
+ p(`The raw score is **${report.score.overall}/100**, but a number is not a verdict. ` +
143
+ `A ${severityOfOpen(report) ?? 'clean'} worst-case finding does not average away. ` +
144
+ `Read the sections below; the score is reconciled honestly at the end.`);
145
+ p();
146
+ }
147
+ /** One sentence of system identity, assembled from detection + findings. */
148
+ function renderFoundation(p, report) {
149
+ const fnd = report.findings.filter((f) => f.ruleId.startsWith('FND-'));
150
+ const pillars = pillarSummary(fnd);
151
+ p('## The foundation — the gate');
152
+ p();
153
+ p(`*Every finding below is a symptom. This section is the disease. Foundation readiness: ` +
154
+ `**${pillars.ready} of ${pillars.total} pillars operational**.*`);
155
+ p();
156
+ p('| Pillar | Checks passing | State |');
157
+ p('|---|---:|---|');
158
+ for (const { id, label } of PILLARS) {
159
+ const s = pillars.byId.get(id);
160
+ if (!s) {
161
+ p(`| ${label} | — | not applicable / no checks loaded |`);
162
+ }
163
+ else if (s.passed === s.total) {
164
+ p(`| ${label} | ${s.passed}/${s.total} | ✅ ready |`);
165
+ }
166
+ else if (s.passed > 0) {
167
+ p(`| ${label} | ${s.passed}/${s.total} | 🟡 partial |`);
168
+ }
169
+ else {
170
+ p(`| ${label} | ${s.passed}/${s.total} | 🔴 missing |`);
171
+ }
172
+ }
173
+ p();
174
+ p('The causal chain, read top-to-bottom — each line produces the one below it:');
175
+ p();
176
+ p('```');
177
+ p(`unpinned environment → unreproducible build → no CI gate → no tests run`);
178
+ p(` → changes ship unverified → the critical findings below go undetected`);
179
+ p('```');
180
+ p();
181
+ p('The foundation rules (`FND-001`…`FND-014`) are deterministic checks; the intent they ' +
182
+ 'serve is recorded in `.usa/foundation.yaml` (see `usa foundation init`). ' +
183
+ 'A missing file here reads MISSING — absence of evidence, not evidence of safety.');
184
+ p();
185
+ }
186
+ function pillarSummary(fnd) {
187
+ const byId = new Map();
188
+ for (const f of fnd) {
189
+ const tag = (f.tags ?? []).find((t) => t.startsWith('pillar:'));
190
+ const id = tag ? tag.slice('pillar:'.length) : undefined;
191
+ if (!id)
192
+ continue;
193
+ const state = byId.get(id) ?? { passed: 0, total: 0 };
194
+ state.total++;
195
+ if (f.status === 'PASS')
196
+ state.passed++;
197
+ byId.set(id, state);
198
+ }
199
+ const ready = [...byId.values()].filter((s) => s.total > 0 && s.passed === s.total).length;
200
+ const total = [...byId.values()].filter((s) => s.total > 0).length;
201
+ return { ready, total, byId };
202
+ }
203
+ function renderFires(p, report) {
204
+ const critical = report.findings.filter((f) => f.severity === 'CRITICAL' &&
205
+ !f.suppressedReason &&
206
+ f.status !== 'PASS' &&
207
+ f.status !== 'NOT_APPLICABLE');
208
+ const confirmed = critical.filter((f) => OPEN.has(f.status));
209
+ const queued = critical.filter((f) => f.status === 'UNKNOWN');
210
+ p('## The fires — what will hurt you this week');
211
+ p();
212
+ if (confirmed.length === 0 && queued.length === 0) {
213
+ p('No CRITICAL findings.');
214
+ p();
215
+ return;
216
+ }
217
+ p(`These are not disconnected findings. They compose into one trust-boundary failure: ` +
218
+ `unvalidated input reaches a sensitive sink, and the errors come straight back out. ` +
219
+ `**${confirmed.length} confirmed CRITICAL**, ${queued.length} awaiting evidence.`);
220
+ p();
221
+ for (const f of [...confirmed, ...queued]) {
222
+ renderFindingBlock(p, f);
223
+ }
224
+ }
225
+ function renderFindingBlock(p, f) {
226
+ const status = f.status === 'UNKNOWN' ? '⚠️ unverified — in the judgement queue' : `confirmed · ${f.status}`;
227
+ p(`### \`${f.ruleId}\` — ${f.title}`);
228
+ p();
229
+ p(`**${severityIcon(f.severity)} ${f.severity}** · ${status}` +
230
+ (f.dampened ? ` · downgraded ${f.baseSeverity}→${f.severity}` : ''));
231
+ p();
232
+ if (f.locations.length > 0) {
233
+ p(`- **Where:** ${f.locations.slice(0, 3).map(fmtLoc).join(', ')}`);
234
+ }
235
+ p(`- **Why it matters:** ${f.message}`);
236
+ if (f.remediation)
237
+ p(`- **Fix:** ${f.remediation}`);
238
+ if (f.references?.length)
239
+ p(`- **Refs:** ${f.references.join(' · ')}`);
240
+ p();
241
+ }
242
+ function renderCracks(p, report) {
243
+ const downgraded = report.findings.filter((f) => f.dampened && !f.suppressedReason);
244
+ if (downgraded.length === 0) {
245
+ p('## Severity honesty');
246
+ p();
247
+ p('No maturity downgrades applied — severities are as declared.');
248
+ p();
249
+ return;
250
+ }
251
+ const safety = downgraded.filter((f) => SAFETY_CLASSES.has(f.ruleClass));
252
+ const process = downgraded.filter((f) => !SAFETY_CLASSES.has(f.ruleClass));
253
+ p('## Severity honesty — what the profile downgraded');
254
+ p();
255
+ p(`The ${`\`${report.detection.maturity}\``} profile dampens severity. The distinction that matters: ` +
256
+ `**maturity may defer process, never safety.** ${safety.length} safety findings were ` +
257
+ `downgraded — apply the original severity.`);
258
+ p();
259
+ if (safety.length > 0) {
260
+ p('**Safety findings downgraded (should not have been):**');
261
+ p();
262
+ for (const f of safety) {
263
+ p(`- \`${f.ruleId}\` ${f.title}: **${f.baseSeverity} → ${f.severity}** (${f.ruleClass})`);
264
+ }
265
+ p();
266
+ }
267
+ if (process.length > 0) {
268
+ p('**Process findings deferred (legitimate for this maturity):**');
269
+ p();
270
+ for (const f of process.slice(0, 12)) {
271
+ p(`- \`${f.ruleId}\` ${f.title}: ${f.baseSeverity} → ${f.severity} (${f.ruleClass})`);
272
+ }
273
+ if (process.length > 12)
274
+ p(`- …and ${process.length - 12} more`);
275
+ p();
276
+ }
277
+ }
278
+ function renderVoids(p, report) {
279
+ const missing = openFindings(report).filter((f) => f.status === 'MISSING');
280
+ p('## The voids — what is missing');
281
+ p();
282
+ if (missing.length === 0) {
283
+ p('Nothing required is absent.');
284
+ p();
285
+ return;
286
+ }
287
+ p(`**${missing.length} required items are absent.** They collapse into a handful of ` +
288
+ `underlying absences — each MISSING list below is one missing capability, not ` +
289
+ `${missing.length} separate problems.`);
290
+ p();
291
+ p('- **No reproducible environment** — no pinned runtime, no lockfile, no `.env.example`.');
292
+ p('- **No verification loop** — no test suite, no CI, no coverage config.');
293
+ p('- **No governance floor** — no CODEOWNERS, no ADRs, no branch-protection evidence.');
294
+ p('- **No delivery provenance** — no SBOM, no signing, no dependency-vulnerability scan.');
295
+ p();
296
+ p('The detailed machine list lives in the record below; these are the stories, not the rule IDs.');
297
+ p();
298
+ }
299
+ function renderHonestScore(p, report, profile) {
300
+ p('## The score, honestly');
301
+ p();
302
+ const thin = report.score.sections.filter((s) => s.score !== null && s.confidence < 40);
303
+ p(`Raw overall **${report.score.overall}/100** sits against the ${profile.label} ` +
304
+ `band ${profile.expectedBand[0]}–${profile.expectedBand[1]} — but the band is not the point. ` +
305
+ `A band that normalises a CRITICAL is doing the score's emotional work, and this report declines it.`);
306
+ p();
307
+ p('| Section | Reported | Confidence | Honest reading |');
308
+ p('|---|---:|---:|---|');
309
+ for (const s of report.score.sections) {
310
+ if (s.score === null) {
311
+ p(`| ${s.id} · ${s.title} | — | — | **NOT ASSESSED** — nothing was verified |`);
312
+ }
313
+ else if (s.confidence < 40) {
314
+ p(`| ${s.id} · ${s.title} | ~~${fmt(s.score)}/10~~ | ${fmt(s.confidence)}% | **INSUFFICIENT EVIDENCE** — treat as unknown |`);
315
+ }
316
+ else {
317
+ p(`| ${s.id} · ${s.title} | ${fmt(s.score)}/10 | ${fmt(s.confidence)}% | ${s.confidence >= 90 ? 'trustworthy' : s.confidence >= 60 ? 'directionally sound' : 'use with caution'} |`);
318
+ }
319
+ }
320
+ p();
321
+ p(`**${thin.length} section(s)** print a score on confidence below 40% in the checklist ` +
322
+ `renderer. Here they read **INSUFFICIENT EVIDENCE** — a 10/10 at 25% confidence is ` +
323
+ `${fmt((10 * 25) / 100)} of an unknown possible 10, not a perfect score.`);
324
+ p();
325
+ }
326
+ function renderRoadmap(p, report) {
327
+ const open = openFindings(report);
328
+ // Bucket on the *declared* severity, not the dampened one — the whole point of
329
+ // the "severity honesty" section is that the profile launders HIGH→MEDIUM. A
330
+ // downgraded HIGH is still a HIGH for sequencing, so "next week" does not print
331
+ // an empty bucket while `eval()` and the lockfile sit hidden under MEDIUM.
332
+ const base = (f) => f.baseSeverity;
333
+ const buckets = [
334
+ {
335
+ title: 'Today — stop the bleeding',
336
+ blurb: 'Close CRITICAL and security-HIGH before anything else.',
337
+ items: open.filter((f) => base(f) === 'CRITICAL' || (base(f) === 'HIGH' && f.ruleClass === 'security')),
338
+ },
339
+ {
340
+ title: 'This week — make it reproducible',
341
+ blurb: 'Foundation + the remaining declared-HIGH findings (some are shown as MEDIUM below after downgrade).',
342
+ items: open.filter((f) => base(f) === 'HIGH' && !(base(f) === 'HIGH' && f.ruleClass === 'security')),
343
+ },
344
+ {
345
+ title: 'This month — the safety net',
346
+ blurb: 'Declared-MEDIUM findings: migrations, transactions, validation, reliability.',
347
+ items: open.filter((f) => base(f) === 'MEDIUM'),
348
+ },
349
+ {
350
+ title: 'Deferred — after the floor exists',
351
+ blurb: 'Declared-LOW and FUTURE. Explicitly not now; re-read after the next audit.',
352
+ items: open.filter((f) => base(f) === 'LOW' || base(f) === 'FUTURE'),
353
+ },
354
+ ];
355
+ for (const b of buckets) {
356
+ p(`### ${b.title}`);
357
+ p();
358
+ p(`*${b.blurb}*`);
359
+ p();
360
+ if (b.items.length === 0) {
361
+ p('Nothing here.');
362
+ }
363
+ else {
364
+ for (const f of b.items.slice(0, 15)) {
365
+ const shown = severityIcon(f.baseSeverity);
366
+ const downgraded = f.dampened ? ` ${f.baseSeverity}→${f.severity}` : '';
367
+ p(`- ${shown} \`${f.ruleId}\` ${f.title}${downgraded}${f.remediation ? ` → ${f.remediation}` : ''}`);
368
+ }
369
+ if (b.items.length > 15)
370
+ p(`- …and ${b.items.length - 15} more`);
371
+ }
372
+ p();
373
+ }
374
+ }
375
+ function renderNotAudited(p) {
376
+ p('## What this audit did not check');
377
+ p();
378
+ p("A fixed, honest account of the method's limits — not a claim about the project:");
379
+ p();
380
+ for (const { what, why } of NOT_AUDITED) {
381
+ p(`- **${what}** — ${why}.`);
382
+ }
383
+ p();
384
+ }
385
+ function renderMachineRecord(p, report) {
386
+ p('## Machine record (reproducible appendix)');
387
+ p();
388
+ p('The deterministic substrate this narrative was derived from. `usa diff` reads it.');
389
+ p();
390
+ p(TRAILER_BEGIN);
391
+ p('```yaml');
392
+ p(trailer(report));
393
+ p('```');
394
+ p(TRAILER_END);
395
+ p();
396
+ }
397
+ /* --------------------------------------------------------------- helpers -- */
398
+ function severityIcon(s) {
399
+ return { CRITICAL: '🔴', HIGH: '🟠', MEDIUM: '🟡', LOW: '🟢', FUTURE: '🔵' }[s];
400
+ }
401
+ function list(items) {
402
+ const uniq = [...new Set(items.filter(Boolean))];
403
+ if (uniq.length === 0)
404
+ return '';
405
+ if (uniq.length <= 4)
406
+ return uniq.join(', ');
407
+ return `${uniq.slice(0, 4).join(', ')} +${uniq.length - 4}`;
408
+ }
409
+ function fmt(n) {
410
+ return Number.isInteger(n) ? String(n) : n.toFixed(1);
411
+ }
412
+ function fmtLoc(l) {
413
+ return `\`${l.file}${typeof l.line === 'number' ? `:${l.line}` : ''}\``;
414
+ }
415
+ //# sourceMappingURL=narrative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"narrative.js","sourceRoot":"","sources":["../../src/report/narrative.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xenos1996/usa",
3
- "version": "2.5.0",
3
+ "version": "2.7.0",
4
4
  "description": "Universal Software Auditor — an open-source, self-adapting audit framework for any project, any stack, any stage",
5
5
  "license": "MIT",
6
6
  "type": "module",