@xenos1996/usa 2.26.0 → 2.27.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.
Files changed (40) hide show
  1. package/dist/engine/audit-config.d.ts +66 -0
  2. package/dist/engine/audit-config.d.ts.map +1 -0
  3. package/dist/engine/audit-config.js +148 -0
  4. package/dist/engine/audit-config.js.map +1 -0
  5. package/dist/engine/audit-types.d.ts +44 -0
  6. package/dist/engine/audit-types.d.ts.map +1 -0
  7. package/dist/engine/audit-types.js +2 -0
  8. package/dist/engine/audit-types.js.map +1 -0
  9. package/dist/engine/audit-warnings.d.ts +56 -0
  10. package/dist/engine/audit-warnings.d.ts.map +1 -0
  11. package/dist/engine/audit-warnings.js +116 -0
  12. package/dist/engine/audit-warnings.js.map +1 -0
  13. package/dist/engine/audit.d.ts +14 -38
  14. package/dist/engine/audit.d.ts.map +1 -1
  15. package/dist/engine/audit.js +9 -500
  16. package/dist/engine/audit.js.map +1 -1
  17. package/dist/engine/evaluate-packs.d.ts +37 -0
  18. package/dist/engine/evaluate-packs.d.ts.map +1 -0
  19. package/dist/engine/evaluate-packs.js +144 -0
  20. package/dist/engine/evaluate-packs.js.map +1 -0
  21. package/dist/engine/invariants.d.ts +8 -0
  22. package/dist/engine/invariants.d.ts.map +1 -1
  23. package/dist/engine/invariants.js +11 -0
  24. package/dist/engine/invariants.js.map +1 -1
  25. package/dist/engine/pack-selection.d.ts +21 -0
  26. package/dist/engine/pack-selection.d.ts.map +1 -0
  27. package/dist/engine/pack-selection.js +63 -0
  28. package/dist/engine/pack-selection.js.map +1 -0
  29. package/dist/engine/report-build.d.ts +22 -0
  30. package/dist/engine/report-build.d.ts.map +1 -0
  31. package/dist/engine/report-build.js +67 -0
  32. package/dist/engine/report-build.js.map +1 -0
  33. package/dist/foundation/interview.d.ts.map +1 -1
  34. package/dist/foundation/interview.js +16 -5
  35. package/dist/foundation/interview.js.map +1 -1
  36. package/package.json +17 -12
  37. package/rules/core/code-quality.yaml +12 -2
  38. package/rules/core/provenance-attestation.yaml +5 -0
  39. package/rules/core/security.yaml +1 -1
  40. package/rules/core/testing-assurance.yaml +19 -4
@@ -1,35 +1,17 @@
1
- import path from 'node:path';
2
- import { SEVERITY_LADDER } from './loader.js';
3
- import { MAX_FILE_BYTES, MAX_FILES, Project } from '../util/project.js';
1
+ import { Project } from '../util/project.js';
4
2
  import { detect, loadDetectorFile } from '../detect/index.js';
5
3
  import { loadRulePacks, applyRuleOverrides } from './loader.js';
6
- import { applySuppressionToFinding, evaluateRule, packApplies, ruleApplies, } from './evaluate.js';
7
- import { evaluateInvariant, invariantLocations } from './invariants.js';
8
- import { ruleAutomatability } from './automatability.js';
9
- import { buildSuppressionIndex, describeSuppression, unusedSuppressions } from './suppression.js';
10
- import { attachReviews, buildReviewIndex, describeReview, resolveActiveReviews, reviewOverdueDays, } from './review.js';
11
- import { loadFoundationFacts, loadFoundationStage } from '../foundation/loader.js';
12
- import { fingerprintRulesDir } from './ruleset.js';
4
+ import { attachReviews, buildReviewIndex, resolveActiveReviews } from './review.js';
5
+ import { buildSuppressionIndex } from './suppression.js';
13
6
  import { loadSections } from './sections.js';
14
- import { loadProfiles, dampen } from './maturity.js';
7
+ import { loadProfiles } from './maturity.js';
15
8
  import { loadConfig } from '../config.js';
16
- import { docFindings, runDocAudit } from './docs-audit.js';
17
- import { loadDocTaxonomy } from './docs-taxonomy.js';
18
- import fs from 'node:fs';
19
- import { fileURLToPath } from 'node:url';
20
- /** `rules/`, resolved relative to the installed package (works from src and dist). */
21
- const DEFAULT_RULES_DIR = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..', 'rules');
22
- /** Version of this build, read from package.json so it never drifts. */
23
- const DEFAULT_VERSION = (() => {
24
- try {
25
- const pkg = JSON.parse(fs.readFileSync(path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..', 'package.json'), 'utf8'));
26
- return pkg.version ?? '0.0.0';
27
- }
28
- catch {
29
- return '0.0.0';
30
- }
31
- })();
32
9
  import { score } from './score.js';
10
+ import { collectRuleSettings, normalizeAuditOptions, resolveLimits, resolveMaturity, resolvePackSets, resolveSuppressions, selectSections, } from './audit-config.js';
11
+ import { mergeExtraPacks, resolvePackFacts, selectInitialPacks } from './pack-selection.js';
12
+ import { appendHistoryWarnings, appendIndexWarnings, appendReviewWarnings, appendUnusedSuppressionWarnings, assertFoundationFacts, assertStageAspiration, } from './audit-warnings.js';
13
+ import { appendDocUniverseFindings, evaluatePacks } from './evaluate-packs.js';
14
+ import { buildReport } from './report-build.js';
33
15
  export function runAudit(options) {
34
16
  // The programmatic entry point must be usable with nothing but a target, so
35
17
  // every knob the CLI exposes gets a sane default here rather than a crash.
@@ -109,477 +91,4 @@ export function runAudit(options) {
109
91
  const report = buildReport(opts, git, detection, facts, maturity, card, evaluated, selection.packsLoaded, selection.packsSkipped);
110
92
  return { report, warnings, profile };
111
93
  }
112
- /**
113
- * Merges an additional capability set into the loaded packs for a single run.
114
- * A pack id already present in the base registry wins (the registry is the
115
- * source of truth); duplicate ids from `extraPacks` are dropped silently so a
116
- * released capability cannot shadow a shipped one.
117
- */
118
- function mergeExtraPacks(packs, extra) {
119
- if (!extra || extra.length === 0)
120
- return;
121
- const seen = new Set(packs.map((p) => p.id));
122
- for (const p of extra) {
123
- if (!seen.has(p.id)) {
124
- seen.add(p.id);
125
- packs.push(p);
126
- }
127
- }
128
- }
129
- function normalizeAuditOptions(options, config) {
130
- return {
131
- rulesDir: options.rulesDir ?? DEFAULT_RULES_DIR,
132
- depth: options.depth ?? 'standard',
133
- profile: options.profile ?? 'auto',
134
- allowCommands: options.allowCommands ?? false,
135
- usaVersion: options.usaVersion ?? DEFAULT_VERSION,
136
- target: options.target,
137
- config,
138
- };
139
- }
140
- /**
141
- * Expired (or undated) waivers fail closed: an `until` date in the past — or
142
- * one that cannot be parsed — excludes the suppression and raises a warning,
143
- * so an audit never silently honours dead risk acceptances.
144
- */
145
- function resolveSuppressions(suppressions, warnings) {
146
- const active = [];
147
- for (const s of suppressions ?? []) {
148
- if (!s.rule)
149
- continue;
150
- if (s.until && isSuppressionExpired(s.rule, s.until, warnings))
151
- continue;
152
- active.push(s);
153
- }
154
- return active;
155
- }
156
- function isSuppressionExpired(rule, until, warnings) {
157
- const t = Date.parse(until);
158
- if (Number.isNaN(t)) {
159
- warnings.push(`suppression for ${rule} has an unparseable "until" date ("${until}") — waiver ignored`);
160
- return true;
161
- }
162
- if (t < Date.now()) {
163
- warnings.push(`suppression for ${rule} expired on ${until} — treating as an active finding`);
164
- return true;
165
- }
166
- return false;
167
- }
168
- const MATURITIES = ['prototype', 'mvp', 'beta', 'production', 'legacy'];
169
- /**
170
- * CLI --profile wins; otherwise a valid config `maturity` pins the bar;
171
- * otherwise auto-detection stands. Invalid config values warn and fall back.
172
- */
173
- function resolveMaturity(cliProfile, configMaturity, detected, warnings) {
174
- if (cliProfile !== 'auto')
175
- return cliProfile;
176
- if (configMaturity === undefined)
177
- return detected;
178
- if (MATURITIES.includes(configMaturity))
179
- return configMaturity;
180
- warnings.push(`.usa.yaml: invalid maturity "${String(configMaturity)}" — using auto-detected ${detected}`);
181
- return detected;
182
- }
183
- /** Restrict scoring and reporting to the configured sections, if any. */
184
- function selectSections(all, wanted, warnings) {
185
- if (!wanted || wanted.length === 0)
186
- return all;
187
- const known = new Set(all.map((s) => s.id));
188
- for (const id of wanted) {
189
- if (!known.has(id))
190
- warnings.push(`.usa.yaml: unknown section "${id}" in sections — ignored`);
191
- }
192
- return all.filter((s) => wanted.includes(s.id));
193
- }
194
- /**
195
- * A waiver that matched nothing is dead weight — usually a rule that no longer
196
- * fires there, a renamed file, or a passing rule. Report it so suppressions
197
- * decay instead of accumulating (ADR-0022, the ESLint model).
198
- */
199
- function appendUnusedSuppressionWarnings(suppressions, warnings) {
200
- for (const s of unusedSuppressions(suppressions)) {
201
- warnings.push(`suppression for ${describeSuppression(s)} matched no finding — remove it or fix the target`);
202
- }
203
- }
204
- /**
205
- * Rank for the declared-vs-detected check (ADR-0041). Legacy is unranked:
206
- * a retiring system plays a different game and gets no aspiration warning.
207
- */
208
- const STAGE_RANK = { prototype: 0, mvp: 1, beta: 2, production: 3 };
209
- /**
210
- * ADR-0041: declared stage above detected maturity is aspiration beyond
211
- * evidence — one loud line, zero moved bars. Severity keeps following
212
- * detected maturity (never the declaration), so claiming `prototype` buys
213
- * no leniency and claiming `production` buys no strictness.
214
- */
215
- function assertStageAspiration(target, detected, warnings) {
216
- const declared = loadFoundationStage(target);
217
- if (declared === undefined)
218
- return;
219
- const want = STAGE_RANK[declared];
220
- const have = STAGE_RANK[detected];
221
- if (want === undefined || have === undefined || want <= have)
222
- return;
223
- warnings.push(`declared stage ${declared} exceeds detected maturity ${detected} — grading follows detected; ` +
224
- `pass --profile ${declared} to be held to the declared bar explicitly`);
225
- }
226
- /**
227
- * Declared intent becomes detection facts. The loader throws on a broken
228
- * file (fail closed); the audit converts that into a warning and proceeds
229
- * without intent facts — a malformed promise must be loud, but it must not
230
- * brick the audit it was meant to guide.
231
- */
232
- function assertFoundationFacts(target, facts, warnings) {
233
- try {
234
- for (const flag of loadFoundationFacts(target))
235
- facts.flags.add(flag);
236
- }
237
- catch (err) {
238
- warnings.push(`foundation intent ignored: ${err.message}`);
239
- }
240
- }
241
- /**
242
- * A review that matched nothing is dead provenance — the finding was fixed, the
243
- * rule renamed, the file moved. A review whose `until` has passed is a decision
244
- * nobody has revisited. Both are reported so the ledger decays instead of
245
- * accumulating (ADR-0023, the ESLint model applied to attention).
246
- */
247
- function appendReviewWarnings(reviews, warnings) {
248
- const nowMs = Date.now();
249
- for (const entries of reviews.values()) {
250
- for (const entry of entries) {
251
- if (!entry.used) {
252
- warnings.push(`review for ${describeReview(entry.review)} matched no finding — remove it or re-target it`);
253
- continue;
254
- }
255
- const overdue = reviewOverdueDays(entry.review, nowMs);
256
- if (overdue !== null) {
257
- warnings.push(`review for ${describeReview(entry.review)} was due ${entry.review.until} — ` +
258
- `overdue by ${overdue} day(s); re-review`);
259
- }
260
- }
261
- }
262
- }
263
- /**
264
- * Scale honesty: a truncated index or skipped oversize files means PASS
265
- * verdicts may rest on unseen files. Loud warning, never silent absorption.
266
- */
267
- function appendIndexWarnings(project, warnings) {
268
- if (project.truncated) {
269
- warnings.push(`index truncated at ${MAX_FILES} files — the tree is bigger than the audit can see; ` +
270
- 'treat PASS verdicts as partial and split the target (e.g. per-package audits)');
271
- }
272
- if (project.skippedLarge > 0) {
273
- warnings.push(`${project.skippedLarge} file(s) skipped for exceeding ${MAX_FILE_BYTES} bytes — ` +
274
- 'content checks could not see them');
275
- }
276
- if (project.skippedSymlinks > 0) {
277
- warnings.push(`${project.skippedSymlinks} symlink(s) skipped without traversal — ` +
278
- 'linked source is invisible to every check; materialize it to audit it');
279
- }
280
- }
281
- /**
282
- * CLI flags win over config file; both are validated with warnings.
283
- * Invalid values fall back to engine defaults (never zero, never infinite).
284
- */
285
- function resolveLimits(options, config, warnings) {
286
- return {
287
- maxFiles: validatedLimit(options.maxFiles ?? config.limits?.max_files, 'limits.max_files / --max-files', warnings),
288
- maxBytes: validatedLimit(options.maxBytes ?? config.limits?.max_bytes, 'limits.max_bytes / --max-bytes', warnings),
289
- };
290
- }
291
- function validatedLimit(v, name, warnings) {
292
- if (v === undefined)
293
- return undefined;
294
- if (typeof v === 'number' && Number.isFinite(v) && v > 0)
295
- return Math.floor(v);
296
- warnings.push(`invalid ${name} "${String(v)}" (must be a positive number) — using defaults`);
297
- return undefined;
298
- }
299
- /**
300
- * History-thin targets blind the history-dependent rules (REPO-003 scans
301
- * `git log`, REL-002 needs tags, maturity signals need commits). The
302
- * negation in REPO-003 even turns git errors into PASS — true only in the
303
- * vacuous sense. Say so loudly instead of scoring blind confidence.
304
- */
305
- function appendHistoryWarnings(git, warnings) {
306
- if (!git.isRepo) {
307
- warnings.push('not a git repository — history and provenance checks cannot verify anything; ' +
308
- 'treat history-dependent findings as vacuous');
309
- return;
310
- }
311
- if (git.commits <= 1) {
312
- warnings.push('single-commit history (shallow clone?) — maturity signals, tag checks, and ' +
313
- 'history scans are under-verified; prefer a full clone for release-grade audits');
314
- }
315
- }
316
- function resolvePackSets(options, config) {
317
- return {
318
- include: new Set(options.includePacks ?? config.include ?? []),
319
- exclude: new Set(options.excludePacks ?? config.exclude ?? []),
320
- };
321
- }
322
- function collectRuleSettings(config, warnings) {
323
- const disabled = new Set();
324
- const overrides = {};
325
- for (const [id, o] of Object.entries(config.rules ?? {})) {
326
- if (o.disabled)
327
- disabled.add(id);
328
- const severity = validateOverrideSeverity(id, o.severity, warnings);
329
- const weight = validateOverrideWeight(id, o.weight, warnings);
330
- if (severity !== undefined || weight !== undefined) {
331
- overrides[id] = { severity, weight };
332
- }
333
- }
334
- return { disabled, overrides };
335
- }
336
- /**
337
- * Config overrides flow straight into scoring arithmetic — an invalid severity
338
- * yields NaN totals and a negative weight yields scores outside 0–100.
339
- * Reject loudly rather than corrupt the report.
340
- */
341
- function validateOverrideSeverity(id, v, warnings) {
342
- if (v === undefined)
343
- return undefined;
344
- if (SEVERITY_LADDER.includes(String(v))) {
345
- return String(v);
346
- }
347
- warnings.push(`rules.${id}: invalid severity "${String(v)}" — override ignored`);
348
- return undefined;
349
- }
350
- function validateOverrideWeight(id, v, warnings) {
351
- if (v === undefined)
352
- return undefined;
353
- if (typeof v === 'number' && Number.isFinite(v) && v >= 0)
354
- return v;
355
- warnings.push(`rules.${id}: invalid weight "${String(v)}" (must be a finite number ≥ 0) — override ignored`);
356
- return undefined;
357
- }
358
- function selectInitialPacks(packs, facts, include, exclude) {
359
- const selection = { activePacks: [], packsLoaded: [], packsSkipped: [] };
360
- selection.activePacks = packs.filter((p) => selectPack(p, facts, include, exclude, selection));
361
- return selection;
362
- }
363
- function selectPack(pack, facts, include, exclude, selection) {
364
- if (exclude.has(pack.id)) {
365
- selection.packsSkipped.push(pack.id);
366
- return false;
367
- }
368
- if (include.has(pack.id)) {
369
- selection.packsLoaded.push(pack.id);
370
- pack.provides?.forEach((f) => facts.flags.add(f));
371
- return true;
372
- }
373
- if (!packApplies(pack, facts)) {
374
- selection.packsSkipped.push(pack.id);
375
- return false;
376
- }
377
- selection.packsLoaded.push(pack.id);
378
- pack.provides?.forEach((f) => facts.flags.add(f));
379
- return true;
380
- }
381
- function resolvePackFacts(packs, facts, include, exclude, selection) {
382
- for (let pass = 0; pass < 3; pass++) {
383
- let changed = false;
384
- for (const p of packs) {
385
- if (selection.packsLoaded.includes(p.id) || exclude.has(p.id) || include.has(p.id))
386
- continue;
387
- if (!packApplies(p, facts))
388
- continue;
389
- selection.packsLoaded.push(p.id);
390
- p.provides?.forEach((f) => facts.flags.add(f));
391
- selection.activePacks.push(p);
392
- changed = true;
393
- }
394
- if (!changed)
395
- break;
396
- }
397
- }
398
- function evaluatePacks(activePacks, facts, depth, include, ctx, profile) {
399
- const evaluated = [];
400
- const invariants = [];
401
- for (const pack of activePacks) {
402
- for (const rule of pack.rules) {
403
- if (!ruleApplies(rule, facts, depth, include.has(pack.id)))
404
- continue;
405
- // Invariants read conclusions, not files: second pass, after every
406
- // file rule has reported. Collect now, evaluate below.
407
- if (rule.check.kind === 'invariant') {
408
- invariants.push(rule);
409
- continue;
410
- }
411
- evaluated.push(scoreFinding(rule, ctx, profile));
412
- }
413
- }
414
- for (const rule of invariants) {
415
- evaluated.push(scoreInvariant(rule, ctx, profile, evaluated));
416
- }
417
- return evaluated;
418
- }
419
- /**
420
- * Appends the documentation-universe findings to the evaluated set. The
421
- * findings come from `docFindings` — the exact function the standalone
422
- * `usa docs audit` report uses — with the main audit's maturity profile for
423
- * dampening and the already-evaluated rule ids for alias suppression (an
424
- * absence an existing rule already reports, e.g. DOC-006 vs the getting
425
- * started artifact, is scored once, not twice).
426
- */
427
- function appendDocUniverseFindings(evaluated, ctx) {
428
- const { taxonomy, warnings: taxWarnings } = loadDocTaxonomy(ctx.rulesDir);
429
- ctx.warnings.push(...taxWarnings);
430
- if (!taxonomy)
431
- return; // already warned: universe unavailable, audit continues
432
- const result = runDocAudit({
433
- project: ctx.project,
434
- facts: ctx.facts,
435
- taxonomy,
436
- maturity: ctx.maturity,
437
- usaVersion: ctx.usaVersion,
438
- target: ctx.target,
439
- commit: ctx.git.commit,
440
- gitTags: ctx.project.gitTags(),
441
- });
442
- const knownRules = new Set(evaluated.map((e) => e.finding.ruleId));
443
- for (const f of docFindings(result, {
444
- suppressAliasedRules: knownRules,
445
- dampen: (base) => dampen(base, 'documentation', ctx.profile),
446
- })) {
447
- evaluated.push({ rule: syntheticDocRule(f), finding: f });
448
- }
449
- }
450
- /** DOCU findings have no YAML rule; the minimal Rule shape keeps scoring intact. */
451
- function syntheticDocRule(f) {
452
- return {
453
- id: f.ruleId,
454
- title: f.title,
455
- section: f.section,
456
- sectionTitle: f.sectionTitle,
457
- severity: f.baseSeverity,
458
- ruleClass: f.ruleClass,
459
- check: { kind: 'info' },
460
- tags: f.tags,
461
- };
462
- }
463
- function scoreInvariant(rule, ctx, profile, evaluated) {
464
- const check = rule.check;
465
- if (check.kind !== 'invariant') {
466
- throw new Error(`scoreInvariant called on non-invariant rule ${rule.id}`);
467
- }
468
- const byId = new Map(evaluated.map((e) => [e.finding.ruleId, e.finding.status]));
469
- const findings = evaluated.map((e) => e.finding);
470
- const outcome = evaluateInvariant(check.when, check.assert, byId);
471
- const base = {
472
- ruleId: rule.id,
473
- title: rule.title,
474
- section: rule.section,
475
- sectionTitle: rule.sectionTitle ?? rule.section,
476
- baseSeverity: rule.severity,
477
- ruleClass: rule.ruleClass,
478
- why: rule.why,
479
- evidenceHint: rule.evidence,
480
- remediation: rule.remediation,
481
- references: rule.references,
482
- automatability: ruleAutomatability(rule),
483
- tags: rule.tags,
484
- };
485
- if (!outcome.applicable) {
486
- return {
487
- rule,
488
- finding: {
489
- ...base,
490
- status: 'NOT_APPLICABLE',
491
- severity: rule.severity,
492
- dampened: false,
493
- message: `Invariant inapplicable — ${outcome.detail}.`,
494
- locations: [],
495
- },
496
- };
497
- }
498
- const finding = {
499
- ...base,
500
- status: outcome.passed ? 'PASS' : 'FAIL',
501
- severity: rule.severity,
502
- dampened: false,
503
- message: outcome.passed
504
- ? `Combination holds and ${check.assert.rule} agrees — ${outcome.detail}.`
505
- : `Dangerous combination: ${outcome.detail}.`,
506
- locations: outcome.passed ? [] : invariantLocations(check.when, findings),
507
- };
508
- if (!outcome.passed) {
509
- applySuppressionToFinding(ctx.suppressions, rule.id, finding);
510
- if (finding.status !== 'PASS') {
511
- const { severity, dampened } = dampen(rule.severity, rule.ruleClass, profile);
512
- finding.severity = severity;
513
- finding.dampened = dampened;
514
- }
515
- }
516
- return { rule, finding };
517
- }
518
- function scoreFinding(rule, ctx, profile) {
519
- const finding = evaluateRule(rule, ctx);
520
- if (finding.status === 'PASS' || finding.status === 'NOT_APPLICABLE') {
521
- return { rule, finding };
522
- }
523
- const { severity, dampened } = dampen(rule.severity, rule.ruleClass, profile);
524
- finding.severity = severity;
525
- finding.dampened = dampened;
526
- return { rule, finding };
527
- }
528
- function buildReport(opts, git, detection, facts, maturity, card, evaluated, packsLoaded, packsSkipped) {
529
- return {
530
- schema: 'usa-report-v1',
531
- generatedAt: new Date().toISOString(),
532
- usaVersion: opts.usaVersion,
533
- ruleset: fingerprintRulesDir(opts.rulesDir),
534
- target: {
535
- path: path.resolve(opts.target),
536
- name: path.basename(path.resolve(opts.target)) || opts.target,
537
- commit: git.commit,
538
- ref: git.ref,
539
- repoUrl: git.repoUrl,
540
- },
541
- detection: {
542
- maturity,
543
- maturitySignals: detection.maturitySignals,
544
- projectTypes: pick(facts, 'project'),
545
- platforms: pick(facts, 'platform'),
546
- languages: pick(facts, 'lang'),
547
- frameworks: pick(facts, 'fw'),
548
- packageManagers: pick(facts, 'pm'),
549
- databases: pick(facts, 'db'),
550
- flags: [...facts.flags].filter((f) => f.startsWith('has:')).sort(),
551
- metrics: facts.metrics,
552
- },
553
- options: {
554
- depth: opts.depth,
555
- profile: opts.profile,
556
- rulesDir: opts.rulesDir,
557
- packsLoaded,
558
- packsSkipped,
559
- },
560
- score: card,
561
- findings: evaluated
562
- .map((e) => e.finding)
563
- .filter((f) => f.status !== 'NOT_APPLICABLE')
564
- .sort(bySeverityThenSection),
565
- };
566
- }
567
- function pick(facts, prefix) {
568
- const out = [];
569
- for (const f of facts.flags) {
570
- if (f.startsWith(`${prefix}:`))
571
- out.push(f.slice(prefix.length + 1));
572
- }
573
- return out.sort();
574
- }
575
- const ORDER = { CRITICAL: 0, HIGH: 1, MEDIUM: 2, LOW: 3, FUTURE: 4 };
576
- function bySeverityThenSection(a, b) {
577
- const sa = ORDER[a.severity] ?? 9;
578
- const sb = ORDER[b.severity] ?? 9;
579
- if (sa !== sb)
580
- return sa - sb;
581
- if (a.section !== b.section)
582
- return a.section.localeCompare(b.section, undefined, { numeric: true });
583
- return a.ruleId.localeCompare(b.ruleId);
584
- }
585
94
  //# sourceMappingURL=audit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/engine/audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/engine/audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { Depth, Facts, Finding, Maturity, Rule, RulePack } from '../types.js';
2
+ import { type EvalContext } from './evaluate.js';
3
+ import { type MaturityProfile } from './maturity.js';
4
+ import type { ScoredRule } from './score.js';
5
+ import type { Project } from '../util/project.js';
6
+ /**
7
+ * Scoring a pack set into findings.
8
+ *
9
+ * Two passes: file rules first, then invariants over the conclusions those
10
+ * rules reached. Invariants cannot run in the first pass — they have nothing
11
+ * to read until every file rule has reported.
12
+ */
13
+ export declare function evaluatePacks(activePacks: RulePack[], facts: Facts, depth: Depth, include: Set<string>, ctx: EvalContext, profile: MaturityProfile): ScoredRule[];
14
+ /**
15
+ * Appends the documentation-universe findings to the evaluated set. The
16
+ * findings come from `docFindings` — the exact function the standalone
17
+ * `usa docs audit` report uses — with the main audit's maturity profile for
18
+ * dampening and the already-evaluated rule ids for alias suppression (an
19
+ * absence an existing rule already reports, e.g. DOC-006 vs the getting
20
+ * started artifact, is scored once, not twice).
21
+ */
22
+ export declare function appendDocUniverseFindings(evaluated: ScoredRule[], ctx: {
23
+ project: Project;
24
+ facts: Facts;
25
+ rulesDir: string;
26
+ profile: MaturityProfile;
27
+ maturity: Maturity;
28
+ git: ReturnType<Project['gitInfo']>;
29
+ warnings: string[];
30
+ usaVersion: string;
31
+ target: string;
32
+ }): void;
33
+ /** DOCU findings have no YAML rule; the minimal Rule shape keeps scoring intact. */
34
+ export declare function syntheticDocRule(f: Finding): Rule;
35
+ export declare function scoreInvariant(rule: RulePack['rules'][number], ctx: EvalContext, profile: MaturityProfile, evaluated: ScoredRule[]): ScoredRule;
36
+ export declare function scoreFinding(rule: RulePack['rules'][number], ctx: EvalContext, profile: MaturityProfile): ScoredRule;
37
+ //# sourceMappingURL=evaluate-packs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate-packs.d.ts","sourceRoot":"","sources":["../../src/engine/evaluate-packs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAU,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,QAAQ,EAAE,EACvB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,eAAe,GACvB,UAAU,EAAE,CAmBd;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,UAAU,EAAE,EACvB,GAAG,EAAE;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,GACA,IAAI,CAqBN;AAED,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAWjD;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAC/B,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,UAAU,EAAE,GACtB,UAAU,CAsDZ;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAC/B,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,eAAe,GACvB,UAAU,CASZ"}